@jacobsandersen/glab-axi 0.1.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/LICENSE +21 -0
- package/README.md +139 -0
- package/dist/bin/glab-axi.d.ts +2 -0
- package/dist/bin/glab-axi.js +4 -0
- package/dist/bin/glab-axi.js.map +1 -0
- package/dist/src/args.d.ts +8 -0
- package/dist/src/args.js +84 -0
- package/dist/src/args.js.map +1 -0
- package/dist/src/body.d.ts +15 -0
- package/dist/src/body.js +132 -0
- package/dist/src/body.js.map +1 -0
- package/dist/src/cli.d.ts +9 -0
- package/dist/src/cli.js +124 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/commands/api.d.ts +3 -0
- package/dist/src/commands/api.js +155 -0
- package/dist/src/commands/api.js.map +1 -0
- package/dist/src/commands/home.d.ts +3 -0
- package/dist/src/commands/home.js +57 -0
- package/dist/src/commands/home.js.map +1 -0
- package/dist/src/commands/issue.d.ts +3 -0
- package/dist/src/commands/issue.js +364 -0
- package/dist/src/commands/issue.js.map +1 -0
- package/dist/src/commands/job.d.ts +3 -0
- package/dist/src/commands/job.js +119 -0
- package/dist/src/commands/job.js.map +1 -0
- package/dist/src/commands/label.d.ts +3 -0
- package/dist/src/commands/label.js +117 -0
- package/dist/src/commands/label.js.map +1 -0
- package/dist/src/commands/mr.d.ts +3 -0
- package/dist/src/commands/mr.js +365 -0
- package/dist/src/commands/mr.js.map +1 -0
- package/dist/src/commands/pipeline.d.ts +3 -0
- package/dist/src/commands/pipeline.js +168 -0
- package/dist/src/commands/pipeline.js.map +1 -0
- package/dist/src/commands/project.d.ts +3 -0
- package/dist/src/commands/project.js +138 -0
- package/dist/src/commands/project.js.map +1 -0
- package/dist/src/commands/release.d.ts +3 -0
- package/dist/src/commands/release.js +179 -0
- package/dist/src/commands/release.js.map +1 -0
- package/dist/src/commands/search.d.ts +3 -0
- package/dist/src/commands/search.js +266 -0
- package/dist/src/commands/search.js.map +1 -0
- package/dist/src/commands/setup.d.ts +2 -0
- package/dist/src/commands/setup.js +23 -0
- package/dist/src/commands/setup.js.map +1 -0
- package/dist/src/commands/variable.d.ts +3 -0
- package/dist/src/commands/variable.js +92 -0
- package/dist/src/commands/variable.js.map +1 -0
- package/dist/src/context.d.ts +7 -0
- package/dist/src/context.js +42 -0
- package/dist/src/context.js.map +1 -0
- package/dist/src/errors.d.ts +5 -0
- package/dist/src/errors.js +81 -0
- package/dist/src/errors.js.map +1 -0
- package/dist/src/fields.d.ts +10 -0
- package/dist/src/fields.js +26 -0
- package/dist/src/fields.js.map +1 -0
- package/dist/src/format.d.ts +8 -0
- package/dist/src/format.js +17 -0
- package/dist/src/format.js.map +1 -0
- package/dist/src/glab.d.ts +10 -0
- package/dist/src/glab.js +73 -0
- package/dist/src/glab.js.map +1 -0
- package/dist/src/secretValue.d.ts +1 -0
- package/dist/src/secretValue.js +33 -0
- package/dist/src/secretValue.js.map +1 -0
- package/dist/src/skill.d.ts +6 -0
- package/dist/src/skill.js +79 -0
- package/dist/src/skill.js.map +1 -0
- package/dist/src/stdin.d.ts +2 -0
- package/dist/src/stdin.js +15 -0
- package/dist/src/stdin.js.map +1 -0
- package/dist/src/suggestions.d.ts +11 -0
- package/dist/src/suggestions.js +262 -0
- package/dist/src/suggestions.js.map +1 -0
- package/dist/src/toon.d.ts +57 -0
- package/dist/src/toon.js +150 -0
- package/dist/src/toon.js.map +1 -0
- package/package.json +59 -0
- package/skills/glab-axi/SKILL.md +51 -0
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
import { glabJson } from "../glab.js";
|
|
2
|
+
import { AxiError } from "../errors.js";
|
|
3
|
+
import { getFlag, hasFlag } from "../args.js";
|
|
4
|
+
import { field, lower, pluck, relativeTime, custom, renderList, renderHelp, renderOutput, renderError, } from "../toon.js";
|
|
5
|
+
import { formatCountLine } from "../format.js";
|
|
6
|
+
import { getSuggestions } from "../suggestions.js";
|
|
7
|
+
const DEFAULT_SEARCH_LIMIT = "1000";
|
|
8
|
+
const DISPLAY_LIMIT = 30;
|
|
9
|
+
const SEARCH_VALUE_FLAGS = new Set([
|
|
10
|
+
"--repo",
|
|
11
|
+
"--owner",
|
|
12
|
+
"--state",
|
|
13
|
+
"--label",
|
|
14
|
+
"--author",
|
|
15
|
+
"--sort",
|
|
16
|
+
"--limit",
|
|
17
|
+
"--language",
|
|
18
|
+
"--scope",
|
|
19
|
+
"--group-id",
|
|
20
|
+
"--project-id",
|
|
21
|
+
]);
|
|
22
|
+
export const SEARCH_HELP = `usage: glab-axi search <type> <query> [flags]
|
|
23
|
+
types[4]:
|
|
24
|
+
issues, mrs, projects, blobs
|
|
25
|
+
flags{common}:
|
|
26
|
+
--repo, --owner, --state, --label, --author, --sort, --limit <n> (default 1000), --scope (all|title|description)
|
|
27
|
+
examples:
|
|
28
|
+
glab-axi search issues "login bug" --repo owner/name --state opened
|
|
29
|
+
glab-axi search mrs "feat" --author alice --sort updated
|
|
30
|
+
glab-axi search projects "my project"`;
|
|
31
|
+
const issueSchema = [
|
|
32
|
+
field("iid", "number"),
|
|
33
|
+
field("title"),
|
|
34
|
+
pluck("project", "path_with_namespace", "project"),
|
|
35
|
+
lower("state"),
|
|
36
|
+
pluck("author", "username", "author"),
|
|
37
|
+
relativeTime("created_at", "created"),
|
|
38
|
+
];
|
|
39
|
+
const mrSchema = [
|
|
40
|
+
field("iid", "number"),
|
|
41
|
+
field("title"),
|
|
42
|
+
pluck("project", "path_with_namespace", "project"),
|
|
43
|
+
lower("state"),
|
|
44
|
+
pluck("author", "username", "author"),
|
|
45
|
+
relativeTime("created_at", "created"),
|
|
46
|
+
];
|
|
47
|
+
const projectSchema = [
|
|
48
|
+
field("path_with_namespace", "name"),
|
|
49
|
+
field("description"),
|
|
50
|
+
field("star_count", "stars"),
|
|
51
|
+
field("forks_count", "forks"),
|
|
52
|
+
relativeTime("last_activity_at", "updated"),
|
|
53
|
+
];
|
|
54
|
+
const blobSchema = [
|
|
55
|
+
field("filename", "file"),
|
|
56
|
+
field("ref"),
|
|
57
|
+
pluck("project", "path_with_namespace", "project"),
|
|
58
|
+
custom("matches", (item) => {
|
|
59
|
+
const data = item.data;
|
|
60
|
+
if (!data)
|
|
61
|
+
return 0;
|
|
62
|
+
return data.length;
|
|
63
|
+
}),
|
|
64
|
+
];
|
|
65
|
+
function extractQuery(args) {
|
|
66
|
+
const positionals = [];
|
|
67
|
+
let i = 1;
|
|
68
|
+
while (i < args.length) {
|
|
69
|
+
if (args[i].startsWith("--")) {
|
|
70
|
+
i += args[i].includes("=") || !SEARCH_VALUE_FLAGS.has(args[i]) ? 1 : 2;
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
positionals.push(args[i]);
|
|
74
|
+
i++;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return positionals.join(" ");
|
|
78
|
+
}
|
|
79
|
+
function getSearchRepo(args, ctx) {
|
|
80
|
+
return getFlag(args, "--repo") ?? ctx?.nwo;
|
|
81
|
+
}
|
|
82
|
+
const COMMON_FILTER_FLAGS = [
|
|
83
|
+
"--repo",
|
|
84
|
+
"--owner",
|
|
85
|
+
"--state",
|
|
86
|
+
"--label",
|
|
87
|
+
"--author",
|
|
88
|
+
];
|
|
89
|
+
function hasSearchFilters(args, extraFlags = []) {
|
|
90
|
+
return [...COMMON_FILTER_FLAGS, ...extraFlags].some((f) => hasFlag(args, f) || getFlag(args, f) !== undefined);
|
|
91
|
+
}
|
|
92
|
+
async function searchIssues(args, ctx) {
|
|
93
|
+
const query = extractQuery(args);
|
|
94
|
+
if (!query && !hasSearchFilters(args))
|
|
95
|
+
throw new AxiError("Search query or filters required: glab-axi search issues <query> [--state opened] ...", "VALIDATION_ERROR");
|
|
96
|
+
const limit = getFlag(args, "--limit") ?? DEFAULT_SEARCH_LIMIT;
|
|
97
|
+
const ghArgs = [
|
|
98
|
+
"search",
|
|
99
|
+
"issues",
|
|
100
|
+
query,
|
|
101
|
+
"--json",
|
|
102
|
+
"iid,title,project,state,author,created_at",
|
|
103
|
+
"--per-page",
|
|
104
|
+
limit,
|
|
105
|
+
];
|
|
106
|
+
const repo = getSearchRepo(args, ctx);
|
|
107
|
+
if (repo)
|
|
108
|
+
ghArgs.push("--repo", repo);
|
|
109
|
+
const state = getFlag(args, "--state");
|
|
110
|
+
if (state)
|
|
111
|
+
ghArgs.push("--state", state);
|
|
112
|
+
const label = getFlag(args, "--label");
|
|
113
|
+
if (label)
|
|
114
|
+
ghArgs.push("--label", label);
|
|
115
|
+
const author = getFlag(args, "--author");
|
|
116
|
+
if (author)
|
|
117
|
+
ghArgs.push("--author", author);
|
|
118
|
+
const sort = getFlag(args, "--sort");
|
|
119
|
+
if (sort)
|
|
120
|
+
ghArgs.push("--sort", sort);
|
|
121
|
+
const scope = getFlag(args, "--scope");
|
|
122
|
+
if (scope)
|
|
123
|
+
ghArgs.push("--scope", scope);
|
|
124
|
+
const results = await glabJson(ghArgs);
|
|
125
|
+
const limitNum = parseInt(limit, 10);
|
|
126
|
+
const displayed = results.slice(0, DISPLAY_LIMIT);
|
|
127
|
+
const countLine = formatCountLine({
|
|
128
|
+
count: results.length,
|
|
129
|
+
limit: limitNum,
|
|
130
|
+
apiLimitHit: results.length === limitNum,
|
|
131
|
+
displayLimit: DISPLAY_LIMIT,
|
|
132
|
+
});
|
|
133
|
+
return renderOutput([
|
|
134
|
+
countLine,
|
|
135
|
+
renderList("issues", displayed, issueSchema),
|
|
136
|
+
renderHelp(getSuggestions({ domain: "search", action: "issues", repo: ctx })),
|
|
137
|
+
]);
|
|
138
|
+
}
|
|
139
|
+
async function searchMrs(args, ctx) {
|
|
140
|
+
const query = extractQuery(args);
|
|
141
|
+
if (!query && !hasSearchFilters(args))
|
|
142
|
+
throw new AxiError("Search query or filters required: glab-axi search mrs <query> [--state opened] ...", "VALIDATION_ERROR");
|
|
143
|
+
const limit = getFlag(args, "--limit") ?? DEFAULT_SEARCH_LIMIT;
|
|
144
|
+
const ghArgs = [
|
|
145
|
+
"search",
|
|
146
|
+
"mrs",
|
|
147
|
+
query,
|
|
148
|
+
"--json",
|
|
149
|
+
"iid,title,project,state,author,created_at",
|
|
150
|
+
"--per-page",
|
|
151
|
+
limit,
|
|
152
|
+
];
|
|
153
|
+
const repo = getSearchRepo(args, ctx);
|
|
154
|
+
if (repo)
|
|
155
|
+
ghArgs.push("--repo", repo);
|
|
156
|
+
const state = getFlag(args, "--state");
|
|
157
|
+
if (state)
|
|
158
|
+
ghArgs.push("--state", state);
|
|
159
|
+
const label = getFlag(args, "--label");
|
|
160
|
+
if (label)
|
|
161
|
+
ghArgs.push("--label", label);
|
|
162
|
+
const author = getFlag(args, "--author");
|
|
163
|
+
if (author)
|
|
164
|
+
ghArgs.push("--author", author);
|
|
165
|
+
const sort = getFlag(args, "--sort");
|
|
166
|
+
if (sort)
|
|
167
|
+
ghArgs.push("--sort", sort);
|
|
168
|
+
const scope = getFlag(args, "--scope");
|
|
169
|
+
if (scope)
|
|
170
|
+
ghArgs.push("--scope", scope);
|
|
171
|
+
const results = await glabJson(ghArgs);
|
|
172
|
+
const limitNum = parseInt(limit, 10);
|
|
173
|
+
const displayed = results.slice(0, DISPLAY_LIMIT);
|
|
174
|
+
const countLine = formatCountLine({
|
|
175
|
+
count: results.length,
|
|
176
|
+
limit: limitNum,
|
|
177
|
+
apiLimitHit: results.length === limitNum,
|
|
178
|
+
displayLimit: DISPLAY_LIMIT,
|
|
179
|
+
});
|
|
180
|
+
return renderOutput([
|
|
181
|
+
countLine,
|
|
182
|
+
renderList("merge_requests", displayed, mrSchema),
|
|
183
|
+
renderHelp(getSuggestions({ domain: "search", action: "mrs", repo: ctx })),
|
|
184
|
+
]);
|
|
185
|
+
}
|
|
186
|
+
async function searchProjects(args, ctx) {
|
|
187
|
+
const query = extractQuery(args);
|
|
188
|
+
if (!query && !hasSearchFilters(args))
|
|
189
|
+
throw new AxiError("Search query or filters required: glab-axi search projects <query>", "VALIDATION_ERROR");
|
|
190
|
+
const limit = getFlag(args, "--limit") ?? DEFAULT_SEARCH_LIMIT;
|
|
191
|
+
const ghArgs = [
|
|
192
|
+
"search",
|
|
193
|
+
"projects",
|
|
194
|
+
query,
|
|
195
|
+
"--json",
|
|
196
|
+
"path_with_namespace,description,star_count,forks_count,last_activity_at",
|
|
197
|
+
"--per-page",
|
|
198
|
+
limit,
|
|
199
|
+
];
|
|
200
|
+
const results = await glabJson(ghArgs);
|
|
201
|
+
const limitNum = parseInt(limit, 10);
|
|
202
|
+
const displayed = results.slice(0, DISPLAY_LIMIT);
|
|
203
|
+
const countLine = formatCountLine({
|
|
204
|
+
count: results.length,
|
|
205
|
+
limit: limitNum,
|
|
206
|
+
apiLimitHit: results.length === limitNum,
|
|
207
|
+
displayLimit: DISPLAY_LIMIT,
|
|
208
|
+
});
|
|
209
|
+
return renderOutput([
|
|
210
|
+
countLine,
|
|
211
|
+
renderList("projects", displayed, projectSchema),
|
|
212
|
+
renderHelp(getSuggestions({ domain: "search", action: "projects", repo: ctx })),
|
|
213
|
+
]);
|
|
214
|
+
}
|
|
215
|
+
async function searchBlobs(args, ctx) {
|
|
216
|
+
const query = extractQuery(args);
|
|
217
|
+
if (!query)
|
|
218
|
+
throw new AxiError("Search query is required: glab-axi search blobs <query>", "VALIDATION_ERROR");
|
|
219
|
+
const limit = getFlag(args, "--limit") ?? DEFAULT_SEARCH_LIMIT;
|
|
220
|
+
const ghArgs = [
|
|
221
|
+
"search",
|
|
222
|
+
"blobs",
|
|
223
|
+
query,
|
|
224
|
+
"--json",
|
|
225
|
+
"filename,ref,project,data",
|
|
226
|
+
"--per-page",
|
|
227
|
+
limit,
|
|
228
|
+
];
|
|
229
|
+
const repo = getSearchRepo(args, ctx);
|
|
230
|
+
if (repo)
|
|
231
|
+
ghArgs.push("--repo", repo);
|
|
232
|
+
const results = await glabJson(ghArgs);
|
|
233
|
+
const limitNum = parseInt(limit, 10);
|
|
234
|
+
const displayed = results.slice(0, DISPLAY_LIMIT);
|
|
235
|
+
const countLine = formatCountLine({
|
|
236
|
+
count: results.length,
|
|
237
|
+
limit: limitNum,
|
|
238
|
+
apiLimitHit: results.length === limitNum,
|
|
239
|
+
displayLimit: DISPLAY_LIMIT,
|
|
240
|
+
});
|
|
241
|
+
return renderOutput([
|
|
242
|
+
countLine,
|
|
243
|
+
renderList("results", displayed, blobSchema),
|
|
244
|
+
renderHelp(getSuggestions({ domain: "search", action: "blobs", repo: ctx })),
|
|
245
|
+
]);
|
|
246
|
+
}
|
|
247
|
+
export async function searchCommand(args, ctx) {
|
|
248
|
+
const sub = args[0];
|
|
249
|
+
if (sub === "--help" || sub === undefined)
|
|
250
|
+
return SEARCH_HELP;
|
|
251
|
+
switch (sub) {
|
|
252
|
+
case "issues":
|
|
253
|
+
return searchIssues(args, ctx);
|
|
254
|
+
case "mrs":
|
|
255
|
+
return searchMrs(args, ctx);
|
|
256
|
+
case "projects":
|
|
257
|
+
return searchProjects(args, ctx);
|
|
258
|
+
case "blobs":
|
|
259
|
+
return searchBlobs(args, ctx);
|
|
260
|
+
default:
|
|
261
|
+
return renderError(`Unknown search type: ${sub}`, "VALIDATION_ERROR", [
|
|
262
|
+
"Available types: issues, mrs, projects, blobs",
|
|
263
|
+
]);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
//# sourceMappingURL=search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/commands/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { AxiError, installSessionStartHooks } from "axi-sdk-js";
|
|
2
|
+
import { renderHelp, renderOutput } from "../toon.js";
|
|
3
|
+
export const SETUP_HELP = `usage: glab-axi setup hooks
|
|
4
|
+
Install or repair agent SessionStart hooks for glab-axi ambient context.
|
|
5
|
+
|
|
6
|
+
examples:
|
|
7
|
+
glab-axi setup hooks
|
|
8
|
+
`;
|
|
9
|
+
export async function setupCommand(args) {
|
|
10
|
+
if (args.length !== 1 || args[0] !== "hooks") {
|
|
11
|
+
throw new AxiError("Unknown setup action", "VALIDATION_ERROR", [
|
|
12
|
+
"Run `glab-axi setup hooks`",
|
|
13
|
+
]);
|
|
14
|
+
}
|
|
15
|
+
installSessionStartHooks();
|
|
16
|
+
return renderOutput([
|
|
17
|
+
"hooks:\n status: installed\n integrations: Claude Code, Codex, OpenCode",
|
|
18
|
+
renderHelp([
|
|
19
|
+
"Restart your agent session to receive glab-axi ambient context",
|
|
20
|
+
]),
|
|
21
|
+
]);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/commands/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEtD,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;CAKzB,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAc;IAC/C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;QAC7C,MAAM,IAAI,QAAQ,CAAC,sBAAsB,EAAE,kBAAkB,EAAE;YAC7D,4BAA4B;SAC7B,CAAC,CAAC;IACL,CAAC;IAED,wBAAwB,EAAE,CAAC;IAE3B,OAAO,YAAY,CAAC;QAClB,2EAA2E;QAC3E,UAAU,CAAC;YACT,gEAAgE;SACjE,CAAC;KACH,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { RepoContext } from "../context.js";
|
|
2
|
+
export declare const VARIABLE_HELP = "usage: glab-axi variable <subcommand> [flags]\nsubcommands[3]:\n list, set <name>, delete <name>\nflags{set}:\n --body/-b <value> (reads from stdin if omitted)\nexamples:\n glab-axi variable list\n glab-axi variable set NODE_ENV --body production\n echo -n \"production\" | glab-axi variable set NODE_ENV\n glab-axi variable delete NODE_ENV";
|
|
3
|
+
export declare function variableCommand(args: string[], ctx?: RepoContext): Promise<string>;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { encode } from "@toon-format/toon";
|
|
2
|
+
import { glabJson, glabExec, glabExecWithStdin } from "../glab.js";
|
|
3
|
+
import { AxiError } from "../errors.js";
|
|
4
|
+
import { takeFlag } from "../args.js";
|
|
5
|
+
import { field, relativeTime, renderList, renderHelp, renderOutput, renderError, } from "../toon.js";
|
|
6
|
+
import { getSuggestions } from "../suggestions.js";
|
|
7
|
+
import { resolveValue } from "../secretValue.js";
|
|
8
|
+
export const VARIABLE_HELP = `usage: glab-axi variable <subcommand> [flags]
|
|
9
|
+
subcommands[3]:
|
|
10
|
+
list, set <name>, delete <name>
|
|
11
|
+
flags{set}:
|
|
12
|
+
--body/-b <value> (reads from stdin if omitted)
|
|
13
|
+
examples:
|
|
14
|
+
glab-axi variable list
|
|
15
|
+
glab-axi variable set NODE_ENV --body production
|
|
16
|
+
echo -n "production" | glab-axi variable set NODE_ENV
|
|
17
|
+
glab-axi variable delete NODE_ENV`;
|
|
18
|
+
const listSchema = [
|
|
19
|
+
field("key", "name"),
|
|
20
|
+
field("value"),
|
|
21
|
+
relativeTime("updated_at", "updated"),
|
|
22
|
+
];
|
|
23
|
+
async function listVariables(_args, ctx) {
|
|
24
|
+
const variables = await glabJson(["variable", "list", "--json", "key,value,updated_at"], ctx);
|
|
25
|
+
const isEmpty = variables.length === 0;
|
|
26
|
+
const suggestions = getSuggestions({
|
|
27
|
+
domain: "variable",
|
|
28
|
+
action: "list",
|
|
29
|
+
isEmpty,
|
|
30
|
+
repo: ctx,
|
|
31
|
+
});
|
|
32
|
+
return renderOutput([
|
|
33
|
+
`count: ${variables.length}`,
|
|
34
|
+
renderList("variables", variables, listSchema),
|
|
35
|
+
renderHelp(suggestions),
|
|
36
|
+
]);
|
|
37
|
+
}
|
|
38
|
+
async function setVariable(args, ctx) {
|
|
39
|
+
const remaining = args.slice(1);
|
|
40
|
+
const flagValue = takeFlag(remaining, "--body") ?? takeFlag(remaining, "-b");
|
|
41
|
+
const positionals = remaining.filter((a) => !a.startsWith("-"));
|
|
42
|
+
const name = positionals[0];
|
|
43
|
+
if (!name) {
|
|
44
|
+
throw new AxiError("Variable name is required: glab-axi variable set <name>", "VALIDATION_ERROR");
|
|
45
|
+
}
|
|
46
|
+
const value = await resolveValue(flagValue, "variable");
|
|
47
|
+
await glabExecWithStdin(["variable", "set", name], value, ctx);
|
|
48
|
+
return renderOutput([
|
|
49
|
+
encode({ set: "ok", variable: name }),
|
|
50
|
+
renderHelp(getSuggestions({
|
|
51
|
+
domain: "variable",
|
|
52
|
+
action: "set",
|
|
53
|
+
id: name,
|
|
54
|
+
repo: ctx,
|
|
55
|
+
})),
|
|
56
|
+
]);
|
|
57
|
+
}
|
|
58
|
+
async function deleteVariable(args, ctx) {
|
|
59
|
+
const positionals = args.filter((a) => !a.startsWith("-"));
|
|
60
|
+
const name = positionals[1];
|
|
61
|
+
if (!name) {
|
|
62
|
+
throw new AxiError("Variable name is required: glab-axi variable delete <name>", "VALIDATION_ERROR");
|
|
63
|
+
}
|
|
64
|
+
await glabExec(["variable", "delete", name], ctx);
|
|
65
|
+
return renderOutput([
|
|
66
|
+
encode({ delete: "ok", variable: name }),
|
|
67
|
+
renderHelp(getSuggestions({
|
|
68
|
+
domain: "variable",
|
|
69
|
+
action: "delete",
|
|
70
|
+
id: name,
|
|
71
|
+
repo: ctx,
|
|
72
|
+
})),
|
|
73
|
+
]);
|
|
74
|
+
}
|
|
75
|
+
export async function variableCommand(args, ctx) {
|
|
76
|
+
const sub = args[0];
|
|
77
|
+
if (sub === "--help" || sub === undefined)
|
|
78
|
+
return VARIABLE_HELP;
|
|
79
|
+
switch (sub) {
|
|
80
|
+
case "list":
|
|
81
|
+
return listVariables(args, ctx);
|
|
82
|
+
case "set":
|
|
83
|
+
return setVariable(args, ctx);
|
|
84
|
+
case "delete":
|
|
85
|
+
return deleteVariable(args, ctx);
|
|
86
|
+
default:
|
|
87
|
+
return renderError(`Unknown subcommand: ${sub}`, "VALIDATION_ERROR", [
|
|
88
|
+
"Available subcommands: list, set, delete",
|
|
89
|
+
]);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=variable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variable.js","sourceRoot":"","sources":["../../../src/commands/variable.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { execFileSync } from "node:child_process";
|
|
2
|
+
export function resolveRepo(flagValue) {
|
|
3
|
+
if (flagValue) {
|
|
4
|
+
return parseNwo(flagValue, "flag");
|
|
5
|
+
}
|
|
6
|
+
const envRepo = process.env["GLAB_REPO"];
|
|
7
|
+
if (envRepo) {
|
|
8
|
+
return parseNwo(envRepo, "env");
|
|
9
|
+
}
|
|
10
|
+
try {
|
|
11
|
+
const url = execFileSync("git", ["remote", "get-url", "origin"], {
|
|
12
|
+
encoding: "utf-8",
|
|
13
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
14
|
+
}).trim();
|
|
15
|
+
return parseRemoteUrl(url);
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function parseNwo(nwo, source) {
|
|
22
|
+
const parts = nwo.split("/");
|
|
23
|
+
if (parts.length !== 2 || !parts[0] || !parts[1])
|
|
24
|
+
return undefined;
|
|
25
|
+
return { owner: parts[0], name: parts[1], nwo, source };
|
|
26
|
+
}
|
|
27
|
+
function parseRemoteUrl(url) {
|
|
28
|
+
const sshMatch = url.match(/gitlab\.com[:/]([^/]+)\/([^/]+?)(?:\.git)?$/);
|
|
29
|
+
if (sshMatch) {
|
|
30
|
+
const owner = sshMatch[1];
|
|
31
|
+
const name = sshMatch[2];
|
|
32
|
+
return { owner, name, nwo: `${owner}/${name}`, source: "git" };
|
|
33
|
+
}
|
|
34
|
+
const httpsMatch = url.match(/gitlab\.com\/([^/]+)\/([^/]+?)(?:\.git)?$/);
|
|
35
|
+
if (httpsMatch) {
|
|
36
|
+
const owner = httpsMatch[1];
|
|
37
|
+
const name = httpsMatch[2];
|
|
38
|
+
return { owner, name, nwo: `${owner}/${name}`, source: "git" };
|
|
39
|
+
}
|
|
40
|
+
return undefined;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AASlD,MAAM,UAAU,WAAW,CAAC,SAAkB;IAC5C,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE;YAC/D,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;SACpC,CAAC,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CACf,GAAW,EACX,MAAsB;IAEtB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACnE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AAC1D,CAAC;AAED,SAAS,cAAc,CAAC,GAAW;IACjC,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAC1E,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACzB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,KAAK,IAAI,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACjE,CAAC;IACD,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC1E,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC3B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,KAAK,IAAI,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACjE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { AxiError, exitCodeForError } from "axi-sdk-js";
|
|
2
|
+
export type ErrorCode = "REPO_NOT_FOUND" | "NOT_FOUND" | "AUTH_REQUIRED" | "FORBIDDEN" | "VALIDATION_ERROR" | "RATE_LIMITED" | "GLAB_NOT_INSTALLED" | "UNKNOWN";
|
|
3
|
+
export { AxiError, exitCodeForError };
|
|
4
|
+
export declare function mapGlabError(stderr: string, exitCode: number): AxiError;
|
|
5
|
+
export declare function glabNotInstalledError(): AxiError;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { AxiError, exitCodeForError } from "axi-sdk-js";
|
|
2
|
+
export { AxiError, exitCodeForError };
|
|
3
|
+
const patterns = [
|
|
4
|
+
{
|
|
5
|
+
pattern: /Project .* not found/i,
|
|
6
|
+
code: "REPO_NOT_FOUND",
|
|
7
|
+
message: (m) => `Project "${m[0]}" not found`,
|
|
8
|
+
suggestions: () => ["Run `glab-axi project list` to see your projects"],
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
pattern: /Merge request (\d+) not found/i,
|
|
12
|
+
code: "NOT_FOUND",
|
|
13
|
+
message: (m) => `Merge request !${m[1]} does not exist`,
|
|
14
|
+
suggestions: () => [],
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
pattern: /issue (\d+) not found/i,
|
|
18
|
+
code: "NOT_FOUND",
|
|
19
|
+
message: (m) => `Issue #${m[1]} does not exist`,
|
|
20
|
+
suggestions: () => [],
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
pattern: /release with tag "([^"]+)" not found/i,
|
|
24
|
+
code: "NOT_FOUND",
|
|
25
|
+
message: (m) => `Release "${m[1]}" not found`,
|
|
26
|
+
suggestions: () => [
|
|
27
|
+
`Run \`glab-axi release list\` to see available releases`,
|
|
28
|
+
],
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
pattern: /pipeline (\d+) not found/i,
|
|
32
|
+
code: "NOT_FOUND",
|
|
33
|
+
message: (m) => `Pipeline ${m[1]} not found`,
|
|
34
|
+
suggestions: () => [
|
|
35
|
+
`Run \`glab-axi pipeline list\` to see recent pipelines`,
|
|
36
|
+
],
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
pattern: /job (\d+) not found/i,
|
|
40
|
+
code: "NOT_FOUND",
|
|
41
|
+
message: (m) => `Job ${m[1]} not found`,
|
|
42
|
+
suggestions: () => [`Run \`glab-axi job list\` to see recent jobs`],
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
pattern: /glab auth login/i,
|
|
46
|
+
code: "AUTH_REQUIRED",
|
|
47
|
+
message: () => "GitLab auth required — run `glab auth login` first",
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
pattern: /HTTP 403/,
|
|
51
|
+
code: "FORBIDDEN",
|
|
52
|
+
message: () => "Insufficient permissions for this action",
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
pattern: /HTTP 422/,
|
|
56
|
+
code: "VALIDATION_ERROR",
|
|
57
|
+
message: (_m, stderr) => {
|
|
58
|
+
const msgMatch = stderr.match(/"message"\s*:\s*"([^"]+)"/);
|
|
59
|
+
return msgMatch ? msgMatch[1] : "Validation error";
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
];
|
|
63
|
+
function firstErrorLine(stderr) {
|
|
64
|
+
return stderr.trim().split("\n")[0] ?? "";
|
|
65
|
+
}
|
|
66
|
+
export function mapGlabError(stderr, exitCode) {
|
|
67
|
+
for (const { pattern, code, message, suggestions } of patterns) {
|
|
68
|
+
const match = stderr.match(pattern);
|
|
69
|
+
if (match) {
|
|
70
|
+
return new AxiError(message(match, stderr), code, suggestions?.(match) ?? []);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
if (/not found/i.test(stderr)) {
|
|
74
|
+
return new AxiError(firstErrorLine(stderr), "NOT_FOUND");
|
|
75
|
+
}
|
|
76
|
+
return new AxiError(firstErrorLine(stderr) || `glab exited with code ${exitCode}`, "UNKNOWN");
|
|
77
|
+
}
|
|
78
|
+
export function glabNotInstalledError() {
|
|
79
|
+
return new AxiError("glab CLI is not installed — see https://gitlab.com/gitlab-org/cli", "GLAB_NOT_INSTALLED");
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { FieldDef } from "./toon.js";
|
|
2
|
+
export interface ExtraFieldSpec {
|
|
3
|
+
jsonKey: string;
|
|
4
|
+
def: FieldDef;
|
|
5
|
+
}
|
|
6
|
+
export interface ParseFieldsResult {
|
|
7
|
+
extraDefs: FieldDef[];
|
|
8
|
+
extraJsonKeys: string[];
|
|
9
|
+
}
|
|
10
|
+
export declare function parseFields(fieldsArg: string | undefined, available: Record<string, ExtraFieldSpec>): ParseFieldsResult;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { AxiError } from "./errors.js";
|
|
2
|
+
export function parseFields(fieldsArg, available) {
|
|
3
|
+
if (fieldsArg === undefined) {
|
|
4
|
+
return { extraDefs: [], extraJsonKeys: [] };
|
|
5
|
+
}
|
|
6
|
+
const requested = [
|
|
7
|
+
...new Set(fieldsArg
|
|
8
|
+
.split(",")
|
|
9
|
+
.map((f) => f.trim())
|
|
10
|
+
.filter(Boolean)),
|
|
11
|
+
];
|
|
12
|
+
const unknown = requested.filter((f) => !(f in available));
|
|
13
|
+
if (unknown.length > 0) {
|
|
14
|
+
const availableNames = Object.keys(available).sort().join(", ");
|
|
15
|
+
throw new AxiError(`Unknown field(s): ${unknown.join(", ")}. Available: ${availableNames}`, "VALIDATION_ERROR");
|
|
16
|
+
}
|
|
17
|
+
const extraDefs = [];
|
|
18
|
+
const extraJsonKeys = [];
|
|
19
|
+
for (const name of requested) {
|
|
20
|
+
const spec = available[name];
|
|
21
|
+
extraDefs.push(spec.def);
|
|
22
|
+
extraJsonKeys.push(spec.jsonKey);
|
|
23
|
+
}
|
|
24
|
+
return { extraDefs, extraJsonKeys };
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=fields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAavC,MAAM,UAAU,WAAW,CACzB,SAA6B,EAC7B,SAAyC;IAEzC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;IAC9C,CAAC;IAED,MAAM,SAAS,GAAG;QAChB,GAAG,IAAI,GAAG,CACR,SAAS;aACN,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,OAAO,CAAC,CACnB;KACF,CAAC;IAEF,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC;IAC3D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChE,MAAM,IAAI,QAAQ,CAChB,qBAAqB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,cAAc,EAAE,EACvE,kBAAkB,CACnB,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAe,EAAE,CAAC;IACjC,MAAM,aAAa,GAAa,EAAE,CAAC;IAEnC,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC7B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export function formatCountLine(opts) {
|
|
2
|
+
const { count, limit, totalCount, apiLimitHit, displayLimit } = opts;
|
|
3
|
+
if (apiLimitHit) {
|
|
4
|
+
return `count: ${count}+ (GitLab search API limit reached)`;
|
|
5
|
+
}
|
|
6
|
+
if (totalCount !== undefined && totalCount !== null) {
|
|
7
|
+
return `count: ${count} of ${totalCount} total`;
|
|
8
|
+
}
|
|
9
|
+
if (displayLimit !== undefined && count > displayLimit) {
|
|
10
|
+
return `count: ${count} (showing first ${displayLimit})`;
|
|
11
|
+
}
|
|
12
|
+
if (limit !== undefined && count === limit && count > 0) {
|
|
13
|
+
return `count: ${count} (showing first ${count})`;
|
|
14
|
+
}
|
|
15
|
+
return `count: ${count}`;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/format.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,eAAe,CAAC,IAAsB;IACpD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAErE,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,UAAU,KAAK,qCAAqC,CAAC;IAC9D,CAAC;IAED,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACpD,OAAO,UAAU,KAAK,OAAO,UAAU,QAAQ,CAAC;IAClD,CAAC;IAED,IAAI,YAAY,KAAK,SAAS,IAAI,KAAK,GAAG,YAAY,EAAE,CAAC;QACvD,OAAO,UAAU,KAAK,mBAAmB,YAAY,GAAG,CAAC;IAC3D,CAAC;IAED,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACxD,OAAO,UAAU,KAAK,mBAAmB,KAAK,GAAG,CAAC;IACpD,CAAC;IAED,OAAO,UAAU,KAAK,EAAE,CAAC;AAC3B,CAAC"}
|