diff --git a/Cargo.lock b/Cargo.lock index e4ade8e..c484e9b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1362,6 +1362,7 @@ dependencies = [ "serde_json", "varlink", "varlink_generator", + "walkdir", ] [[package]] @@ -2486,6 +2487,15 @@ version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + [[package]] name = "schannel" version = "0.1.27" @@ -3799,6 +3809,16 @@ dependencies = [ "atomic-waker", ] +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + [[package]] name = "want" version = "0.3.1" @@ -3959,6 +3979,15 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys 0.59.0", +] + [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" diff --git a/hostd/src/main.rs b/hostd/src/main.rs index 3ebbabe..c9b7a65 100644 --- a/hostd/src/main.rs +++ b/hostd/src/main.rs @@ -1,6 +1,8 @@ use anyhow::Result; -use internal::io_patagia_hostd::{Call_Apply, Call_Describe, Label, Machine, VarlinkInterface}; +use internal::ipc::patagia::io_patagia_hostd::{ + Call_Apply, Call_Describe, Label, Machine, VarlinkInterface, +}; const LISTEN_ADDRESS: &str = "unix:/tmp/patagia/io.patagia.hostd"; @@ -35,7 +37,7 @@ impl VarlinkInterface for PatagiaHostd { fn main() -> Result<()> { let hostd = PatagiaHostd; - let hostd_iface = internal::io_patagia_hostd::new(Box::new(hostd)); + let hostd_iface = internal::ipc::patagia::io_patagia_hostd::new(Box::new(hostd)); let svc = varlink::VarlinkService::new( "io.patagia.hostd", diff --git a/internal/Cargo.toml b/internal/Cargo.toml index f0a2b58..4bff095 100644 --- a/internal/Cargo.toml +++ b/internal/Cargo.toml @@ -11,3 +11,4 @@ varlink = "11.0.1" [build-dependencies] varlink_generator = "10.1.0" +walkdir = "2.5.0" diff --git a/internal/build.rs b/internal/build.rs index 0b22cad..89bc35a 100644 --- a/internal/build.rs +++ b/internal/build.rs @@ -1,11 +1,12 @@ extern crate varlink_generator; +use walkdir::WalkDir; + fn main() { - // iterate over all varlink files - std::fs::read_dir("src").unwrap().for_each(|f| { - let f = f.unwrap(); - if f.file_name().to_str().unwrap().ends_with(".varlink") { - varlink_generator::cargo_build_tosource(&f.path().display().to_string(), true); + // walk dir to find varlink files + for entry in WalkDir::new("src").into_iter().filter_map(|e| e.ok()) { + if entry.file_name().to_str().unwrap().ends_with(".varlink") { + varlink_generator::cargo_build_tosource(&entry.path().display().to_string(), true); } - }); + } } diff --git a/internal/src/ipc/mod.rs b/internal/src/ipc/mod.rs new file mode 100644 index 0000000..8bf455d --- /dev/null +++ b/internal/src/ipc/mod.rs @@ -0,0 +1,2 @@ +pub mod patagia; +pub mod systemd; diff --git a/internal/src/io.patagia.hostd.varlink b/internal/src/ipc/patagia/io.patagia.hostd.varlink similarity index 100% rename from internal/src/io.patagia.hostd.varlink rename to internal/src/ipc/patagia/io.patagia.hostd.varlink diff --git a/internal/src/io_patagia_hostd.rs b/internal/src/ipc/patagia/io_patagia_hostd.rs similarity index 100% rename from internal/src/io_patagia_hostd.rs rename to internal/src/ipc/patagia/io_patagia_hostd.rs diff --git a/internal/src/ipc/patagia/mod.rs b/internal/src/ipc/patagia/mod.rs new file mode 100644 index 0000000..02666ab --- /dev/null +++ b/internal/src/ipc/patagia/mod.rs @@ -0,0 +1 @@ +pub mod io_patagia_hostd; diff --git a/internal/src/io.systemd.hostname.varlink b/internal/src/ipc/systemd/io.systemd.hostname.varlink similarity index 100% rename from internal/src/io.systemd.hostname.varlink rename to internal/src/ipc/systemd/io.systemd.hostname.varlink diff --git a/internal/src/io_systemd_hostname.rs b/internal/src/ipc/systemd/io_systemd_hostname.rs similarity index 100% rename from internal/src/io_systemd_hostname.rs rename to internal/src/ipc/systemd/io_systemd_hostname.rs diff --git a/internal/src/ipc/systemd/mod.rs b/internal/src/ipc/systemd/mod.rs new file mode 100644 index 0000000..e13378d --- /dev/null +++ b/internal/src/ipc/systemd/mod.rs @@ -0,0 +1 @@ +pub mod io_systemd_hostname; diff --git a/internal/src/lib.rs b/internal/src/lib.rs index 8e3b981..ce14ad3 100644 --- a/internal/src/lib.rs +++ b/internal/src/lib.rs @@ -1,2 +1 @@ -pub mod io_patagia_hostd; -pub mod io_systemd_hostname; +pub mod ipc;