113 lines
3.7 KiB
Markdown
113 lines
3.7 KiB
Markdown
|
|
# FAQ
|
||
|
|
|
||
|
|
## How do I get a token?
|
||
|
|
|
||
|
|
In Forgejo: Settings → Applications → Generate New Token. Pick the
|
||
|
|
scopes you need (typically `repo`, `notification`, and optionally
|
||
|
|
`admin:public_key` if you'll manage SSH keys). `fj auth login` will
|
||
|
|
prompt you to paste it.
|
||
|
|
|
||
|
|
## Where are my tokens stored?
|
||
|
|
|
||
|
|
In your OS keychain (macOS Keychain, Linux Secret Service, Windows
|
||
|
|
Credential Manager) under the service name `fj`, keyed by hostname.
|
||
|
|
Never on disk in `hosts.toml`.
|
||
|
|
|
||
|
|
## How do I add a second host?
|
||
|
|
|
||
|
|
```sh
|
||
|
|
fj auth login --host other.example.com
|
||
|
|
fj auth switch other.example.com # make it the default
|
||
|
|
# or pin per-command:
|
||
|
|
fj --host other.example.com repo list
|
||
|
|
```
|
||
|
|
|
||
|
|
## What's the difference between `fj api --jq` and `fj --json-fields`?
|
||
|
|
|
||
|
|
- `fj api --jq` projects a single JSON document with dotted paths,
|
||
|
|
brackets, and pipes. See [`jq.md`](jq.md). It only works on
|
||
|
|
`fj api`'s output.
|
||
|
|
- `fj --json-fields foo,bar` is a global flag that applies to ANY
|
||
|
|
command's `--json` output. It keeps only those top-level (or dotted)
|
||
|
|
fields. This is the gh-style behavior.
|
||
|
|
|
||
|
|
## Why does `fj` keep re-prompting the macOS keychain after I rebuild?
|
||
|
|
|
||
|
|
The keychain identifies applications by binary hash. Every
|
||
|
|
`cargo build --release` produces a new hash, so macOS treats it as a
|
||
|
|
new application. Click "Always Allow" once and it'll stick until the
|
||
|
|
next rebuild. See `troubleshooting.md`.
|
||
|
|
|
||
|
|
## How do I make `fj` work in a non-interactive script?
|
||
|
|
|
||
|
|
- Set `FJ_TOKEN` env var to avoid `fj auth login` prompting.
|
||
|
|
- Set `FJ_HOST` to pin the host.
|
||
|
|
- Always pass `--body "..."` or `--body -` so `fj` never opens
|
||
|
|
`$EDITOR`.
|
||
|
|
- Pipe output through `--json` for parseable results.
|
||
|
|
- Set `FJ_NO_PAGER=1` (or pass `--no-pager`).
|
||
|
|
|
||
|
|
## Can `fj` work without a git remote?
|
||
|
|
|
||
|
|
Yes. Without `-R/--repo` fj falls back to `git remote -v`. With `-R`
|
||
|
|
the remote isn't consulted at all. So you can run `fj repo view foo/bar`
|
||
|
|
from anywhere, including outside a git repo.
|
||
|
|
|
||
|
|
## How do I delete the test repo I created?
|
||
|
|
|
||
|
|
```sh
|
||
|
|
fj repo delete stephen/fj-cli-test # asks you to type the slug
|
||
|
|
fj repo delete stephen/fj-cli-test -y # skip the confirmation
|
||
|
|
```
|
||
|
|
|
||
|
|
## What if Forgejo and `gh` flag names disagree?
|
||
|
|
|
||
|
|
We track `gh`. See [`gh-to-fj.md`](gh-to-fj.md) for the mapping. When
|
||
|
|
`gh` doesn't have an equivalent (e.g. `fj milestone`, `fj protect`,
|
||
|
|
`fj hook`, `fj search code`), we follow Forgejo's terminology.
|
||
|
|
|
||
|
|
## Why are some `fj-*` plugins not found?
|
||
|
|
|
||
|
|
Plugin dispatch only triggers when the first positional isn't a known
|
||
|
|
subcommand. See `KNOWN_SUBCOMMANDS` in `src/main.rs`. Renaming your
|
||
|
|
plugin if it collides is the workaround.
|
||
|
|
|
||
|
|
## Can I script `git push` to also push via `fj`?
|
||
|
|
|
||
|
|
`fj` doesn't push git refs — `git` does that. But `fj auth setup-git`
|
||
|
|
installs a credential helper so that `git push` to your Forgejo host
|
||
|
|
authenticates via your stored token, no `~/.netrc` needed.
|
||
|
|
|
||
|
|
## How do I see what `fj` is sending?
|
||
|
|
|
||
|
|
```sh
|
||
|
|
fj --debug repo list -R foo/bar
|
||
|
|
# or
|
||
|
|
FJ_DEBUG=1 fj repo list -R foo/bar
|
||
|
|
```
|
||
|
|
|
||
|
|
Stderr will show `→ GET https://… ?query` and `← 200 url` for every
|
||
|
|
request, with a body preview if applicable.
|
||
|
|
|
||
|
|
## How do I customize the pager?
|
||
|
|
|
||
|
|
```sh
|
||
|
|
FJ_PAGER='less -R' fj repo list # don't auto-quit on short output
|
||
|
|
FJ_PAGER=cat fj repo list # disable paging
|
||
|
|
FJ_NO_PAGER=1 fj repo list # same as above
|
||
|
|
fj --no-pager repo list # per-command opt out
|
||
|
|
```
|
||
|
|
|
||
|
|
## Will `fj` work on Windows?
|
||
|
|
|
||
|
|
Compilation works (the pager is a no-op there; everything else is
|
||
|
|
cross-platform). Not actively tested. Reports welcome.
|
||
|
|
|
||
|
|
## Where does `fj` store its config?
|
||
|
|
|
||
|
|
- macOS: `~/Library/Application Support/com.rasterstate.fj/`
|
||
|
|
- Linux: `$XDG_CONFIG_HOME/fj/` (`~/.config/fj/`)
|
||
|
|
- Windows: `%APPDATA%\rasterstate\fj\`
|
||
|
|
|
||
|
|
Files: `hosts.toml`, `aliases.toml`, `config.toml`.
|