merge cea8eb19-159a-45b8-a9eb-0b0cdecc4b9a
Message
merge cea8eb19-159a-45b8-a9eb-0b0cdecc4b9a
Diff
crates/cli/src/cmd/ci.rs+7 −0
--- a/crates/cli/src/cmd/ci.rs+++ b/crates/cli/src/cmd/ci.rs@@ -231,6 +231,13 @@ fn do_run(fs: &args::FlagSet, fg: &Forge, pr: Option<String>) -> Result<(), CliE231231 None232232 };233233 let list = step_list(fg)?;234+ // Validate linked pr before any side effect: no stray run dir,235+ // no dangling .current, no phantom cancel on bad id.236+ if let Some(p) = &pr {237+ if !fg.root().join(fg.pr_file(p)).is_file() {238+ return Err(CliError::Runtime(format!("pr {p}: not found")));239+ }240+ }234241 let base = f0rge_core::now_rfc3339().replace(':', "-");235242 let mut ts = base.clone();236243 let mut n = 0u32;
crates/cli/src/cmd/merge.rs+2 −2
--- a/crates/cli/src/cmd/merge.rs+++ b/crates/cli/src/cmd/merge.rs@@ -11,7 +11,7 @@ use std::process::Command;1111 use std::sync::atomic::{AtomicU64, Ordering};1212 1313 pub fn help() -> &'static str {14- "f0rge merge: imports\nusage: f0rge merge [--json] <folder|zip|branch>\nconflicts stop; agent resolves\n"14+ "f0rge merge: imports\nusage: f0rge merge [--json] <folder|zip|branch-name>\nconflicts stop; agent resolves\n"1515 }1616 1717 static CTR: AtomicU64 = AtomicU64::new(0);@@ -399,7 +399,7 @@ pub fn run(args: &[String], fg: &Forge) -> Result<(), CliError> {399399 let (json, jq) = (fs.is("json"), fs.get("jq").map(|s| s.to_string()));400400 let base_flag = fs.get("base").map(|s| s.to_string());401401 if fs.positional.len() != 1 {402- return Err(CliError::Usage("f0rge merge <folder|zip|branch>".to_string()));402+ return Err(CliError::Usage("f0rge merge <folder|zip|branch-name>".to_string()));403403 }404404 let src = fs.positional[0].clone();405405 let repo = repo_dir(fg)?;
crates/cli/src/cmd/pr.rs+1 −1
--- a/crates/cli/src/cmd/pr.rs+++ b/crates/cli/src/cmd/pr.rs@@ -12,7 +12,7 @@ use std::process::Command;1212 use std::sync::atomic::{AtomicU64, Ordering};1313 1414 pub fn help() -> &'static str {15- "f0rge pr: pull requests\nusage: f0rge pr [--json] <create|diff|review|merge|close|list>\nverbs: create diff review comment merge close list\n"15+ "f0rge pr: pull requests\nusage: f0rge pr [--json] <create|diff|review|comment|merge|close|list>\nverbs: create diff review comment merge close list\n"1616 }1717 1818 static TMP_CTR: AtomicU64 = AtomicU64::new(0);