5c6e92fd Andy McCall 1 month ago ↶
1
# oh: OxygenHub from the command line
2
3
` oh` is to OxygenHub what ` gh` is to GitHub. It talks to the hub's JSON API
4
(hub spec §12) and prints what it gets back: in colour on a terminal, as
5
plain text with ` --plain` or ` NO_COLOR` , and as the API's own JSON with
6
` --json` .
7
8
## Which hub, which repository, which token
9
10
Inside an Oxygen checkout, ` oh` uses the checkout's remote:
11
- ** Remote:** ` origin` , or the only remote, or ` --remote NAME` .
12
- ** Hub and repository:** from the remote's URL (` https://hub/OWNER/NAME` ).
13
- ** Token and CA:** the ones ` oxy` pushes with (` remote.NAME.token` , ` remote.NAME.ca` ).
14
15
So in a checkout that pushes to the hub, ` oh` needs no setup.
16
17
Elsewhere, sign in once and name the repository:
18
19
```
d91780ee Andy McCall 1 month ago ↶
20
oh auth login --with-hub https://oxygenhub.io
5c6e92fd Andy McCall 1 month ago ↶
21
oh issue list --repo andymccall/oxygen
22
```
23
df71c789 Andy McCall 1 month ago ↶
24
` oh auth login` shows a code and a link: open it, signed in to the hub, and
25
approve the code, choosing what ` oh` may do (device sign-in). The token
26
arrives by itself; ` oh` checks it, saves it with the CA in
27
` ~/.config/oh/config.toml` (owner-only), and makes that hub the default.
28
` --token TOKEN` uses a token from Settings → Tokens instead, and
29
` --token -` reads one from stdin. ` OH_TOKEN` (or ` OXY_TOKEN` ), ` OH_HUB` and
30
` OXY_CA` override the saved values.
5c6e92fd Andy McCall 1 month ago ↶
31
32
## Commands
33
34
35
df71c789 Andy McCall 1 month ago ↶
36
| ` oh auth login` , ` oh auth status` | Sign in (approve a code on the web, or give a token); show who you are |
5c6e92fd Andy McCall 1 month ago ↶
37
| ` oh repo view` | Name, description, visibility, default bookmark, clone command |
38
| ` oh issue list [--state open\|closed\|all]` | Issues |
39
| ` oh issue view N` | An issue with its comments |
17a3a84b Andy McCall 1 month ago ↶
40
| ` oh issue create -t TITLE [-b BODY \| -F FILE] [-l LABEL]… [-p N [--column NAME]]` | Open an issue; ` -p` also puts it on the owner's project N |
b5229b56 Andy McCall 1 month ago ↶
41
| ` oh issue edit N [-t TITLE] [-b BODY \| -F FILE] [-l LABEL]… [-a USER]… [-m MILESTONE]` | Change it; labels and assignees are the whole set (` --no-labels` , ` --no-assignees` clear them), ` -m ""` clears the milestone |
42
| ` oh issue label N --add L --remove L` | Put labels on or take them off |
5ea4872f Andy McCall 1 month ago ↶
43
| ` oh milestone list` , ` oh milestone create TITLE [-d DESC] [--due YYYY-MM-DD]` , ` oh milestone edit TITLE [--rename T] [-d DESC] [--due D]` , ` oh milestone close\|reopen TITLE` | Milestones (triage to change) |
5c6e92fd Andy McCall 1 month ago ↶
44
| ` oh issue close N [--reason not_planned]` , ` oh issue reopen N` | Close or reopen |
17a3a84b Andy McCall 1 month ago ↶
45
| ` oh project list` , ` oh project view N` , ` oh project create TITLE [-d DESC] [--private]` , ` oh project close\|reopen N` | The repository owner's project boards (` --owner NAME` for another's) |
46
| ` oh project card add N REF [-c COLUMN]` , ` oh project card add N --note TEXT` , ` oh project card move N CARD -c COLUMN` , ` oh project card remove N CARD` | Cards: REF is ` 12` or ` #12` here, or ` name#12` in another of the owner's repositories; a column by name or id |
5c6e92fd Andy McCall 1 month ago ↶
47
| ` oh issue comment N -b BODY` | Comment |
0b20f1ec Andy McCall 1 month ago ↶
48
| ` oh proposal list [--state open\|draft\|landed\|closed\|all]` , ` oh proposal view N` | Proposals, with changes, approvals and blockers; a landed one with who landed it and how |
5c6e92fd Andy McCall 1 month ago ↶
49
| ` oh proposal create -t TITLE --from BOOKMARK [--into BOOKMARK] [--draft]` | Propose a bookmark's changes |
50
| ` oh proposal checks N` | Checks on the projected state |
1f1eb06a Andy McCall 1 month ago ↶
51
| ` oh proposal land N` | Land it on its target, as the page's Land button does |
71e65fcf Andy McCall 22 days ago ↶
52
| ` oh proposal close N [-m MSG]` | Close it without landing, with an optional comment saying why |
53
| ` oh proposal reopen N` | Reopen a closed proposal |
5c6e92fd Andy McCall 1 month ago ↶
54
| ` oh run list` , ` oh run view N` | OxygenFlow runs and their jobs |
55
| ` oh run start [--bookmark B \| --change HASH] [--watch]` | Run the pipeline without a push |
56
| ` oh run watch N` | Follow a run; exit 0 if it passes, 1 if not |
57
| ` oh run log N JOB` | A job's log |
58
| ` oh run rerun N` | Run a finished run's state again |
745d225d Andy McCall 1 month ago ↶
59
| ` oh run cancel N` | Cancel a run still queued or running; its running jobs are stopped |
5c6e92fd Andy McCall 1 month ago ↶
60
| ` oh release list` , ` oh release create TAG [-t TITLE] [-n NOTES]` | Releases |
61
| ` oh release upload TAG FILE…` | Attach assets |
62
| ` oh release trust TAG` | The release's trust audit; exit 1 on a failure |
63
| ` oh api PATH [-X METHOD] [-d JSON]` | Any API call, JSON out |
64
65
Exit codes: 0 on success, 1 when a watched run or an audit fails, 2 on an
66
error.
67
68
## Not yet
69
17a3a84b Andy McCall 1 month ago ↶
70
- Also still to come: reviews, project columns as commands, runner management (oxygenhub#41), and shell completions.