huskies: rename project from storkit to huskies
Rename all references from storkit to huskies across the codebase: - .storkit/ directory → .huskies/ - Binary name, Cargo package name, Docker image references - Server code, frontend code, config files, scripts - Fix script/test to build frontend before cargo clippy/test so merge worktrees have frontend/dist available for RustEmbed Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
+20
-20
@@ -57,7 +57,7 @@ fn parse_cli_args(args: &[String]) -> Result<CliArgs, String> {
|
||||
std::process::exit(0);
|
||||
}
|
||||
"--version" | "-V" => {
|
||||
println!("storkit {}", env!("CARGO_PKG_VERSION"));
|
||||
println!("huskies {}", env!("CARGO_PKG_VERSION"));
|
||||
std::process::exit(0);
|
||||
}
|
||||
"--port" => {
|
||||
@@ -97,18 +97,18 @@ fn parse_cli_args(args: &[String]) -> Result<CliArgs, String> {
|
||||
}
|
||||
|
||||
fn print_help() {
|
||||
println!("storkit [OPTIONS] [PATH]");
|
||||
println!("storkit init [OPTIONS] [PATH]");
|
||||
println!("huskies [OPTIONS] [PATH]");
|
||||
println!("huskies init [OPTIONS] [PATH]");
|
||||
println!();
|
||||
println!("Serve a storkit project.");
|
||||
println!("Serve a huskies project.");
|
||||
println!();
|
||||
println!("COMMANDS:");
|
||||
println!(" init Scaffold a new .storkit/ project and start the interactive setup wizard.");
|
||||
println!(" init Scaffold a new .huskies/ project and start the interactive setup wizard.");
|
||||
println!();
|
||||
println!("ARGS:");
|
||||
println!(
|
||||
" PATH Path to an existing project directory. \
|
||||
If omitted, storkit searches parent directories for a .storkit/ root."
|
||||
If omitted, huskies searches parent directories for a .huskies/ root."
|
||||
);
|
||||
println!();
|
||||
println!("OPTIONS:");
|
||||
@@ -139,10 +139,10 @@ async fn main() -> Result<(), std::io::Error> {
|
||||
|
||||
let app_state = Arc::new(SessionState::default());
|
||||
let cwd = std::env::current_dir().unwrap_or_else(|_| PathBuf::from("."));
|
||||
// Migrate legacy root-level store.json into .storkit/ if the new path does
|
||||
// Migrate legacy root-level store.json into .huskies/ if the new path does
|
||||
// not yet exist. This keeps existing deployments working after upgrade.
|
||||
let legacy_store_path = cwd.join("store.json");
|
||||
let store_path = cwd.join(".storkit").join("store.json");
|
||||
let store_path = cwd.join(".huskies").join("store.json");
|
||||
if legacy_store_path.exists() && !store_path.exists() {
|
||||
if let Some(parent) = store_path.parent() {
|
||||
let _ = std::fs::create_dir_all(parent);
|
||||
@@ -160,7 +160,7 @@ async fn main() -> Result<(), std::io::Error> {
|
||||
Ok(args) => args,
|
||||
Err(msg) => {
|
||||
eprintln!("error: {msg}");
|
||||
eprintln!("Run 'storkit --help' for usage.");
|
||||
eprintln!("Run 'huskies --help' for usage.");
|
||||
std::process::exit(1);
|
||||
}
|
||||
};
|
||||
@@ -187,7 +187,7 @@ async fn main() -> Result<(), std::io::Error> {
|
||||
}
|
||||
|
||||
if is_init {
|
||||
// `storkit init [PATH]` — always scaffold, never search parents.
|
||||
// `huskies init [PATH]` — always scaffold, never search parents.
|
||||
let init_root = explicit_path.unwrap_or_else(|| cwd.clone());
|
||||
if !init_root.exists() {
|
||||
std::fs::create_dir_all(&init_root).unwrap_or_else(|e| {
|
||||
@@ -218,7 +218,7 @@ async fn main() -> Result<(), std::io::Error> {
|
||||
}
|
||||
} else if let Some(explicit_root) = explicit_path {
|
||||
// An explicit path was given on the command line.
|
||||
// Open it directly — scaffold .storkit/ if it is missing — and
|
||||
// Open it directly — scaffold .huskies/ if it is missing — and
|
||||
// exit with a clear error message if the path is invalid.
|
||||
match io::fs::open_project(
|
||||
explicit_root.to_string_lossy().to_string(),
|
||||
@@ -240,7 +240,7 @@ async fn main() -> Result<(), std::io::Error> {
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// No path argument — auto-detect a .storkit/ project in cwd or
|
||||
// No path argument — auto-detect a .huskies/ project in cwd or
|
||||
// parent directories (preserves existing behaviour).
|
||||
if let Some(project_root) = find_story_kit_root(&cwd) {
|
||||
io::fs::open_project(
|
||||
@@ -259,8 +259,8 @@ async fn main() -> Result<(), std::io::Error> {
|
||||
config::ProjectConfig::load(&project_root)
|
||||
.unwrap_or_else(|e| panic!("Invalid project.toml: {e}"));
|
||||
} else {
|
||||
// No .storkit/ found in cwd or parents — scaffold cwd as a new
|
||||
// project, exactly like `storkit .` does.
|
||||
// No .huskies/ found in cwd or parents — scaffold cwd as a new
|
||||
// project, exactly like `huskies .` does.
|
||||
io::fs::open_project(
|
||||
cwd.to_string_lossy().to_string(),
|
||||
&app_state,
|
||||
@@ -277,7 +277,7 @@ async fn main() -> Result<(), std::io::Error> {
|
||||
|
||||
// Enable persistent server log file now that the project root is known.
|
||||
if let Some(ref root) = *app_state.project_root.lock().unwrap() {
|
||||
let log_dir = root.join(".storkit").join("logs");
|
||||
let log_dir = root.join(".huskies").join("logs");
|
||||
let _ = std::fs::create_dir_all(&log_dir);
|
||||
log_buffer::global().set_log_file(log_dir.join("server.log"));
|
||||
}
|
||||
@@ -294,7 +294,7 @@ async fn main() -> Result<(), std::io::Error> {
|
||||
let watchdog_root: Option<PathBuf> = app_state.project_root.lock().unwrap().clone();
|
||||
AgentPool::spawn_watchdog(Arc::clone(&agents), watchdog_root);
|
||||
if let Some(ref root) = *app_state.project_root.lock().unwrap() {
|
||||
let work_dir = root.join(".storkit").join("work");
|
||||
let work_dir = root.join(".huskies").join("work");
|
||||
if work_dir.is_dir() {
|
||||
let watcher_config = config::ProjectConfig::load(root)
|
||||
.map(|c| c.watcher)
|
||||
@@ -521,7 +521,7 @@ async fn main() -> Result<(), std::io::Error> {
|
||||
let app = build_routes(ctx, whatsapp_ctx.clone(), slack_ctx.clone(), port);
|
||||
|
||||
// Optional Matrix bot: connect to the homeserver and start listening for
|
||||
// messages if `.storkit/bot.toml` is present and enabled.
|
||||
// messages if `.huskies/bot.toml` is present and enabled.
|
||||
if let Some(ref root) = startup_root {
|
||||
chat::transport::matrix::spawn_bot(
|
||||
root,
|
||||
@@ -574,13 +574,13 @@ async fn main() -> Result<(), std::io::Error> {
|
||||
startup_agents.auto_assign_available_work(&root).await;
|
||||
});
|
||||
}
|
||||
let host = std::env::var("STORKIT_HOST").unwrap_or_else(|_| "127.0.0.1".to_string());
|
||||
let host = std::env::var("HUSKIES_HOST").unwrap_or_else(|_| "127.0.0.1".to_string());
|
||||
let addr = format!("{host}:{port}");
|
||||
|
||||
println!(
|
||||
"\x1b[95;1m ____ _ _ ___ _ \n / ___|| |_ ___ _ __| | _|_ _| |_ \n \\___ \\| __/ _ \\| '__| |/ /| || __|\n ___) | || (_) | | | < | || |_ \n |____/ \\__\\___/|_| |_|\\_\\___|\\__|\n\x1b[0m"
|
||||
);
|
||||
println!("STORKIT_PORT={port}");
|
||||
println!("HUSKIES_PORT={port}");
|
||||
println!("\x1b[96;1mFrontend:\x1b[0m \x1b[94mhttp://{addr}\x1b[0m");
|
||||
println!("\x1b[92;1mOpenAPI Docs:\x1b[0m \x1b[94mhttp://{addr}/docs\x1b[0m");
|
||||
|
||||
@@ -637,7 +637,7 @@ mod tests {
|
||||
#[should_panic(expected = "Invalid project.toml: Duplicate agent name")]
|
||||
fn panics_on_duplicate_agent_names() {
|
||||
let tmp = tempfile::tempdir().unwrap();
|
||||
let sk = tmp.path().join(".storkit");
|
||||
let sk = tmp.path().join(".huskies");
|
||||
std::fs::create_dir_all(&sk).unwrap();
|
||||
std::fs::write(
|
||||
sk.join("project.toml"),
|
||||
|
||||
Reference in New Issue
Block a user