hive-forge: move pr create --remote's origin default onto the clap arg

Puts the default on #[arg(long, default_value = "origin")] instead of
duplicating unwrap_or("origin") at both call sites (REST/--push path
and agit_create). clap now renders the default in --help itself, so
the hand-written doc-comment default is dropped in favor of it.
Regenerated docs/tools/forge-cli.md to match.
This commit is contained in:
atlas 2026-09-19 20:33:48 +02:00
commit 15424d3e49
2 changed files with 8 additions and 6 deletions

View file

@ -534,7 +534,9 @@ Create a pull request
* `--body-file <BODY_FILE>` — Read body from a file. `-` means stdin * `--body-file <BODY_FILE>` — Read body from a file. `-` means stdin
* `--draft` — Open as draft. Ignored in `--agit` mode * `--draft` — Open as draft. Ignored in `--agit` mode
* `--push` — Push the local `--head` branch to `--remote` before creating the PR * `--push` — Push the local `--head` branch to `--remote` before creating the PR
* `--remote <REMOTE>` — Remote to push to (default: `origin`) * `--remote <REMOTE>` — Remote to push to
Default value: `origin`
* `--agit` — Open the PR via Forgejo's `AGit` flow instead of pushing a branch — works for read-only collaborators. Run from inside a cloned repo * `--agit` — Open the PR via Forgejo's `AGit` flow instead of pushing a branch — works for read-only collaborators. Run from inside a cloned repo
* `--topic <TOPIC>``AGit` topic — groups repeated pushes into one PR (re-run with the same topic to update it). Defaults to the branch name. Only meaningful with `--agit` * `--topic <TOPIC>``AGit` topic — groups repeated pushes into one PR (re-run with the same topic to update it). Defaults to the branch name. Only meaningful with `--agit`
* `--label <LABELS>` — Label name to attach, repeatable (for example `--label area/ops --label type/bug`). Same spelling `labels add` accepts — an unresolved name errors out rather than silently attaching fewer labels than asked for. In `--agit` mode `pr create` applies this as a follow-up call once it learns the PR number (the `AGit` push itself has no label field), so it silently skips them (not a label-resolution error) if it couldn't parse the PR URL back out of the push output — same fallback as the deferred multi-line body * `--label <LABELS>` — Label name to attach, repeatable (for example `--label area/ops --label type/bug`). Same spelling `labels add` accepts — an unresolved name errors out rather than silently attaching fewer labels than asked for. In `--agit` mode `pr create` applies this as a follow-up call once it learns the PR number (the `AGit` push itself has no label field), so it silently skips them (not a label-resolution error) if it couldn't parse the PR URL back out of the push output — same fallback as the deferred multi-line body

View file

@ -56,9 +56,9 @@ pub struct Args {
/// Push the local `--head` branch to `--remote` before creating the PR. /// Push the local `--head` branch to `--remote` before creating the PR.
#[arg(long)] #[arg(long)]
push: bool, push: bool,
/// Remote to push to (default: `origin`). /// Remote to push to.
#[arg(long)] #[arg(long, default_value = "origin")]
remote: Option<String>, remote: String,
/// Open the PR via Forgejo's `AGit` flow instead of pushing a branch — /// Open the PR via Forgejo's `AGit` flow instead of pushing a branch —
/// works for read-only collaborators. Run from inside a cloned repo. /// works for read-only collaborators. Run from inside a cloned repo.
#[arg(long)] #[arg(long)]
@ -98,7 +98,7 @@ pub fn run(client: &Client, args: Args) -> Result<()> {
.head .head
.as_deref() .as_deref()
.expect("clap requires --head unless --agit"); .expect("clap requires --head unless --agit");
let remote = args.remote.as_deref().unwrap_or("origin"); let remote = args.remote.as_str();
if args.push { if args.push {
push_branch(remote, head)?; push_branch(remote, head)?;
} }
@ -149,7 +149,7 @@ pub fn run(client: &Client, args: Args) -> Result<()> {
/// PATCH, mirroring the manual `pr create --title …` + `issue edit /// PATCH, mirroring the manual `pr create --title …` + `issue edit
/// --body-file` two-step. /// --body-file` two-step.
fn agit_create(client: &Client, args: &Args, body: &str) -> Result<()> { fn agit_create(client: &Client, args: &Args, body: &str) -> Result<()> {
let remote = args.remote.as_deref().unwrap_or("origin"); let remote = args.remote.as_str();
let topic = match &args.topic { let topic = match &args.topic {
Some(t) => t.clone(), Some(t) => t.clone(),
None => current_branch().unwrap_or_else(|| "contribution".to_owned()), None => current_branch().unwrap_or_else(|| "contribution".to_owned()),