@shortcut-cli/shortcut-cli 3.3.0 → 3.5.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/README.md +102 -73
- package/build/_virtual/rolldown_runtime.js +25 -0
- package/build/bin/short-api.js +78 -0
- package/build/bin/short-create.js +52 -147
- package/build/bin/short-epics.js +32 -111
- package/build/bin/short-find.js +6 -5
- package/build/bin/short-install.js +38 -128
- package/build/bin/short-members.js +29 -81
- package/build/bin/short-projects.js +29 -84
- package/build/bin/short-search.js +49 -134
- package/build/bin/short-story.js +200 -363
- package/build/bin/short-workflows.js +26 -74
- package/build/bin/short-workspace.js +62 -127
- package/build/bin/short.js +9 -30
- package/build/lib/client.js +12 -8
- package/build/lib/configure.js +95 -105
- package/build/lib/spinner.js +16 -13
- package/build/lib/stories.js +302 -496
- package/build/package.js +18 -0
- package/package.json +30 -28
- package/build/tsconfig.tsbuildinfo +0 -1
|
@@ -1,138 +1,53 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
2
|
+
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.js');
|
|
3
|
+
const require_lib_spinner = require('../lib/spinner.js');
|
|
4
|
+
const require_lib_configure = require('../lib/configure.js');
|
|
5
|
+
const require_lib_stories = require('../lib/stories.js');
|
|
6
|
+
const commander = require_rolldown_runtime.__toESM(require("commander"));
|
|
7
|
+
|
|
8
|
+
//#region src/bin/short-search.ts
|
|
9
|
+
var _process$argv$;
|
|
10
|
+
const spin = require_lib_spinner.default("Finding... %s ");
|
|
11
|
+
const log = console.log;
|
|
12
|
+
const program = commander.default.description(`Search through Shortcut stories. Arguments (non-flag/options) will be
|
|
13
|
+
passed to Shortcut story search API as search operators. Passing '%self%' as
|
|
14
|
+
a search operator argument will be replaced by your mention name. Note that
|
|
15
|
+
passing search operators and options (e.g. --owner foobar) will use the
|
|
16
|
+
options as extra filtering in the client.
|
|
17
|
+
|
|
18
|
+
Refer to https://help.shortcut.com/hc/en-us/articles/360000046646-Search-Operators
|
|
19
|
+
for more details about search operators.`).usage("[options] [SEARCH OPERATORS]").option("-a, --archived", "Include archived Stories").option("-c, --created [operator][date]", "Stories created within criteria (operator is one of <|>|=)", "").option("-q, --quiet", "Print only story output, no loading dialog", "").option("-l, --label [id|name]", "Stories with label id/name, by regex", "").option("-o, --owner [name]", "Stories with owner, by regex", "").option("-p, --project [id]", "Stories in project", "").option("-s, --state [id|name]", "Stories in workflow state id/name, by regex", "").option("--epic [id|name]", "Stories in epic id/name, by regex", "").option("-i, --iteration [id|name]", "Stories in iteration id/name, by regex", "").option("-S, --save [name]", "Save search configuration as workspace").option("-t, --text [name]", "Stories with text in name, by regex", "").option("-e, --estimate [operator][number]", "Stories estimated within criteria (operator is one of <|>|=)", "").option("-u, --updated [operator][date]", "Stories updated within criteria (operator is one of <|>|=)", "").option("-y, --type [name]", "Stories of type, by regex", "").option("-r, --sort [field]", "Sort stories by field (accessor[:asc|desc][,next])", "state.position:asc,position:asc").option("-f, --format [template]", "Format each story output by template", "");
|
|
20
|
+
const getWorkspaceOptions = (program$1) => {
|
|
21
|
+
const blacklistedKeys = [
|
|
22
|
+
"Command",
|
|
23
|
+
"commands",
|
|
24
|
+
"Option",
|
|
25
|
+
"options",
|
|
26
|
+
"rawArgs",
|
|
27
|
+
"save"
|
|
28
|
+
];
|
|
29
|
+
return Object.entries(program$1).filter(([key]) => !(blacklistedKeys.includes(key) || key.startsWith("_"))).reduce((obj, [key, val]) => Object.assign(obj, { [key]: val }), {});
|
|
11
30
|
};
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
30
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
31
|
-
if (t[2]) _.ops.pop();
|
|
32
|
-
_.trys.pop(); continue;
|
|
33
|
-
}
|
|
34
|
-
op = body.call(thisArg, _);
|
|
35
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
36
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
37
|
-
}
|
|
31
|
+
const main = async () => {
|
|
32
|
+
program.parse(process.argv);
|
|
33
|
+
if (!program.quiet) {
|
|
34
|
+
if (!program.args.length) log("Fetching all stories for search since no search operators were passed ...");
|
|
35
|
+
spin.start();
|
|
36
|
+
}
|
|
37
|
+
let stories = [];
|
|
38
|
+
try {
|
|
39
|
+
stories = await require_lib_stories.default.listStories(program);
|
|
40
|
+
} catch (e) {
|
|
41
|
+
log("Error fetching stories:", e);
|
|
42
|
+
}
|
|
43
|
+
if (!program.quiet) spin.stop(true);
|
|
44
|
+
stories.map(require_lib_stories.default.printFormattedStory(program));
|
|
45
|
+
if (!program.save) return;
|
|
46
|
+
const name = program.save === true ? "default" : program.save;
|
|
47
|
+
if (require_lib_configure.default.saveWorkspace(name, getWorkspaceOptions(program))) log("Saved query as %s workspace", name);
|
|
38
48
|
};
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
var i = m.call(o), r, ar = [], e;
|
|
43
|
-
try {
|
|
44
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
45
|
-
}
|
|
46
|
-
catch (error) { e = { error: error }; }
|
|
47
|
-
finally {
|
|
48
|
-
try {
|
|
49
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
50
|
-
}
|
|
51
|
-
finally { if (e) throw e.error; }
|
|
52
|
-
}
|
|
53
|
-
return ar;
|
|
54
|
-
};
|
|
55
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
56
|
-
exports.main = exports.program = void 0;
|
|
57
|
-
var spinner_1 = require("../lib/spinner");
|
|
58
|
-
var commander = require("commander");
|
|
59
|
-
var configure_1 = require("../lib/configure");
|
|
60
|
-
var stories_1 = require("../lib/stories");
|
|
61
|
-
var spin = (0, spinner_1.default)('Finding... %s ');
|
|
62
|
-
var log = console.log;
|
|
63
|
-
exports.program = commander
|
|
64
|
-
.description("Search through Shortcut stories. Arguments (non-flag/options) will be\n passed to Shortcut story search API as search operators. Passing '%self%' as\n a search operator argument will be replaced by your mention name. Note that\n passing search operators and options (e.g. --owner foobar) will use the\n options as extra filtering in the client.\n\n Refer to https://help.shortcut.com/hc/en-us/articles/360000046646-Search-Operators\n for more details about search operators.")
|
|
65
|
-
.usage('[options] [SEARCH OPERATORS]')
|
|
66
|
-
.option('-a, --archived', 'Include archived Stories')
|
|
67
|
-
.option('-c, --created [operator][date]', 'Stories created within criteria (operator is one of <|>|=)', '')
|
|
68
|
-
.option('-q, --quiet', 'Print only story output, no loading dialog', '')
|
|
69
|
-
.option('-l, --label [id|name]', 'Stories with label id/name, by regex', '')
|
|
70
|
-
.option('-o, --owner [name]', 'Stories with owner, by regex', '')
|
|
71
|
-
.option('-p, --project [id]', 'Stories in project', '')
|
|
72
|
-
.option('-s, --state [id|name]', 'Stories in workflow state id/name, by regex', '')
|
|
73
|
-
.option('--epic [id|name]', 'Stories in epic id/name, by regex', '')
|
|
74
|
-
.option('-i, --iteration [id|name]', 'Stories in iteration id/name, by regex', '')
|
|
75
|
-
.option('-S, --save [name]', 'Save search configuration as workspace')
|
|
76
|
-
.option('-t, --text [name]', 'Stories with text in name, by regex', '')
|
|
77
|
-
.option('-e, --estimate [operator][number]', 'Stories estimated within criteria (operator is one of <|>|=)', '')
|
|
78
|
-
.option('-u, --updated [operator][date]', 'Stories updated within criteria (operator is one of <|>|=)', '')
|
|
79
|
-
.option('-y, --type [name]', 'Stories of type, by regex', '')
|
|
80
|
-
.option('-r, --sort [field]', 'Sort stories by field (accessor[:asc|desc][,next])', 'state.position:asc,position:asc')
|
|
81
|
-
.option('-f, --format [template]', 'Format each story output by template', '');
|
|
82
|
-
var getWorkspaceOptions = function (program) {
|
|
83
|
-
var blacklistedKeys = ['Command', 'commands', 'Option', 'options', 'rawArgs', 'save'];
|
|
84
|
-
return Object.entries(program)
|
|
85
|
-
.filter(function (_a) {
|
|
86
|
-
var _b = __read(_a, 1), key = _b[0];
|
|
87
|
-
return !(blacklistedKeys.includes(key) || key.startsWith('_'));
|
|
88
|
-
})
|
|
89
|
-
.reduce(function (obj, _a) {
|
|
90
|
-
var _b;
|
|
91
|
-
var _c = __read(_a, 2), key = _c[0], val = _c[1];
|
|
92
|
-
return Object.assign(obj, (_b = {}, _b[key] = val, _b));
|
|
93
|
-
}, {});
|
|
94
|
-
};
|
|
95
|
-
var main = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
96
|
-
var stories, e_1, name;
|
|
97
|
-
return __generator(this, function (_a) {
|
|
98
|
-
switch (_a.label) {
|
|
99
|
-
case 0:
|
|
100
|
-
exports.program.parse(process.argv);
|
|
101
|
-
if (!exports.program.quiet) {
|
|
102
|
-
if (!exports.program.args.length) {
|
|
103
|
-
log('Fetching all stories for search since no search operators were passed ...');
|
|
104
|
-
}
|
|
105
|
-
spin.start();
|
|
106
|
-
}
|
|
107
|
-
stories = [];
|
|
108
|
-
_a.label = 1;
|
|
109
|
-
case 1:
|
|
110
|
-
_a.trys.push([1, 3, , 4]);
|
|
111
|
-
return [4, stories_1.default.listStories(exports.program)];
|
|
112
|
-
case 2:
|
|
113
|
-
stories = _a.sent();
|
|
114
|
-
return [3, 4];
|
|
115
|
-
case 3:
|
|
116
|
-
e_1 = _a.sent();
|
|
117
|
-
log('Error fetching stories:', e_1);
|
|
118
|
-
return [3, 4];
|
|
119
|
-
case 4:
|
|
120
|
-
if (!exports.program.quiet)
|
|
121
|
-
spin.stop(true);
|
|
122
|
-
stories.map(stories_1.default.printFormattedStory(exports.program));
|
|
123
|
-
if (!exports.program.save) {
|
|
124
|
-
return [2];
|
|
125
|
-
}
|
|
126
|
-
name = exports.program.save === true ? 'default' : exports.program.save;
|
|
127
|
-
if (configure_1.default.saveWorkspace(name, getWorkspaceOptions(exports.program))) {
|
|
128
|
-
log('Saved query as %s workspace', name);
|
|
129
|
-
}
|
|
130
|
-
return [2];
|
|
131
|
-
}
|
|
132
|
-
});
|
|
133
|
-
}); };
|
|
49
|
+
if ((_process$argv$ = process.argv[1]) === null || _process$argv$ === void 0 ? void 0 : _process$argv$.includes("short-search")) main();
|
|
50
|
+
|
|
51
|
+
//#endregion
|
|
134
52
|
exports.main = main;
|
|
135
|
-
|
|
136
|
-
(0, exports.main)();
|
|
137
|
-
}
|
|
138
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvcnQtc2VhcmNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jpbi9zaG9ydC1zZWFyY2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSwwQ0FBcUM7QUFDckMscUNBQXVDO0FBRXZDLDhDQUF5QztBQUN6QywwQ0FBeUQ7QUFFekQsSUFBTSxJQUFJLEdBQUcsSUFBQSxpQkFBTyxFQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDdkMsSUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQztBQUVYLFFBQUEsT0FBTyxHQUFHLFNBQVM7S0FDM0IsV0FBVyxDQUNSLGtlQU9tQyxDQUN0QztLQUNBLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQztLQUNyQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsMEJBQTBCLENBQUM7S0FDcEQsTUFBTSxDQUNILGdDQUFnQyxFQUNoQyw0REFBNEQsRUFDNUQsRUFBRSxDQUNMO0tBQ0EsTUFBTSxDQUFDLGFBQWEsRUFBRSw0Q0FBNEMsRUFBRSxFQUFFLENBQUM7S0FDdkUsTUFBTSxDQUFDLHVCQUF1QixFQUFFLHNDQUFzQyxFQUFFLEVBQUUsQ0FBQztLQUMzRSxNQUFNLENBQUMsb0JBQW9CLEVBQUUsOEJBQThCLEVBQUUsRUFBRSxDQUFDO0tBQ2hFLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRSxvQkFBb0IsRUFBRSxFQUFFLENBQUM7S0FDdEQsTUFBTSxDQUFDLHVCQUF1QixFQUFFLDZDQUE2QyxFQUFFLEVBQUUsQ0FBQztLQUNsRixNQUFNLENBQUMsa0JBQWtCLEVBQUUsbUNBQW1DLEVBQUUsRUFBRSxDQUFDO0tBQ25FLE1BQU0sQ0FBQywyQkFBMkIsRUFBRSx3Q0FBd0MsRUFBRSxFQUFFLENBQUM7S0FDakYsTUFBTSxDQUFDLG1CQUFtQixFQUFFLHdDQUF3QyxDQUFDO0tBQ3JFLE1BQU0sQ0FBQyxt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
|
|
53
|
+
exports.program = program;
|