merge cea8eb19-159a-45b8-a9eb-0b0cdecc4b9a

7687699gl0w

all commits

Message

merge cea8eb19-159a-45b8-a9eb-0b0cdecc4b9a

Diff

crates/cli/src/cmd/ci.rs+7 −0
diff --git a/crates/cli/src/cmd/ci.rs b/crates/cli/src/cmd/ci.rsindex a815cc8..da6eb6f 100644--- 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
diff --git a/crates/cli/src/cmd/merge.rs b/crates/cli/src/cmd/merge.rsindex e869c17..c625cac 100644--- 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
diff --git a/crates/cli/src/cmd/pr.rs b/crates/cli/src/cmd/pr.rsindex 9459f63..1266144 100644--- 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);