@quantod/qq 0.2.2 → 0.2.4
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/dist/commands.d.ts +2 -2
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +17 -7
- package/dist/commands.js.map +1 -1
- package/dist/index.js +35 -18
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/commands.ts +17 -8
- package/src/index.ts +37 -20
package/dist/commands.d.ts
CHANGED
|
@@ -28,7 +28,7 @@ export interface PushOptions {
|
|
|
28
28
|
priority?: number;
|
|
29
29
|
}
|
|
30
30
|
export declare function push(pipeline: string, stage: string, id?: string, { payload, priority }?: PushOptions): string;
|
|
31
|
-
export declare function claim(pipeline: string, stage: string): Item | null;
|
|
31
|
+
export declare function claim(pipeline: string, stage: string, id?: string): Item | null;
|
|
32
32
|
export interface ReleaseOptions {
|
|
33
33
|
target?: string;
|
|
34
34
|
payload?: string;
|
|
@@ -41,5 +41,5 @@ export declare function stats(pipeline?: string): Record<string, Record<string,
|
|
|
41
41
|
total: number;
|
|
42
42
|
claimed: number;
|
|
43
43
|
}>>;
|
|
44
|
-
export declare function
|
|
44
|
+
export declare function unstick(pipeline: string, stage?: string, filters?: FilterOptions): number;
|
|
45
45
|
//# sourceMappingURL=commands.d.ts.map
|
package/dist/commands.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAIhC,qBAAa,OAAQ,SAAQ,KAAK;gBACpB,OAAO,EAAE,MAAM;CAI5B;AAED,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA+BD,wBAAgB,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAmBxD;AAKD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAOrD;AAID,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAc,EAAE,GAAE,WAAgB,GAAG,MAAM,CAiBxH;AAID,wBAAgB,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAIhC,qBAAa,OAAQ,SAAQ,KAAK;gBACpB,OAAO,EAAE,MAAM;CAI5B;AAED,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA+BD,wBAAgB,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAmBxD;AAKD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAOrD;AAID,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAc,EAAE,GAAE,WAAgB,GAAG,MAAM,CAiBxH;AAID,wBAAgB,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CA6B/E;AAID,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAE,cAAmB,GAAG,IAAI,CA6BvH;AA6BD,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAM,EAAE,OAAO,GAAE,aAAkB,EAAE,cAAc,UAAO,GAAG,IAAI,EAAE,CA4BnH;AAID,wBAAgB,KAAK,CAAC,QAAQ,SAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAkBxG;AAID,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,MAAM,CAa1F"}
|
package/dist/commands.js
CHANGED
|
@@ -41,7 +41,7 @@ exports.claim = claim;
|
|
|
41
41
|
exports.release = release;
|
|
42
42
|
exports.batchRead = batchRead;
|
|
43
43
|
exports.stats = stats;
|
|
44
|
-
exports.
|
|
44
|
+
exports.unstick = unstick;
|
|
45
45
|
const node_crypto_1 = require("node:crypto");
|
|
46
46
|
const db_js_1 = require("./db.js");
|
|
47
47
|
exports.yaml = __importStar(require("js-yaml"));
|
|
@@ -127,13 +127,23 @@ function push(pipeline, stage, id, { payload, priority = 0.0 } = {}) {
|
|
|
127
127
|
}
|
|
128
128
|
}
|
|
129
129
|
// ── claim ─────────────────────────────────────────────────────────────────────
|
|
130
|
-
function claim(pipeline, stage) {
|
|
130
|
+
function claim(pipeline, stage, id) {
|
|
131
131
|
const db = (0, db_js_1.openDb)();
|
|
132
132
|
try {
|
|
133
133
|
return (0, db_js_1.inTransaction)(db, () => {
|
|
134
|
-
|
|
135
|
-
if (
|
|
136
|
-
|
|
134
|
+
let row;
|
|
135
|
+
if (id !== undefined) {
|
|
136
|
+
row = db.prepare('SELECT * FROM messages WHERE pipeline = ? AND id = ?').get(pipeline, id);
|
|
137
|
+
if (!row)
|
|
138
|
+
throw new QQError(`item not found: ${id}`);
|
|
139
|
+
if (row.claimed)
|
|
140
|
+
throw new QQError(`item already claimed: ${id}`);
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
row = db.prepare('SELECT * FROM messages WHERE pipeline = ? AND subqueue LIKE ? AND claimed = 0 ORDER BY priority DESC, seq ASC LIMIT 1').get(pipeline, toGlob(stage));
|
|
144
|
+
if (!row)
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
137
147
|
const now = Date.now();
|
|
138
148
|
db.prepare('UPDATE messages SET claimed = 1, last_modified = ? WHERE pipeline = ? AND id = ?').run(now, pipeline, row.id);
|
|
139
149
|
return rowToItem({ ...row, claimed: 1 }, true);
|
|
@@ -243,8 +253,8 @@ function stats(pipeline = '*') {
|
|
|
243
253
|
db.close();
|
|
244
254
|
}
|
|
245
255
|
}
|
|
246
|
-
// ──
|
|
247
|
-
function
|
|
256
|
+
// ── unstick ───────────────────────────────────────────────────────────────────
|
|
257
|
+
function unstick(pipeline, stage = '*', filters = {}) {
|
|
248
258
|
const db = (0, db_js_1.openDb)();
|
|
249
259
|
try {
|
|
250
260
|
return (0, db_js_1.inTransaction)(db, () => {
|
package/dist/commands.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiEA,oCAmBC;AAKD,wCAOC;AASD,oBAiBC;AAID,
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -16,8 +16,13 @@ function fail(message) {
|
|
|
16
16
|
function readStdin() {
|
|
17
17
|
if (process.stdin.isTTY)
|
|
18
18
|
return null;
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
try {
|
|
20
|
+
const raw = (0, node_fs_1.readFileSync)(0, 'utf8').trim();
|
|
21
|
+
return raw || null;
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
21
26
|
}
|
|
22
27
|
function parseIntArg(value) {
|
|
23
28
|
const n = parseInt(value, 10);
|
|
@@ -31,6 +36,12 @@ function parseFloatArg(value) {
|
|
|
31
36
|
throw new commander_1.InvalidArgumentError('expected a number');
|
|
32
37
|
return n;
|
|
33
38
|
}
|
|
39
|
+
function parsePath(arg) {
|
|
40
|
+
const slash = arg.indexOf('/');
|
|
41
|
+
if (slash === -1)
|
|
42
|
+
return { pipeline: arg };
|
|
43
|
+
return { pipeline: arg.slice(0, slash), stage: arg.slice(slash + 1) };
|
|
44
|
+
}
|
|
34
45
|
function collectFilters(opts) {
|
|
35
46
|
const f = {};
|
|
36
47
|
if (opts['claimed'] !== undefined)
|
|
@@ -90,10 +101,13 @@ program
|
|
|
90
101
|
}
|
|
91
102
|
});
|
|
92
103
|
program
|
|
93
|
-
.command('push <
|
|
104
|
+
.command('push <path> [id]')
|
|
94
105
|
.option('--priority <n>', 'item priority (higher = claimed first)', parseFloatArg, 0.0)
|
|
95
|
-
.action((
|
|
106
|
+
.action((path, id, opts) => {
|
|
96
107
|
try {
|
|
108
|
+
const { pipeline, stage } = parsePath(path);
|
|
109
|
+
if (!stage)
|
|
110
|
+
fail('expected pipeline/stage, got: ' + path);
|
|
97
111
|
const o = { payload: readStdin() ?? undefined, priority: opts.priority };
|
|
98
112
|
out({ id: (0, commands_js_1.push)(pipeline, stage, id, o) });
|
|
99
113
|
}
|
|
@@ -102,10 +116,11 @@ program
|
|
|
102
116
|
}
|
|
103
117
|
});
|
|
104
118
|
program
|
|
105
|
-
.command('claim <
|
|
106
|
-
.action((
|
|
119
|
+
.command('claim <path> [id]')
|
|
120
|
+
.action((path, id) => {
|
|
107
121
|
try {
|
|
108
|
-
const
|
|
122
|
+
const { pipeline, stage = '*' } = parsePath(path);
|
|
123
|
+
const item = (0, commands_js_1.claim)(pipeline, stage, id);
|
|
109
124
|
if (item === null) {
|
|
110
125
|
process.stdout.write('No more items to claim\n');
|
|
111
126
|
process.exit(2);
|
|
@@ -113,32 +128,33 @@ program
|
|
|
113
128
|
out(item);
|
|
114
129
|
}
|
|
115
130
|
catch (e) {
|
|
116
|
-
|
|
131
|
+
e instanceof commands_js_1.QQError ? fail(e.message) : fail(String(e));
|
|
117
132
|
}
|
|
118
133
|
});
|
|
119
134
|
program
|
|
120
|
-
.command('release <
|
|
121
|
-
.option('--target <stage>')
|
|
135
|
+
.command('release <path> <id>')
|
|
122
136
|
.option('--replace')
|
|
123
137
|
.option('--priority <n>', 'update item priority', parseFloatArg)
|
|
124
|
-
.action((
|
|
138
|
+
.action((path, id, opts) => {
|
|
125
139
|
try {
|
|
140
|
+
const { pipeline, stage } = parsePath(path);
|
|
126
141
|
const payload = readStdin() ?? undefined;
|
|
127
|
-
(0, commands_js_1.release)(pipeline, id, { target:
|
|
142
|
+
(0, commands_js_1.release)(pipeline, id, { target: stage, payload, replace: opts.replace, priority: opts.priority });
|
|
128
143
|
out({ ok: true });
|
|
129
144
|
}
|
|
130
145
|
catch (e) {
|
|
131
146
|
e instanceof commands_js_1.QQError ? fail(e.message) : fail(String(e));
|
|
132
147
|
}
|
|
133
148
|
});
|
|
134
|
-
addFilterOptions(program.command('batch-read <
|
|
149
|
+
addFilterOptions(program.command('batch-read <path>'))
|
|
135
150
|
.option('--payload', 'include payload in output')
|
|
136
|
-
.action((
|
|
151
|
+
.action((path, opts) => {
|
|
137
152
|
try {
|
|
153
|
+
const { pipeline, stage = '*' } = parsePath(path);
|
|
138
154
|
const filters = collectFilters(opts);
|
|
139
155
|
if (filters.claimed === undefined)
|
|
140
156
|
filters.claimed = false;
|
|
141
|
-
out((0, commands_js_1.batchRead)(pipeline, stage
|
|
157
|
+
out((0, commands_js_1.batchRead)(pipeline, stage, filters, opts.payload ?? false));
|
|
142
158
|
}
|
|
143
159
|
catch (e) {
|
|
144
160
|
fail(e instanceof Error ? e.message : String(e));
|
|
@@ -154,10 +170,11 @@ program
|
|
|
154
170
|
fail(e instanceof Error ? e.message : String(e));
|
|
155
171
|
}
|
|
156
172
|
});
|
|
157
|
-
addReapFilterOptions(program.command('
|
|
158
|
-
.action((
|
|
173
|
+
addReapFilterOptions(program.command('unstick <path>'))
|
|
174
|
+
.action((path, opts) => {
|
|
159
175
|
try {
|
|
160
|
-
|
|
176
|
+
const { pipeline, stage = '*' } = parsePath(path);
|
|
177
|
+
out({ unstuck: (0, commands_js_1.unstick)(pipeline, stage, collectFilters(opts)) });
|
|
161
178
|
}
|
|
162
179
|
catch (e) {
|
|
163
180
|
fail(e instanceof Error ? e.message : String(e));
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,yCAA0D;AAC1D,2DAA+C;AAC/C,qCAAuC;AACvC,yCAA0C;AAC1C,qCAA+B;AAC/B,+CAIuB;AAEvB,SAAS,GAAG,CAAC,IAAa;IACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAA,cAAI,EAAC,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,IAAI,CAAC,OAAe;IAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,OAAO,IAAI,CAAC,CAAC;IAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,SAAS;IAChB,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,GAAG,GAAG,IAAA,sBAAY,EAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/commands.ts
CHANGED
|
@@ -124,15 +124,24 @@ export function push(pipeline: string, stage: string, id?: string, { payload, pr
|
|
|
124
124
|
|
|
125
125
|
// ── claim ─────────────────────────────────────────────────────────────────────
|
|
126
126
|
|
|
127
|
-
export function claim(pipeline: string, stage: string): Item | null {
|
|
127
|
+
export function claim(pipeline: string, stage: string, id?: string): Item | null {
|
|
128
128
|
const db = openDb();
|
|
129
129
|
try {
|
|
130
130
|
return inTransaction(db, () => {
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
131
|
+
let row: Record<string, unknown> | undefined;
|
|
132
|
+
|
|
133
|
+
if (id !== undefined) {
|
|
134
|
+
row = db.prepare(
|
|
135
|
+
'SELECT * FROM messages WHERE pipeline = ? AND id = ?'
|
|
136
|
+
).get(pipeline, id) as Record<string, unknown> | undefined;
|
|
137
|
+
if (!row) throw new QQError(`item not found: ${id}`);
|
|
138
|
+
if (row.claimed) throw new QQError(`item already claimed: ${id}`);
|
|
139
|
+
} else {
|
|
140
|
+
row = db.prepare(
|
|
141
|
+
'SELECT * FROM messages WHERE pipeline = ? AND subqueue LIKE ? AND claimed = 0 ORDER BY priority DESC, seq ASC LIMIT 1'
|
|
142
|
+
).get(pipeline, toGlob(stage)) as Record<string, unknown> | undefined;
|
|
143
|
+
if (!row) return null;
|
|
144
|
+
}
|
|
136
145
|
|
|
137
146
|
const now = Date.now();
|
|
138
147
|
db.prepare(
|
|
@@ -265,9 +274,9 @@ export function stats(pipeline = '*'): Record<string, Record<string, { total: nu
|
|
|
265
274
|
}
|
|
266
275
|
}
|
|
267
276
|
|
|
268
|
-
// ──
|
|
277
|
+
// ── unstick ───────────────────────────────────────────────────────────────────
|
|
269
278
|
|
|
270
|
-
export function
|
|
279
|
+
export function unstick(pipeline: string, stage = '*', filters: FilterOptions = {}): number {
|
|
271
280
|
const db = openDb();
|
|
272
281
|
try {
|
|
273
282
|
return inTransaction(db, () => {
|
package/src/index.ts
CHANGED
|
@@ -5,8 +5,8 @@ import { resolve, join } from 'node:path';
|
|
|
5
5
|
import { dump } from 'js-yaml';
|
|
6
6
|
import {
|
|
7
7
|
makePipeline, deletePipeline, push, claim, release,
|
|
8
|
-
batchRead, stats,
|
|
9
|
-
type FilterOptions, type PushOptions,
|
|
8
|
+
batchRead, stats, unstick, QQError,
|
|
9
|
+
type FilterOptions, type PushOptions,
|
|
10
10
|
} from './commands.js';
|
|
11
11
|
|
|
12
12
|
function out(data: unknown): void {
|
|
@@ -20,8 +20,12 @@ function fail(message: string): never {
|
|
|
20
20
|
|
|
21
21
|
function readStdin(): string | null {
|
|
22
22
|
if (process.stdin.isTTY) return null;
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
try {
|
|
24
|
+
const raw = readFileSync(0, 'utf8').trim();
|
|
25
|
+
return raw || null;
|
|
26
|
+
} catch {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
25
29
|
}
|
|
26
30
|
|
|
27
31
|
function parseIntArg(value: string): number {
|
|
@@ -36,6 +40,12 @@ function parseFloatArg(value: string): number {
|
|
|
36
40
|
return n;
|
|
37
41
|
}
|
|
38
42
|
|
|
43
|
+
function parsePath(arg: string): { pipeline: string; stage?: string } {
|
|
44
|
+
const slash = arg.indexOf('/');
|
|
45
|
+
if (slash === -1) return { pipeline: arg };
|
|
46
|
+
return { pipeline: arg.slice(0, slash), stage: arg.slice(slash + 1) };
|
|
47
|
+
}
|
|
48
|
+
|
|
39
49
|
function collectFilters(opts: Record<string, unknown>): FilterOptions {
|
|
40
50
|
const f: FilterOptions = {};
|
|
41
51
|
if (opts['claimed'] !== undefined) f.claimed = opts['claimed'] === '1';
|
|
@@ -86,49 +96,53 @@ program
|
|
|
86
96
|
});
|
|
87
97
|
|
|
88
98
|
program
|
|
89
|
-
.command('push <
|
|
99
|
+
.command('push <path> [id]')
|
|
90
100
|
.option('--priority <n>', 'item priority (higher = claimed first)', parseFloatArg, 0.0)
|
|
91
|
-
.action((
|
|
101
|
+
.action((path, id, opts) => {
|
|
92
102
|
try {
|
|
103
|
+
const { pipeline, stage } = parsePath(path);
|
|
104
|
+
if (!stage) fail('expected pipeline/stage, got: ' + path);
|
|
93
105
|
const o: PushOptions = { payload: readStdin() ?? undefined, priority: opts.priority };
|
|
94
106
|
out({ id: push(pipeline, stage, id, o) });
|
|
95
107
|
} catch (e) { e instanceof QQError ? fail(e.message) : fail(String(e)); }
|
|
96
108
|
});
|
|
97
109
|
|
|
98
110
|
program
|
|
99
|
-
.command('claim <
|
|
100
|
-
.action((
|
|
111
|
+
.command('claim <path> [id]')
|
|
112
|
+
.action((path, id) => {
|
|
101
113
|
try {
|
|
102
|
-
const
|
|
114
|
+
const { pipeline, stage = '*' } = parsePath(path);
|
|
115
|
+
const item = claim(pipeline, stage, id);
|
|
103
116
|
if (item === null) {
|
|
104
117
|
process.stdout.write('No more items to claim\n');
|
|
105
118
|
process.exit(2);
|
|
106
119
|
}
|
|
107
120
|
out(item);
|
|
108
121
|
}
|
|
109
|
-
catch (e) {
|
|
122
|
+
catch (e) { e instanceof QQError ? fail(e.message) : fail(String(e)); }
|
|
110
123
|
});
|
|
111
124
|
|
|
112
125
|
program
|
|
113
|
-
.command('release <
|
|
114
|
-
.option('--target <stage>')
|
|
126
|
+
.command('release <path> <id>')
|
|
115
127
|
.option('--replace')
|
|
116
128
|
.option('--priority <n>', 'update item priority', parseFloatArg)
|
|
117
|
-
.action((
|
|
129
|
+
.action((path, id, opts) => {
|
|
118
130
|
try {
|
|
131
|
+
const { pipeline, stage } = parsePath(path);
|
|
119
132
|
const payload = readStdin() ?? undefined;
|
|
120
|
-
release(pipeline, id, { target:
|
|
133
|
+
release(pipeline, id, { target: stage, payload, replace: opts.replace, priority: opts.priority });
|
|
121
134
|
out({ ok: true });
|
|
122
135
|
} catch (e) { e instanceof QQError ? fail(e.message) : fail(String(e)); }
|
|
123
136
|
});
|
|
124
137
|
|
|
125
|
-
addFilterOptions(program.command('batch-read <
|
|
138
|
+
addFilterOptions(program.command('batch-read <path>'))
|
|
126
139
|
.option('--payload', 'include payload in output')
|
|
127
|
-
.action((
|
|
140
|
+
.action((path, opts) => {
|
|
128
141
|
try {
|
|
142
|
+
const { pipeline, stage = '*' } = parsePath(path);
|
|
129
143
|
const filters = collectFilters(opts);
|
|
130
144
|
if (filters.claimed === undefined) filters.claimed = false;
|
|
131
|
-
out(batchRead(pipeline, stage
|
|
145
|
+
out(batchRead(pipeline, stage, filters, opts.payload ?? false));
|
|
132
146
|
}
|
|
133
147
|
catch (e) { fail(e instanceof Error ? e.message : String(e)); }
|
|
134
148
|
});
|
|
@@ -140,9 +154,12 @@ program
|
|
|
140
154
|
catch (e) { fail(e instanceof Error ? e.message : String(e)); }
|
|
141
155
|
});
|
|
142
156
|
|
|
143
|
-
addReapFilterOptions(program.command('
|
|
144
|
-
.action((
|
|
145
|
-
try {
|
|
157
|
+
addReapFilterOptions(program.command('unstick <path>'))
|
|
158
|
+
.action((path, opts) => {
|
|
159
|
+
try {
|
|
160
|
+
const { pipeline, stage = '*' } = parsePath(path);
|
|
161
|
+
out({ unstuck: unstick(pipeline, stage, collectFilters(opts)) });
|
|
162
|
+
}
|
|
146
163
|
catch (e) { fail(e instanceof Error ? e.message : String(e)); }
|
|
147
164
|
});
|
|
148
165
|
|