@aaronshaf/ger 1.2.10 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.ast-grep/rules/no-as-casting.yml +13 -0
- package/.claude-plugin/plugin.json +22 -0
- package/.github/workflows/ci-simple.yml +53 -0
- package/.github/workflows/ci.yml +171 -0
- package/.github/workflows/claude-code-review.yml +83 -0
- package/.github/workflows/claude.yml +50 -0
- package/.github/workflows/dependency-update.yml +84 -0
- package/.github/workflows/release.yml +166 -0
- package/.github/workflows/security-scan.yml +113 -0
- package/.github/workflows/security.yml +96 -0
- package/.husky/pre-commit +16 -0
- package/.husky/pre-push +25 -0
- package/.lintstagedrc.json +6 -0
- package/.tool-versions +1 -0
- package/CLAUDE.md +105 -0
- package/DEVELOPMENT.md +361 -0
- package/EXAMPLES.md +457 -0
- package/README.md +831 -16
- package/bin/ger +3 -18
- package/biome.json +36 -0
- package/bun.lock +678 -0
- package/bunfig.toml +8 -0
- package/docs/adr/0001-use-effect-for-side-effects.md +65 -0
- package/docs/adr/0002-use-bun-runtime.md +64 -0
- package/docs/adr/0003-store-credentials-in-home-directory.md +75 -0
- package/docs/adr/0004-use-commander-for-cli.md +76 -0
- package/docs/adr/0005-use-effect-schema-for-validation.md +93 -0
- package/docs/adr/0006-use-msw-for-api-mocking.md +89 -0
- package/docs/adr/0007-git-hooks-for-quality.md +94 -0
- package/docs/adr/0008-no-as-typecasting.md +83 -0
- package/docs/adr/0009-file-size-limits.md +82 -0
- package/docs/adr/0010-llm-friendly-xml-output.md +93 -0
- package/docs/adr/0011-ai-tool-strategy-pattern.md +102 -0
- package/docs/adr/0012-build-status-message-parsing.md +94 -0
- package/docs/adr/0013-git-subprocess-integration.md +98 -0
- package/docs/adr/0014-group-management-support.md +95 -0
- package/docs/adr/0015-batch-comment-processing.md +111 -0
- package/docs/adr/0016-flexible-change-identifiers.md +94 -0
- package/docs/adr/0017-git-worktree-support.md +102 -0
- package/docs/adr/0018-auto-install-commit-hook.md +103 -0
- package/docs/adr/0019-sdk-package-exports.md +95 -0
- package/docs/adr/0020-code-coverage-enforcement.md +105 -0
- package/docs/adr/0021-typescript-isolated-declarations.md +83 -0
- package/docs/adr/0022-biome-oxlint-tooling.md +124 -0
- package/docs/adr/README.md +30 -0
- package/docs/prd/README.md +12 -0
- package/docs/prd/architecture.md +325 -0
- package/docs/prd/commands.md +425 -0
- package/docs/prd/data-model.md +349 -0
- package/docs/prd/overview.md +124 -0
- package/index.ts +219 -0
- package/oxlint.json +24 -0
- package/package.json +82 -15
- package/scripts/check-coverage.ts +69 -0
- package/scripts/check-file-size.ts +38 -0
- package/scripts/fix-test-mocks.ts +55 -0
- package/skills/gerrit-workflow/SKILL.md +247 -0
- package/skills/gerrit-workflow/examples.md +572 -0
- package/skills/gerrit-workflow/reference.md +728 -0
- package/src/api/gerrit.ts +696 -0
- package/src/cli/commands/abandon.ts +65 -0
- package/src/cli/commands/add-reviewer.ts +156 -0
- package/src/cli/commands/build-status.ts +282 -0
- package/src/cli/commands/checkout.ts +422 -0
- package/src/cli/commands/comment.ts +460 -0
- package/src/cli/commands/comments.ts +85 -0
- package/src/cli/commands/diff.ts +71 -0
- package/src/cli/commands/extract-url.ts +266 -0
- package/src/cli/commands/groups-members.ts +104 -0
- package/src/cli/commands/groups-show.ts +169 -0
- package/src/cli/commands/groups.ts +137 -0
- package/src/cli/commands/incoming.ts +226 -0
- package/src/cli/commands/init.ts +164 -0
- package/src/cli/commands/mine.ts +115 -0
- package/src/cli/commands/open.ts +57 -0
- package/src/cli/commands/projects.ts +68 -0
- package/src/cli/commands/push.ts +430 -0
- package/src/cli/commands/rebase.ts +52 -0
- package/src/cli/commands/remove-reviewer.ts +123 -0
- package/src/cli/commands/restore.ts +50 -0
- package/src/cli/commands/review.ts +486 -0
- package/src/cli/commands/search.ts +162 -0
- package/src/cli/commands/setup.ts +286 -0
- package/src/cli/commands/show.ts +491 -0
- package/src/cli/commands/status.ts +35 -0
- package/src/cli/commands/submit.ts +108 -0
- package/src/cli/commands/vote.ts +119 -0
- package/src/cli/commands/workspace.ts +200 -0
- package/src/cli/index.ts +53 -0
- package/src/cli/register-commands.ts +659 -0
- package/src/cli/register-group-commands.ts +88 -0
- package/src/cli/register-reviewer-commands.ts +97 -0
- package/src/prompts/default-review.md +86 -0
- package/src/prompts/system-inline-review.md +135 -0
- package/src/prompts/system-overall-review.md +206 -0
- package/src/schemas/config.test.ts +245 -0
- package/src/schemas/config.ts +84 -0
- package/src/schemas/gerrit.ts +681 -0
- package/src/services/commit-hook.ts +314 -0
- package/src/services/config.test.ts +150 -0
- package/src/services/config.ts +250 -0
- package/src/services/git-worktree.ts +342 -0
- package/src/services/review-strategy.ts +292 -0
- package/src/test-utils/mock-generator.ts +138 -0
- package/src/utils/change-id.test.ts +98 -0
- package/src/utils/change-id.ts +63 -0
- package/src/utils/comment-formatters.ts +153 -0
- package/src/utils/diff-context.ts +103 -0
- package/src/utils/diff-formatters.ts +141 -0
- package/src/utils/formatters.ts +85 -0
- package/src/utils/git-commit.test.ts +277 -0
- package/src/utils/git-commit.ts +122 -0
- package/src/utils/index.ts +55 -0
- package/src/utils/message-filters.ts +26 -0
- package/src/utils/review-formatters.ts +89 -0
- package/src/utils/review-prompt-builder.ts +110 -0
- package/src/utils/shell-safety.ts +117 -0
- package/src/utils/status-indicators.ts +100 -0
- package/src/utils/url-parser.test.ts +271 -0
- package/src/utils/url-parser.ts +118 -0
- package/tests/abandon.test.ts +230 -0
- package/tests/add-reviewer.test.ts +579 -0
- package/tests/build-status-watch.test.ts +344 -0
- package/tests/build-status.test.ts +789 -0
- package/tests/change-id-formats.test.ts +268 -0
- package/tests/checkout/integration.test.ts +653 -0
- package/tests/checkout/parse-input.test.ts +55 -0
- package/tests/checkout/validation.test.ts +178 -0
- package/tests/comment-batch-advanced.test.ts +431 -0
- package/tests/comment-gerrit-api-compliance.test.ts +414 -0
- package/tests/comment.test.ts +708 -0
- package/tests/comments.test.ts +323 -0
- package/tests/config-service-simple.test.ts +100 -0
- package/tests/diff.test.ts +419 -0
- package/tests/extract-url.test.ts +517 -0
- package/tests/groups-members.test.ts +256 -0
- package/tests/groups-show.test.ts +323 -0
- package/tests/groups.test.ts +334 -0
- package/tests/helpers/build-status-test-setup.ts +83 -0
- package/tests/helpers/config-mock.ts +27 -0
- package/tests/incoming.test.ts +357 -0
- package/tests/init.test.ts +70 -0
- package/tests/integration/commit-hook.test.ts +246 -0
- package/tests/interactive-incoming.test.ts +173 -0
- package/tests/mine.test.ts +285 -0
- package/tests/mocks/msw-handlers.ts +80 -0
- package/tests/open.test.ts +233 -0
- package/tests/projects.test.ts +259 -0
- package/tests/rebase.test.ts +271 -0
- package/tests/remove-reviewer.test.ts +357 -0
- package/tests/restore.test.ts +237 -0
- package/tests/review.test.ts +135 -0
- package/tests/search.test.ts +712 -0
- package/tests/setup.test.ts +63 -0
- package/tests/show-auto-detect.test.ts +324 -0
- package/tests/show.test.ts +813 -0
- package/tests/status.test.ts +145 -0
- package/tests/submit.test.ts +316 -0
- package/tests/unit/commands/push.test.ts +194 -0
- package/tests/unit/git-branch-detection.test.ts +82 -0
- package/tests/unit/git-worktree.test.ts +55 -0
- package/tests/unit/patterns/push-patterns.test.ts +148 -0
- package/tests/unit/schemas/gerrit.test.ts +85 -0
- package/tests/unit/services/commit-hook.test.ts +132 -0
- package/tests/unit/services/review-strategy.test.ts +349 -0
- package/tests/unit/test-utils/mock-generator.test.ts +154 -0
- package/tests/unit/utils/comment-formatters.test.ts +415 -0
- package/tests/unit/utils/diff-context.test.ts +171 -0
- package/tests/unit/utils/diff-formatters.test.ts +165 -0
- package/tests/unit/utils/formatters.test.ts +411 -0
- package/tests/unit/utils/message-filters.test.ts +227 -0
- package/tests/unit/utils/shell-safety.test.ts +230 -0
- package/tests/unit/utils/status-indicators.test.ts +137 -0
- package/tests/vote.test.ts +317 -0
- package/tests/workspace.test.ts +295 -0
- package/tsconfig.json +36 -5
- package/src/commands/branch.ts +0 -180
- package/src/ger.ts +0 -22
- package/src/types.d.ts +0 -35
- package/src/utils.ts +0 -130
|
@@ -0,0 +1,425 @@
|
|
|
1
|
+
# Commands
|
|
2
|
+
|
|
3
|
+
Complete specification of all CLI commands.
|
|
4
|
+
|
|
5
|
+
## Change Viewing
|
|
6
|
+
|
|
7
|
+
### show
|
|
8
|
+
|
|
9
|
+
Display comprehensive change information.
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
ger show [change-id]
|
|
13
|
+
ger show 12345
|
|
14
|
+
ger show If5a3ae8... # Change-ID format
|
|
15
|
+
ger show # Auto-detect from HEAD
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
| Option | Description |
|
|
19
|
+
|--------|-------------|
|
|
20
|
+
| `--xml` | Output as XML for LLM consumption |
|
|
21
|
+
| `--no-diff` | Skip diff output |
|
|
22
|
+
| `--no-comments` | Skip comments |
|
|
23
|
+
|
|
24
|
+
**Output includes:**
|
|
25
|
+
- Change metadata (number, project, branch, status)
|
|
26
|
+
- Owner and reviewer information
|
|
27
|
+
- Submit requirements
|
|
28
|
+
- Full diff
|
|
29
|
+
- All comments with context
|
|
30
|
+
|
|
31
|
+
### diff
|
|
32
|
+
|
|
33
|
+
Get change diff in various formats.
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
ger diff <change-id>
|
|
37
|
+
ger diff 12345 --files-only
|
|
38
|
+
ger diff 12345 --base 1 # Diff against patchset 1
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
| Option | Description |
|
|
42
|
+
|--------|-------------|
|
|
43
|
+
| `--xml` | Output as XML |
|
|
44
|
+
| `--files-only` | List only changed files |
|
|
45
|
+
| `--base <ps>` | Diff against specific patchset |
|
|
46
|
+
|
|
47
|
+
### comments
|
|
48
|
+
|
|
49
|
+
View all comments on a change with diff context.
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
ger comments <change-id>
|
|
53
|
+
ger comments 12345 --xml
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
| Option | Description |
|
|
57
|
+
|--------|-------------|
|
|
58
|
+
| `--xml` | Output as XML |
|
|
59
|
+
| `--context <n>` | Lines of context (default: 3) |
|
|
60
|
+
|
|
61
|
+
### search
|
|
62
|
+
|
|
63
|
+
Query changes with Gerrit syntax.
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
ger search "owner:self status:open"
|
|
67
|
+
ger search "project:canvas-lms branch:main"
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
| Option | Description |
|
|
71
|
+
|--------|-------------|
|
|
72
|
+
| `--xml` | Output as XML |
|
|
73
|
+
| `--limit <n>` | Max results (default: 25) |
|
|
74
|
+
|
|
75
|
+
## Change Management
|
|
76
|
+
|
|
77
|
+
### mine
|
|
78
|
+
|
|
79
|
+
List user's open changes.
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
ger mine
|
|
83
|
+
ger mine --xml
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
**Output:** Changes grouped by project with status indicators.
|
|
87
|
+
|
|
88
|
+
### incoming
|
|
89
|
+
|
|
90
|
+
View changes needing your review.
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
ger incoming
|
|
94
|
+
ger incoming --xml
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
**Output:** Changes where you're a reviewer, grouped by project.
|
|
98
|
+
|
|
99
|
+
### abandon
|
|
100
|
+
|
|
101
|
+
Abandon a change.
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
ger abandon <change-id>
|
|
105
|
+
ger abandon <change-id> -m "No longer needed"
|
|
106
|
+
ger abandon # Interactive selection
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
| Option | Description |
|
|
110
|
+
|--------|-------------|
|
|
111
|
+
| `-m <message>` | Abandon reason |
|
|
112
|
+
|
|
113
|
+
### restore
|
|
114
|
+
|
|
115
|
+
Restore an abandoned change.
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
ger restore <change-id>
|
|
119
|
+
ger restore <change-id> -m "Needed after all"
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### workspace
|
|
123
|
+
|
|
124
|
+
View local git branch tracking information.
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
ger workspace
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
**Output:** Current branch and associated Gerrit change.
|
|
131
|
+
|
|
132
|
+
## Code Review
|
|
133
|
+
|
|
134
|
+
### comment
|
|
135
|
+
|
|
136
|
+
Post comments (overall or inline).
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
# Overall comment
|
|
140
|
+
ger comment <change-id> -m "LGTM"
|
|
141
|
+
|
|
142
|
+
# Inline comments via JSON
|
|
143
|
+
echo '[{"file":"src/index.ts","line":42,"message":"Consider null check"}]' | ger comment 12345
|
|
144
|
+
|
|
145
|
+
# From file
|
|
146
|
+
cat comments.json | ger comment 12345
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
| Option | Description |
|
|
150
|
+
|--------|-------------|
|
|
151
|
+
| `-m <message>` | Overall comment message |
|
|
152
|
+
| `--unresolved` | Mark inline comments as unresolved |
|
|
153
|
+
|
|
154
|
+
**JSON schema for inline comments:**
|
|
155
|
+
```json
|
|
156
|
+
[{
|
|
157
|
+
"file": "path/to/file.ts",
|
|
158
|
+
"line": 42,
|
|
159
|
+
"message": "Comment text",
|
|
160
|
+
"range": {
|
|
161
|
+
"start_line": 40,
|
|
162
|
+
"end_line": 45,
|
|
163
|
+
"start_character": 0,
|
|
164
|
+
"end_character": 80
|
|
165
|
+
},
|
|
166
|
+
"side": "REVISION",
|
|
167
|
+
"unresolved": true
|
|
168
|
+
}]
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### vote
|
|
172
|
+
|
|
173
|
+
Cast review votes.
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
ger vote <change-id> --code-review +1
|
|
177
|
+
ger vote <change-id> --code-review +2 --verified +1
|
|
178
|
+
ger vote <change-id> --label "Custom-Label" +1
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
| Option | Description |
|
|
182
|
+
|--------|-------------|
|
|
183
|
+
| `--code-review <score>` | Code-Review vote (-2 to +2) |
|
|
184
|
+
| `--verified <score>` | Verified vote (-1 to +1) |
|
|
185
|
+
| `--label <name> <score>` | Custom label vote |
|
|
186
|
+
| `-m <message>` | Optional message with vote |
|
|
187
|
+
|
|
188
|
+
### review
|
|
189
|
+
|
|
190
|
+
AI-powered code review (multi-stage).
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
ger review <change-id>
|
|
194
|
+
ger review <change-id> --tool claude # Specific AI tool
|
|
195
|
+
ger review # Auto-detect change from HEAD
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
| Option | Description |
|
|
199
|
+
|--------|-------------|
|
|
200
|
+
| `--tool <name>` | AI tool (claude, llm, opencode, gemini) |
|
|
201
|
+
| `--inline-only` | Only post inline comments |
|
|
202
|
+
| `--overall-only` | Only post overall review |
|
|
203
|
+
|
|
204
|
+
**Stages:**
|
|
205
|
+
1. **Inline**: Generate line-specific comments
|
|
206
|
+
2. **Overall**: Generate high-level assessment
|
|
207
|
+
|
|
208
|
+
### add-reviewer
|
|
209
|
+
|
|
210
|
+
Add reviewers or groups to a change.
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
ger add-reviewer <change-id> <user1> <user2>
|
|
214
|
+
ger add-reviewer <change-id> --group frontend-team
|
|
215
|
+
ger add-reviewer <change-id> user@example.com --cc
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
| Option | Description |
|
|
219
|
+
|--------|-------------|
|
|
220
|
+
| `--group <name>` | Add group as reviewer |
|
|
221
|
+
| `--cc` | Add as CC instead of reviewer |
|
|
222
|
+
|
|
223
|
+
### remove-reviewer
|
|
224
|
+
|
|
225
|
+
Remove reviewers from a change.
|
|
226
|
+
|
|
227
|
+
```bash
|
|
228
|
+
ger remove-reviewer user@example.com -c 12345
|
|
229
|
+
ger remove-reviewer user1@example.com user2@example.com -c 12345
|
|
230
|
+
ger remove-reviewer johndoe -c 12345 --notify none
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
Supports email addresses, usernames, or account IDs as reviewer identifiers.
|
|
234
|
+
|
|
235
|
+
| Option | Description |
|
|
236
|
+
|--------|-------------|
|
|
237
|
+
| `-c, --change <id>` | Change ID (required) |
|
|
238
|
+
| `--notify <level>` | Notification level (none, owner, owner_reviewers, all) |
|
|
239
|
+
| `--xml` | Output as XML |
|
|
240
|
+
|
|
241
|
+
## Git Operations
|
|
242
|
+
|
|
243
|
+
### checkout
|
|
244
|
+
|
|
245
|
+
Checkout a change locally.
|
|
246
|
+
|
|
247
|
+
```bash
|
|
248
|
+
ger checkout <change-id>
|
|
249
|
+
ger checkout <change-id> --patchset 3
|
|
250
|
+
ger checkout https://gerrit.example.com/c/project/+/12345
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
| Option | Description |
|
|
254
|
+
|--------|-------------|
|
|
255
|
+
| `--patchset <n>` | Specific patchset |
|
|
256
|
+
| `--branch <name>` | Custom branch name |
|
|
257
|
+
|
|
258
|
+
**Creates:** `review/12345` branch by default.
|
|
259
|
+
|
|
260
|
+
### push
|
|
261
|
+
|
|
262
|
+
Push changes for review.
|
|
263
|
+
|
|
264
|
+
```bash
|
|
265
|
+
ger push
|
|
266
|
+
ger push --reviewers alice bob
|
|
267
|
+
ger push --topic "feature-x"
|
|
268
|
+
ger push --wip
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
| Option | Description |
|
|
272
|
+
|--------|-------------|
|
|
273
|
+
| `--reviewers <users>` | Add reviewers |
|
|
274
|
+
| `--topic <name>` | Set topic |
|
|
275
|
+
| `--wip` | Push as work-in-progress |
|
|
276
|
+
| `--ready` | Mark ready for review |
|
|
277
|
+
| `--private` | Push as private |
|
|
278
|
+
|
|
279
|
+
**Auto-installs:** Gerrit commit-msg hook if missing.
|
|
280
|
+
|
|
281
|
+
### rebase
|
|
282
|
+
|
|
283
|
+
Rebase a change on target branch.
|
|
284
|
+
|
|
285
|
+
```bash
|
|
286
|
+
ger rebase <change-id>
|
|
287
|
+
ger rebase <change-id> --base <ref>
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
### submit
|
|
291
|
+
|
|
292
|
+
Submit a change for merge.
|
|
293
|
+
|
|
294
|
+
```bash
|
|
295
|
+
ger submit <change-id>
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
**Validates:** All submit requirements met.
|
|
299
|
+
|
|
300
|
+
## Group Management
|
|
301
|
+
|
|
302
|
+
### groups
|
|
303
|
+
|
|
304
|
+
List Gerrit groups.
|
|
305
|
+
|
|
306
|
+
```bash
|
|
307
|
+
ger groups
|
|
308
|
+
ger groups --pattern "team-*"
|
|
309
|
+
ger groups --owned
|
|
310
|
+
ger groups --project canvas-lms
|
|
311
|
+
ger groups --user john.doe
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
| Option | Description |
|
|
315
|
+
|--------|-------------|
|
|
316
|
+
| `--pattern <glob>` | Filter by name |
|
|
317
|
+
| `--owned` | Only groups you own |
|
|
318
|
+
| `--project <name>` | Groups with project access |
|
|
319
|
+
| `--user <name>` | Groups containing user |
|
|
320
|
+
| `--xml` | Output as XML |
|
|
321
|
+
|
|
322
|
+
### groups-show
|
|
323
|
+
|
|
324
|
+
Display group details.
|
|
325
|
+
|
|
326
|
+
```bash
|
|
327
|
+
ger groups-show <group-id>
|
|
328
|
+
ger groups-show frontend-team
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
**Output:** Name, description, owner, members, options.
|
|
332
|
+
|
|
333
|
+
### groups-members
|
|
334
|
+
|
|
335
|
+
List group members.
|
|
336
|
+
|
|
337
|
+
```bash
|
|
338
|
+
ger groups-members <group-id>
|
|
339
|
+
ger groups-members frontend-team --xml
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
## Utilities
|
|
343
|
+
|
|
344
|
+
### status
|
|
345
|
+
|
|
346
|
+
Check connection and authentication.
|
|
347
|
+
|
|
348
|
+
```bash
|
|
349
|
+
ger status
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
**Verifies:** API connectivity, credentials valid.
|
|
353
|
+
|
|
354
|
+
### setup / init
|
|
355
|
+
|
|
356
|
+
Configure credentials interactively.
|
|
357
|
+
|
|
358
|
+
```bash
|
|
359
|
+
ger setup
|
|
360
|
+
ger init # Alias
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
**Creates:** `~/.ger/config.json` with secure permissions.
|
|
364
|
+
|
|
365
|
+
### open
|
|
366
|
+
|
|
367
|
+
Open change in browser.
|
|
368
|
+
|
|
369
|
+
```bash
|
|
370
|
+
ger open <change-id>
|
|
371
|
+
ger open # Auto-detect from HEAD
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
### extract-url
|
|
375
|
+
|
|
376
|
+
Extract URLs from change messages.
|
|
377
|
+
|
|
378
|
+
```bash
|
|
379
|
+
ger extract-url <change-id>
|
|
380
|
+
ger extract-url <change-id> --pattern "jenkins"
|
|
381
|
+
ger extract-url <change-id> --include-comments
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
| Option | Description |
|
|
385
|
+
|--------|-------------|
|
|
386
|
+
| `--pattern <regex>` | Filter URLs |
|
|
387
|
+
| `--include-comments` | Include comment URLs |
|
|
388
|
+
| `--json` | Output as JSON |
|
|
389
|
+
|
|
390
|
+
**Use case:** Get Jenkins build URL for `jk` integration.
|
|
391
|
+
|
|
392
|
+
### build-status
|
|
393
|
+
|
|
394
|
+
Check CI build status.
|
|
395
|
+
|
|
396
|
+
```bash
|
|
397
|
+
ger build-status <change-id>
|
|
398
|
+
ger build-status <change-id> --watch
|
|
399
|
+
ger build-status <change-id> --watch --interval 30 --timeout 1800
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
| Option | Description |
|
|
403
|
+
|--------|-------------|
|
|
404
|
+
| `--watch` | Poll until terminal state |
|
|
405
|
+
| `--interval <sec>` | Poll interval (default: 30) |
|
|
406
|
+
| `--timeout <sec>` | Max wait time |
|
|
407
|
+
| `--exit-status` | Exit 1 on failure |
|
|
408
|
+
|
|
409
|
+
**States:** `pending`, `running`, `success`, `failure`, `not_found`
|
|
410
|
+
|
|
411
|
+
**Exit codes:**
|
|
412
|
+
- 0: Completed (any state)
|
|
413
|
+
- 1: Failure (with `--exit-status`)
|
|
414
|
+
- 2: Timeout
|
|
415
|
+
- 3: API error
|
|
416
|
+
|
|
417
|
+
## Global Options
|
|
418
|
+
|
|
419
|
+
Available on most commands:
|
|
420
|
+
|
|
421
|
+
| Option | Description |
|
|
422
|
+
|--------|-------------|
|
|
423
|
+
| `--xml` | Output as XML for LLM consumption |
|
|
424
|
+
| `--help` | Show command help |
|
|
425
|
+
| `--version` | Show version |
|