A command-line tool for Forgejo instances.
Find a file
Stephen Way 21311b6340
expand: mirror, auto-pagination beyond 50, retry-on-5xx, branch protection rules
* `fj repo mirror <url>` does a full migrate (pull-mirror with `--mirror`,
  one-shot import otherwise). `fj repo mirror-sync` triggers a refresh on
  an existing pull-mirror.
* List endpoints transparently follow `Link: rel=next` when the caller
  asks for more than the 50-per-page API cap. So `fj pr list -L 200`
  or `fj issue list -L 100` now Just Works without manual paging.
* HTTP client retries idempotent requests (GET/HEAD/OPTIONS/PUT/DELETE)
  up to 3 times with exponential backoff (200/400/800 ms) on transport
  errors and 5xx responses. POST and PATCH are never retried.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 08:37:20 -07:00
hooks expand: repo auto-detect, --web, editor, PR diff/checks/ready/review/status, repo lifecycle, api headers/paginate 2026-05-13 08:22:40 -07:00
scripts expand: repo auto-detect, --web, editor, PR diff/checks/ready/review/status, repo lifecycle, api headers/paginate 2026-05-13 08:22:40 -07:00
src expand: mirror, auto-pagination beyond 50, retry-on-5xx, branch protection rules 2026-05-13 08:37:20 -07:00
.gitignore initial: fj, a CLI for Forgejo 2026-05-13 07:56:28 -07:00
Cargo.lock expand: auth token/refresh/setup-git, protect, hook, --debug, man pages 2026-05-13 08:34:01 -07:00
Cargo.toml expand: auth token/refresh/setup-git, protect, hook, --debug, man pages 2026-05-13 08:34:01 -07:00
README.md initial: fj, a CLI for Forgejo 2026-05-13 07:56:28 -07:00

fj

A command-line tool for Forgejo instances, in the spirit of GitHub's gh.

Multi-host from day one. Tokens are stored in your OS keychain.

Install

cargo install --path .

Quick start

fj auth login                          # add a host and token
fj auth status                         # show signed-in hosts
fj repo list                           # repos you own on the default host
fj repo view owner/name                # repo overview
fj issue list -R owner/name            # issues
fj pr list -R owner/name --state open  # pull requests
fj api /repos/search?q=foo             # raw API escape hatch

Use --host <hostname> on any command to target a specific host.

Commands

Group Commands
auth login, status, logout, list, switch
repo list, view, clone, create
issue list, view, create, close, reopen, comment
pr list, view, create, checkout, merge, close
api raw HTTP against /api/v1 with optional fields and jq-style field selection

Config

  • Hosts and the current host live in $XDG_CONFIG_HOME/fj/hosts.toml (~/Library/Application Support/fj/hosts.toml on macOS).
  • Tokens live in the OS keychain under service fj keyed by hostname.

License

MIT