feat: Phase 7 — CLI complet (start/serve/stop/status/config/logs)

- Gestion PID (write/read/remove + verification processus)
- cmd_start: lance watcher + dashboard avec Ctrl+C graceful shutdown
- cmd_serve: dashboard seul (Linux) avec --no-watcher
- cmd_stop: kill processus via SIGTERM/OpenProcess + nettoyage PID
- cmd_status: affiche PID, dashboard URL, config, polling
- cmd_config show/set/reset: gestion dotted keys (imago.url, watcher.*, etc.)
- cmd_logs: affiche derniers logs
- Fix Default derives: ImagoConfig, DedupConfig, UiConfig, LoggingConfig
- Ajout dependances: open, libc (Unix)
- Watcher::run(self) au lieu de &self pour Send
- tests: start → API /api/health OK → stop → status OK
- 0 errors, 0 warnings (cargo check + cargo build --release)
This commit is contained in:
2026-06-22 16:57:41 -04:00
parent 38f274c3d5
commit b680c0fff7
6 changed files with 544 additions and 28 deletions
+4
View File
@@ -31,6 +31,8 @@ tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] }
# Error handling
anyhow = "1"
thiserror = "2"
# CLI utilities
open = "5"
# Web server (axum + tower)
axum = { version = "0.8", features = ["ws"] }
@@ -57,6 +59,8 @@ windows-sys = { version = "0.59", features = [
[target.'cfg(unix)'.dependencies]
# Notify pour watcher filesystem (Linux)
notify = { version = "7", features = ["macos_kqueue"] }
# Signal handling (PID file, process checks)
libc = "0.2"
[profile.release]
opt-level = "z" # Optimize for size