pipe-kan 0.23.5 → 0.24.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/dist/pipe-kan.js +37 -17
- package/package.json +1 -1
package/dist/pipe-kan.js
CHANGED
|
@@ -244,12 +244,13 @@ function takeValue(list, index, flag) {
|
|
|
244
244
|
return [glued, index];
|
|
245
245
|
return [list[index + 1] ?? "", index + 1];
|
|
246
246
|
}
|
|
247
|
-
function
|
|
247
|
+
function parseFlags(flags) {
|
|
248
248
|
const list = tokens(flags.trim() || DEFAULT_FLAGS);
|
|
249
249
|
let assignee = "";
|
|
250
250
|
let epic = "";
|
|
251
251
|
let type = "";
|
|
252
252
|
let raw = "";
|
|
253
|
+
let projectsValue = "";
|
|
253
254
|
const statusEq = [];
|
|
254
255
|
const statusNeq = [];
|
|
255
256
|
for (let i = 0;i < list.length; i++) {
|
|
@@ -277,6 +278,10 @@ function flagsToJql(flags) {
|
|
|
277
278
|
statusEq.push(status);
|
|
278
279
|
continue;
|
|
279
280
|
}
|
|
281
|
+
if (token === "--projects") {
|
|
282
|
+
[projectsValue, i] = takeValue(list, i, "--projects");
|
|
283
|
+
continue;
|
|
284
|
+
}
|
|
280
285
|
if (token === "-q" || token === "--jql") {
|
|
281
286
|
raw = list[++i] ?? "";
|
|
282
287
|
continue;
|
|
@@ -285,9 +290,12 @@ function flagsToJql(flags) {
|
|
|
285
290
|
raw = token.slice(2);
|
|
286
291
|
}
|
|
287
292
|
}
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
293
|
+
const projects = projectsValue.split(",").map((p) => p.trim().toUpperCase()).filter(Boolean);
|
|
294
|
+
if (raw) {
|
|
295
|
+
return { jql: raw, projects };
|
|
296
|
+
}
|
|
297
|
+
const projectClause = projects.length ? `project in (${projects.map((p) => `"${p}"`).join(", ")})` : 'project="DEMO"';
|
|
298
|
+
const clauses = [projectClause];
|
|
291
299
|
if (assignee)
|
|
292
300
|
clauses.push(`assignee="${assignee}"`);
|
|
293
301
|
if (type)
|
|
@@ -298,7 +306,10 @@ function flagsToJql(flags) {
|
|
|
298
306
|
clauses.push(`status="${status}"`);
|
|
299
307
|
for (const status of statusNeq)
|
|
300
308
|
clauses.push(`status!="${status}"`);
|
|
301
|
-
return clauses.join(" AND ");
|
|
309
|
+
return { jql: clauses.join(" AND "), projects };
|
|
310
|
+
}
|
|
311
|
+
function flagsToJql(flags) {
|
|
312
|
+
return parseFlags(flags).jql;
|
|
302
313
|
}
|
|
303
314
|
|
|
304
315
|
// src/store.ts
|
|
@@ -430,6 +441,12 @@ Available states for issue ${key}: ${available}`
|
|
|
430
441
|
}
|
|
431
442
|
|
|
432
443
|
// src/cli.ts
|
|
444
|
+
function projectClause(flags) {
|
|
445
|
+
const { projects } = parseFlags(flags || DEFAULT_FLAGS);
|
|
446
|
+
if (!projects.length)
|
|
447
|
+
return 'project="DEMO"';
|
|
448
|
+
return `project in (${projects.map((p) => `"${p}"`).join(", ")})`;
|
|
449
|
+
}
|
|
433
450
|
function emptyList(text) {
|
|
434
451
|
return /no result found/i.test(text);
|
|
435
452
|
}
|
|
@@ -446,18 +463,18 @@ function issueKey(issue) {
|
|
|
446
463
|
function hasPaginate(args) {
|
|
447
464
|
return args.some((arg) => arg === "--paginate" || arg.startsWith("--paginate="));
|
|
448
465
|
}
|
|
449
|
-
function createStoreCli(store) {
|
|
466
|
+
function createStoreCli(store, defaultFlags = DEFAULT_FLAGS) {
|
|
450
467
|
return {
|
|
451
468
|
async list(flags) {
|
|
452
|
-
const issues = store.list(flagsToJql(flags ||
|
|
469
|
+
const issues = store.list(flagsToJql(flags || defaultFlags));
|
|
453
470
|
return JSON.stringify(issues, null, 2);
|
|
454
471
|
},
|
|
455
|
-
async listEpics() {
|
|
456
|
-
const issues = store.list(
|
|
472
|
+
async listEpics(queryFlags = defaultFlags) {
|
|
473
|
+
const issues = store.list(`${projectClause(queryFlags || defaultFlags)} AND type="Epic"`);
|
|
457
474
|
return JSON.stringify(issues, null, 2);
|
|
458
475
|
},
|
|
459
|
-
async listEpic(key) {
|
|
460
|
-
const issues = store.list(
|
|
476
|
+
async listEpic(key, queryFlags = defaultFlags) {
|
|
477
|
+
const issues = store.list(`${projectClause(queryFlags || defaultFlags)} AND parent="${key}"`);
|
|
461
478
|
return JSON.stringify(issues, null, 2);
|
|
462
479
|
},
|
|
463
480
|
async listChildren(keys) {
|
|
@@ -496,6 +513,7 @@ function resolveJiraBin(bin = process.env.JIRA_BIN ?? "jira", pathVar = process.
|
|
|
496
513
|
function createJiraCli(opts = {}) {
|
|
497
514
|
const bin = opts.bin ?? "jira";
|
|
498
515
|
const retryDelayMs = opts.retryDelayMs ?? 1000;
|
|
516
|
+
const defaultFlags = opts.flags ?? DEFAULT_FLAGS;
|
|
499
517
|
function fmt(args) {
|
|
500
518
|
return args.filter((arg) => arg !== "--raw").map((arg, i, all) => all[i - 1] === "-q" && arg.length > 48 ? `${arg.slice(0, 48)}…` : arg).join(" ");
|
|
501
519
|
}
|
|
@@ -585,15 +603,17 @@ function createJiraCli(opts = {}) {
|
|
|
585
603
|
const extra = (flags || DEFAULT_FLAGS).split(/\s+/).filter(Boolean);
|
|
586
604
|
return JSON.stringify(await listOnce(["issue", "list", ...extra, "--raw"]));
|
|
587
605
|
},
|
|
588
|
-
async listEpics() {
|
|
589
|
-
|
|
606
|
+
async listEpics(queryFlags = defaultFlags) {
|
|
607
|
+
const clause = projectClause(queryFlags || defaultFlags);
|
|
608
|
+
return listAll(["issue", "list", "-q", `${clause} AND type="Epic"`]);
|
|
590
609
|
},
|
|
591
|
-
async listEpic(key) {
|
|
610
|
+
async listEpic(key, queryFlags = defaultFlags) {
|
|
611
|
+
const clause = projectClause(queryFlags || defaultFlags);
|
|
592
612
|
return listAll([
|
|
593
613
|
"issue",
|
|
594
614
|
"list",
|
|
595
615
|
"-q",
|
|
596
|
-
|
|
616
|
+
`${clause} AND (parent="${key}" OR "Epic Link"="${key}")`
|
|
597
617
|
]);
|
|
598
618
|
},
|
|
599
619
|
async listChildren(keys) {
|
|
@@ -922,7 +942,7 @@ function createApp(opts) {
|
|
|
922
942
|
console.log("Refresh");
|
|
923
943
|
try {
|
|
924
944
|
const issues = await cli.list(flags);
|
|
925
|
-
const epics = await cli.listEpics();
|
|
945
|
+
const epics = await cli.listEpics(flags);
|
|
926
946
|
const nextPayload = JSON.parse(issues);
|
|
927
947
|
const nextEpics = JSON.parse(epics);
|
|
928
948
|
const keys = issuesToBoard(nextEpics).epics.map((epic) => epic.key);
|
|
@@ -973,7 +993,7 @@ function createApp(opts) {
|
|
|
973
993
|
if (columns.length)
|
|
974
994
|
return { columns, epics: [] };
|
|
975
995
|
}
|
|
976
|
-
return stampMissingEpic(issuesToBoard(JSON.parse(await cli.listEpic(epic))), epic);
|
|
996
|
+
return stampMissingEpic(issuesToBoard(JSON.parse(await cli.listEpic(epic, flags))), epic);
|
|
977
997
|
},
|
|
978
998
|
async move(key, status) {
|
|
979
999
|
const result = await tryMove(key, status);
|