diff --git a/Cargo.lock b/Cargo.lock index bdbd940..453e87d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2291,6 +2291,24 @@ dependencies = [ "xilem", ] +[[package]] +name = "hearthspace-settings" +version = "0.1.0" +dependencies = [ + "hearthspace", + "xilem", +] + +[[package]] +name = "hearthspace-settingsd" +version = "0.1.0" +dependencies = [ + "hearthspace", + "tempfile", + "tracing", + "tracing-subscriber", +] + [[package]] name = "heck" version = "0.5.0" diff --git a/Cargo.toml b/Cargo.toml index 2fa0259..7036062 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,6 +10,8 @@ default-run = "hearthspace-session" resolver = "2" members = [ ".", + "crates/hearthspace-settings", + "crates/hearthspace-settingsd", "crates/waydriver-hearthspace", ] default-members = ["."] diff --git a/crates/hearthspace-settings/Cargo.toml b/crates/hearthspace-settings/Cargo.toml new file mode 100644 index 0000000..d6e03e9 --- /dev/null +++ b/crates/hearthspace-settings/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "hearthspace-settings" +version = "0.1.0" +edition = "2024" +rust-version = "1.93.1" +license = "Apache-2.0" + +[dependencies] +hearthspace = { path = "../.." } +xilem = { git = "https://github.com/crutchcorn/xilem", branch = "wayland-app-id" } + +[lints.rust] +unsafe_op_in_unsafe_fn = "deny" + +[lints.clippy] +all = { level = "deny", priority = -1 } diff --git a/src/bin/hearthspace-settings.rs b/crates/hearthspace-settings/src/main.rs similarity index 100% rename from src/bin/hearthspace-settings.rs rename to crates/hearthspace-settings/src/main.rs diff --git a/crates/hearthspace-settingsd/Cargo.toml b/crates/hearthspace-settingsd/Cargo.toml new file mode 100644 index 0000000..1c3bbbb --- /dev/null +++ b/crates/hearthspace-settingsd/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "hearthspace-settingsd" +version = "0.1.0" +edition = "2024" +rust-version = "1.93.1" +license = "Apache-2.0" + +[dependencies] +hearthspace = { path = "../.." } +tracing = "0.1.41" +tracing-subscriber = { version = "0.3.19", features = ["env-filter"] } + +[dev-dependencies] +tempfile = "3" + +[lints.rust] +unsafe_op_in_unsafe_fn = "deny" + +[lints.clippy] +all = { level = "deny", priority = -1 } diff --git a/src/bin/hearthspace-settingsd.rs b/crates/hearthspace-settingsd/src/main.rs similarity index 100% rename from src/bin/hearthspace-settingsd.rs rename to crates/hearthspace-settingsd/src/main.rs diff --git a/scripts/dev-run-app b/scripts/dev-run-app index df99667..5a404ba 100755 --- a/scripts/dev-run-app +++ b/scripts/dev-run-app @@ -6,6 +6,6 @@ REPO_ROOT="${HEARTHSPACE_REPO_ROOT:-$(cd "$(dirname "$0")/.." && pwd)}" cd "$REPO_ROOT" -cargo build --bin "$APP" +cargo build -p "$APP" exec "$REPO_ROOT/target/debug/$APP" diff --git a/src/bin/hearthspace-session.rs b/src/bin/hearthspace-session.rs index 329dfd2..53d40d8 100644 --- a/src/bin/hearthspace-session.rs +++ b/src/bin/hearthspace-session.rs @@ -491,7 +491,12 @@ impl Supervisor { .then(|| PathBuf::from(env!("CARGO_MANIFEST_DIR"))); match self.mode { RunMode::DevCargo => { - let mut args = vec!["run".to_string(), "--bin".to_string(), binary.to_string()]; + let mut args = vec!["run".to_string()]; + if cargo_package_exists(binary) { + args.extend(["-p".to_string(), binary.to_string()]); + } else { + args.extend(["--bin".to_string(), binary.to_string()]); + } args.push("--".to_string()); args.extend(binary_args.iter().map(|arg| (*arg).to_string())); ProcessSpec { @@ -531,11 +536,11 @@ impl Supervisor { args: vec![ "watch".to_string(), "-w".to_string(), - "src/bin/hearthspace-settings.rs".to_string(), + "crates/hearthspace-settings".to_string(), "-w".to_string(), "src/settings".to_string(), "-x".to_string(), - "build --bin hearthspace-settings".to_string(), + "build -p hearthspace-settings".to_string(), ], envs, current_dir, @@ -547,13 +552,13 @@ impl Supervisor { program: "watchexec".to_string(), args: vec![ "-w".to_string(), - "src/bin/hearthspace-settings.rs".to_string(), + "crates/hearthspace-settings".to_string(), "-w".to_string(), "src/settings".to_string(), "--".to_string(), "cargo".to_string(), "build".to_string(), - "--bin".to_string(), + "-p".to_string(), "hearthspace-settings".to_string(), ], envs, @@ -564,6 +569,10 @@ impl Supervisor { } } +fn cargo_package_exists(package: &str) -> bool { + matches!(package, "hearthspace-settings" | "hearthspace-settingsd") +} + impl ManagedProcess { fn spawn(spec: ProcessSpec, max_restarts: usize) -> Result> { let child = spawn_child(&spec)?;