diff --git a/.cargo/config.toml b/.cargo/config.toml index caee770..28ded82 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -2,4 +2,4 @@ default = "gitea" [registries.gitea] -index = "sparse+https://git.tcraft.me/api/packages/neo/cargo" # sparse index +index = "sparse+https://git.tcraft.me/api/packages/neo/cargo/" # sparse index diff --git a/Cargo.lock b/Cargo.lock index 0ad4e11..74240ae 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -59,6 +59,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "301b56658598e48f3648647ac6fc887be7e7108eddfa4e9b63fcf3ec58c0cadf" dependencies = [ "clap_builder", + "clap_derive", ] [[package]] @@ -73,6 +74,18 @@ dependencies = [ "strsim", ] +[[package]] +name = "clap_derive" +version = "4.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d012d2b9d65aca7f18f4d9878a045bc17899bba951561ba5ec3c2ba1eed9a061" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "clap_lex" version = "1.1.0" @@ -85,6 +98,12 @@ version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + [[package]] name = "is_terminal_polyfill" version = "1.70.2" @@ -103,6 +122,24 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" +[[package]] +name = "proc-macro2" +version = "1.0.107" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001" +dependencies = [ + "proc-macro2", +] + [[package]] name = "ruport" version = "0.1.0" @@ -117,6 +154,23 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" +[[package]] +name = "syn" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "unicode-ident" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + [[package]] name = "utf8parse" version = "0.2.2" diff --git a/Cargo.toml b/Cargo.toml index 504f1d2..3a4692b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -98,7 +98,7 @@ path = "src/regendworld.rs" required-features = ["drop-in"] [dependencies] -clap = { version="4.6.5", features=["derive"] } +clap = { version="4.6", features=["derive"] } log = "0.4.33" [profile.release] diff --git a/libportage/lib.rs b/libportage/lib.rs index e69de29..73cfcea 100644 --- a/libportage/lib.rs +++ b/libportage/lib.rs @@ -0,0 +1,30 @@ +use std::{env, path::{Path,PathBuf}}; +use std::io::Result; + +fn getwcd() -> Result { + let cwd = match env::current_dir() { + Ok(p) => p, + Err(_) => { + env::set_current_dir("/")?; + PathBuf::from("/") + } + }; + + Ok(cwd) +} + +fn abssymlink(symlink: &Path, target: Option) -> Result { + let mut mylink = if target.is_some() { + target.unwrap() + } else { + std::fs::read_link(symlink)? + }; + if !mylink.has_root() { + let mydir = mylink.parent().unwrap(); + let link_name = mylink.clone(); + mylink = Path::new(mydir).join(link_name); + } + + Ok(mylink) +} + diff --git a/ruport-0.1.ebuild b/ruport-0.1.ebuild new file mode 100644 index 0000000..3747d0c --- /dev/null +++ b/ruport-0.1.ebuild @@ -0,0 +1,52 @@ +EAPI=8 + +DESCRIPTION="Rust port of the portage package manager system" +HOMEPAGE="https://tcraft.me/?topic=ruport" +SRC_URI="https://git.tcraft.me/neo/ruport.git" + +IUSE="drop-in" + +RUPORT_DROP-IN_BINS=( + target/release/ebuild + target/release/egencache + target/release/emerge + target/release/emerge-webrsync + target/release/emirrordist + target/release/glsa-check + target/release/gpkg-sign + target/release/portageq + target/release/quickpkg +) +RUPORT_DROP-IN_SBINS=( + target/release/archive-conf + target/release/dispatch-conf + target/release/emaint + target/release/env-update + target/release/etc-update + target/release/fixpackages + target/release/regendworld +) + +src_compile() { + local cargo_flags="" + + if use drop-in ; then + cargo_flags="--features=drop-in" + fi + + cargo build --release ${cargo_flags} +} + +src_install() { + dobin target/release/ruport + + if use drop-in ; then + for pkg in RUPORT_DROP-IN_BINS ; do + dobin $pkg + done + + for pkg in RUPORT_DROP-IN_SBINS ; do + dosbin $pkg + done + fi +} \ No newline at end of file