@eyeauras/youtrack-cli 0.5.6 → 0.6.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 +78 -72
- package/dist/src/agile-commands.d.ts.map +1 -1
- package/dist/src/agile-commands.js +8 -9
- package/dist/src/agile-commands.js.map +1 -1
- package/dist/src/agile.d.ts.map +1 -1
- package/dist/src/agile.js +9 -15
- package/dist/src/agile.js.map +1 -1
- package/dist/src/article-extras-commands.d.ts.map +1 -1
- package/dist/src/article-extras-commands.js +13 -12
- package/dist/src/article-extras-commands.js.map +1 -1
- package/dist/src/articles-commands.d.ts.map +1 -1
- package/dist/src/articles-commands.js +15 -13
- package/dist/src/articles-commands.js.map +1 -1
- package/dist/src/articles.d.ts +3 -3
- package/dist/src/articles.d.ts.map +1 -1
- package/dist/src/articles.js +19 -19
- package/dist/src/articles.js.map +1 -1
- package/dist/src/attachment-download-commands.d.ts.map +1 -1
- package/dist/src/attachment-download-commands.js +10 -9
- package/dist/src/attachment-download-commands.js.map +1 -1
- package/dist/src/attachment-download.d.ts +7 -3
- package/dist/src/attachment-download.d.ts.map +1 -1
- package/dist/src/attachment-download.js +33 -40
- package/dist/src/attachment-download.js.map +1 -1
- package/dist/src/attachment-form.js +3 -3
- package/dist/src/attachment-form.js.map +1 -1
- package/dist/src/bundle-values-commands.d.ts.map +1 -1
- package/dist/src/bundle-values-commands.js +21 -18
- package/dist/src/bundle-values-commands.js.map +1 -1
- package/dist/src/cli-support.d.ts +5 -5
- package/dist/src/cli-support.d.ts.map +1 -1
- package/dist/src/cli-support.js +28 -26
- package/dist/src/cli-support.js.map +1 -1
- package/dist/src/cli.d.ts.map +1 -1
- package/dist/src/cli.js +55 -39
- package/dist/src/cli.js.map +1 -1
- package/dist/src/client.d.ts +5 -2
- package/dist/src/client.d.ts.map +1 -1
- package/dist/src/client.js +66 -49
- package/dist/src/client.js.map +1 -1
- package/dist/src/field-catalog-commands.d.ts.map +1 -1
- package/dist/src/field-catalog-commands.js +19 -16
- package/dist/src/field-catalog-commands.js.map +1 -1
- package/dist/src/group-directory-commands.d.ts.map +1 -1
- package/dist/src/group-directory-commands.js +17 -16
- package/dist/src/group-directory-commands.js.map +1 -1
- package/dist/src/issue-attachments-commands.d.ts.map +1 -1
- package/dist/src/issue-attachments-commands.js +9 -8
- package/dist/src/issue-attachments-commands.js.map +1 -1
- package/dist/src/issue-batch.d.ts +3 -1
- package/dist/src/issue-batch.d.ts.map +1 -1
- package/dist/src/issue-batch.js +19 -14
- package/dist/src/issue-batch.js.map +1 -1
- package/dist/src/issue-context-commands.d.ts.map +1 -1
- package/dist/src/issue-context-commands.js +13 -12
- package/dist/src/issue-context-commands.js.map +1 -1
- package/dist/src/issue-context.d.ts.map +1 -1
- package/dist/src/issue-context.js +9 -13
- package/dist/src/issue-context.js.map +1 -1
- package/dist/src/issue-fields-commands.d.ts.map +1 -1
- package/dist/src/issue-fields-commands.js +10 -9
- package/dist/src/issue-fields-commands.js.map +1 -1
- package/dist/src/issue-fields.d.ts +2 -4
- package/dist/src/issue-fields.d.ts.map +1 -1
- package/dist/src/issue-fields.js +39 -100
- package/dist/src/issue-fields.js.map +1 -1
- package/dist/src/issue-query-commands.d.ts.map +1 -1
- package/dist/src/issue-query-commands.js +15 -14
- package/dist/src/issue-query-commands.js.map +1 -1
- package/dist/src/issue-query.d.ts.map +1 -1
- package/dist/src/issue-query.js +7 -10
- package/dist/src/issue-query.js.map +1 -1
- package/dist/src/issue-relations-commands.d.ts.map +1 -1
- package/dist/src/issue-relations-commands.js +17 -16
- package/dist/src/issue-relations-commands.js.map +1 -1
- package/dist/src/issue-relations.js +2 -2
- package/dist/src/issue-relations.js.map +1 -1
- package/dist/src/issue-time-commands.d.ts.map +1 -1
- package/dist/src/issue-time-commands.js +12 -11
- package/dist/src/issue-time-commands.js.map +1 -1
- package/dist/src/issue-time.d.ts.map +1 -1
- package/dist/src/issue-time.js +16 -19
- package/dist/src/issue-time.js.map +1 -1
- package/dist/src/presentation.d.ts +59 -0
- package/dist/src/presentation.d.ts.map +1 -0
- package/dist/src/presentation.js +467 -0
- package/dist/src/presentation.js.map +1 -0
- package/dist/src/time-settings-commands.d.ts.map +1 -1
- package/dist/src/time-settings-commands.js +13 -11
- package/dist/src/time-settings-commands.js.map +1 -1
- package/dist/src/user-directory-commands.d.ts.map +1 -1
- package/dist/src/user-directory-commands.js +14 -12
- package/dist/src/user-directory-commands.js.map +1 -1
- package/package.json +2 -2
package/dist/src/cli-support.js
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import { readFile, stat } from "node:fs/promises";
|
|
2
2
|
import { integerParser, jsonParser, targetCommands, } from "@eyeauras/cli-factory";
|
|
3
|
-
import {
|
|
3
|
+
import { inputFilePath, youTrackUrl } from "./client.js";
|
|
4
|
+
import { withView } from "./presentation.js";
|
|
4
5
|
export const bodyOptions = [
|
|
5
6
|
{
|
|
6
7
|
flags: "--body <json>",
|
|
7
|
-
description: "
|
|
8
|
+
description: "JSON request body",
|
|
8
9
|
required: true,
|
|
9
|
-
parse: jsonParser("
|
|
10
|
+
parse: jsonParser("The body must be valid JSON."),
|
|
10
11
|
},
|
|
11
12
|
];
|
|
12
13
|
export const fileOption = (flags, description, required = false) => ({
|
|
13
|
-
flags, description, required, parse:
|
|
14
|
+
flags, description, required, parse: inputFilePath,
|
|
14
15
|
});
|
|
15
16
|
/** Read one caller-selected file as strict UTF-8 (initial BOM removed); call only inside an admitted handler. */
|
|
16
17
|
export async function readTextFile(path) {
|
|
@@ -21,20 +22,20 @@ export async function readTextFile(path) {
|
|
|
21
22
|
bytes = await readFile(path);
|
|
22
23
|
}
|
|
23
24
|
catch {
|
|
24
|
-
throw new Error("
|
|
25
|
+
throw new Error("The input file must be a readable regular file.");
|
|
25
26
|
}
|
|
26
27
|
try {
|
|
27
28
|
return new TextDecoder("utf-8", { fatal: true }).decode(bytes);
|
|
28
29
|
}
|
|
29
30
|
catch {
|
|
30
|
-
throw new Error("
|
|
31
|
+
throw new Error("The input file must be valid UTF-8.");
|
|
31
32
|
}
|
|
32
33
|
}
|
|
33
34
|
/** Required `--body`, plus an optional `--<field>-file` that supplies one narrative property. */
|
|
34
35
|
function bodyInputOptions(textField) {
|
|
35
36
|
return textField === undefined ? bodyOptions : [
|
|
36
37
|
...bodyOptions,
|
|
37
|
-
fileOption(`--${textField}-file <path>`, `UTF-8 file
|
|
38
|
+
fileOption(`--${textField}-file <path>`, `UTF-8 file with the ${textField}`),
|
|
38
39
|
];
|
|
39
40
|
}
|
|
40
41
|
async function bodyInput(options, textField) {
|
|
@@ -43,29 +44,29 @@ async function bodyInput(options, textField) {
|
|
|
43
44
|
if (typeof file !== "string")
|
|
44
45
|
return body;
|
|
45
46
|
if (body === null || typeof body !== "object" || Array.isArray(body))
|
|
46
|
-
throw new Error("
|
|
47
|
+
throw new Error("The body must be a JSON object.");
|
|
47
48
|
if (Object.hasOwn(body, textField)) {
|
|
48
|
-
throw new Error(`
|
|
49
|
+
throw new Error(`Give ${textField} in --body or in --${textField}-file, not both.`);
|
|
49
50
|
}
|
|
50
51
|
return { ...body, [textField]: await readTextFile(file) };
|
|
51
52
|
}
|
|
52
53
|
export const projectionOptions = [
|
|
53
|
-
{ flags: "--fields <projection>", description: "
|
|
54
|
+
{ flags: "--fields <projection>", description: "YouTrack fields projection" },
|
|
54
55
|
];
|
|
55
56
|
export const pageOptions = [
|
|
56
57
|
...projectionOptions,
|
|
57
58
|
{
|
|
58
|
-
flags: "--top <count>", description: "Maximum results
|
|
59
|
+
flags: "--top <count>", description: "Maximum results", defaultValue: 50,
|
|
59
60
|
parse: integerParser({
|
|
60
|
-
min:
|
|
61
|
-
errorMessage: "
|
|
61
|
+
min: 0, max: Number.MAX_SAFE_INTEGER, signed: false,
|
|
62
|
+
errorMessage: "--top must be a nonnegative safe decimal integer.",
|
|
62
63
|
}),
|
|
63
64
|
},
|
|
64
65
|
{
|
|
65
|
-
flags: "--skip <offset>", description: "
|
|
66
|
+
flags: "--skip <offset>", description: "Results to skip", defaultValue: 0,
|
|
66
67
|
parse: integerParser({
|
|
67
68
|
min: 0, max: Number.MAX_SAFE_INTEGER, signed: false,
|
|
68
|
-
errorMessage: "
|
|
69
|
+
errorMessage: "--skip must be a nonnegative integer.",
|
|
69
70
|
}),
|
|
70
71
|
},
|
|
71
72
|
];
|
|
@@ -83,7 +84,7 @@ function positionalNames(syntax) {
|
|
|
83
84
|
const tokens = syntax.split(" ").slice(1);
|
|
84
85
|
const names = tokens.map((token) => /^<([A-Za-z][A-Za-z0-9_-]*)>$/.exec(token)?.[1]);
|
|
85
86
|
if (names.some((name) => name === undefined)) {
|
|
86
|
-
throw new Error("
|
|
87
|
+
throw new Error("Operation helpers require named positional arguments only.");
|
|
87
88
|
}
|
|
88
89
|
return names;
|
|
89
90
|
}
|
|
@@ -91,25 +92,26 @@ function positionalArguments(names, args) {
|
|
|
91
92
|
const values = args;
|
|
92
93
|
return names.map((name) => String(values[name]));
|
|
93
94
|
}
|
|
94
|
-
function operationCommand(leaf, syntax, description, operation, options, operationOptions) {
|
|
95
|
+
function operationCommand(leaf, syntax, description, operation, options, operationOptions, view) {
|
|
95
96
|
const names = positionalNames(syntax);
|
|
96
|
-
|
|
97
|
+
const definition = leaf(syntax, description, async (connection, input) => Reflect.apply(operation, undefined, [
|
|
97
98
|
connection,
|
|
98
99
|
...positionalArguments(names, input.args),
|
|
99
100
|
...await operationOptions(input.options),
|
|
100
101
|
]), options);
|
|
102
|
+
return view === undefined ? definition : withView(view, definition);
|
|
101
103
|
}
|
|
102
|
-
export function pagedRead(syntax, description, operation) {
|
|
103
|
-
return operationCommand(readCommand, syntax, description, operation, pageOptions, (options) => [readOptions(options)]);
|
|
104
|
+
export function pagedRead(syntax, description, operation, view) {
|
|
105
|
+
return operationCommand(readCommand, syntax, description, operation, pageOptions, (options) => [readOptions(options)], view);
|
|
104
106
|
}
|
|
105
|
-
export function projectedRead(syntax, description, operation) {
|
|
106
|
-
return operationCommand(readCommand, syntax, description, operation, projectionOptions, (options) => [readOptions(options)]);
|
|
107
|
+
export function projectedRead(syntax, description, operation, view) {
|
|
108
|
+
return operationCommand(readCommand, syntax, description, operation, projectionOptions, (options) => [readOptions(options)], view);
|
|
107
109
|
}
|
|
108
|
-
export function bodyUpdate(syntax, description, operation, textField) {
|
|
109
|
-
return operationCommand(updateCommand, syntax, description, operation, bodyInputOptions(textField), async (options) => [await bodyInput(options, textField)]);
|
|
110
|
+
export function bodyUpdate(syntax, description, operation, textField, view) {
|
|
111
|
+
return operationCommand(updateCommand, syntax, description, operation, bodyInputOptions(textField), async (options) => [await bodyInput(options, textField)], view);
|
|
110
112
|
}
|
|
111
|
-
export function projectedBodyUpdate(syntax, description, operation, textField) {
|
|
112
|
-
return operationCommand(updateCommand, syntax, description, operation, [...bodyInputOptions(textField), ...projectionOptions], async (options) => [await bodyInput(options, textField), readOptions(options)]);
|
|
113
|
+
export function projectedBodyUpdate(syntax, description, operation, textField, view) {
|
|
114
|
+
return operationCommand(updateCommand, syntax, description, operation, [...bodyInputOptions(textField), ...projectionOptions], async (options) => [await bodyInput(options, textField), readOptions(options)], view);
|
|
113
115
|
}
|
|
114
116
|
export function readOptions(options) {
|
|
115
117
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-support.js","sourceRoot":"","sources":["../../src/cli-support.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EACL,aAAa,EACb,UAAU,EACV,cAAc,
|
|
1
|
+
{"version":3,"file":"cli-support.js","sourceRoot":"","sources":["../../src/cli-support.ts"],"names":[],"mappings":"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"}
|
package/dist/src/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,cAAc,EACnB,KAAK,UAAU,EAChB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,cAAc,EACnB,KAAK,UAAU,EAChB,MAAM,uBAAuB,CAAC;AA0E/B,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,cAAc,CA8ItE"}
|
package/dist/src/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { command, createCli,
|
|
1
|
+
import { command, createCli, helpLayout, integerParser, Permission, tokenAuth, } from "@eyeauras/cli-factory";
|
|
2
2
|
import { addComment, currentUser, getIssue, listComments, listIssues, listProjects, readUser, youTrackUrl, youTrackUrlHelp, } from "./client.js";
|
|
3
3
|
import { bodyUpdate, fileOption, pagedRead, pageOptions, projectedRead, readCommand, readOptions, readTextFile, updateCommand, } from "./cli-support.js";
|
|
4
|
-
import { downloadLimit
|
|
4
|
+
import { downloadLimit } from "./attachment-download.js";
|
|
5
5
|
import { applyIssueBatch, manifestRows } from "./issue-batch.js";
|
|
6
6
|
import { createIssue, updateIssue } from "./issue-fields.js";
|
|
7
7
|
import { contextRootCommands, contextIssueChildren, contextCommentChildren } from "./issue-context-commands.js";
|
|
@@ -17,13 +17,30 @@ import { groupDirectoryRootCommands, groupDirectoryProjectChildren } from "./gro
|
|
|
17
17
|
import { articlesRootCommands, articlesProjectChildren } from "./articles-commands.js";
|
|
18
18
|
import { agileRootCommands } from "./agile-commands.js";
|
|
19
19
|
import { bundleValuesChildren } from "./bundle-values-commands.js";
|
|
20
|
-
|
|
20
|
+
import { batchApplied, batchValidated, commentAdded, commentTable, createdIssue, issueRecord, issueTable, projectTable, updatedIssue, userRecord, withView, } from "./presentation.js";
|
|
21
|
+
const manifestOption = fileOption("--file <path>", ".json or .csv manifest", true);
|
|
21
22
|
const manifest = async (options) => manifestRows(await readTextFile(String(options.file)), String(options.file));
|
|
23
|
+
/** Root help: what people run daily first, then the reference data, then Core's configuration. */
|
|
24
|
+
const rootLayout = [
|
|
25
|
+
["Everyday", ["issues", "project", "user", "article", "agile", "sprint"]],
|
|
26
|
+
["Reference", [
|
|
27
|
+
"field", "bundle", "tags", "link-types", "work-item-type", "time-tracking", "saved-queries",
|
|
28
|
+
"search", "commands", "activities", "work-items", "group",
|
|
29
|
+
]],
|
|
30
|
+
];
|
|
31
|
+
const issueExamples = [
|
|
32
|
+
'issues list --query "project: DEMO #Unresolved" --top 20',
|
|
33
|
+
"issues get DEMO-12",
|
|
34
|
+
`issues create --body '{"project":{"shortName":"DEMO"},"summary":"Login page crashes on Safari"}'`,
|
|
35
|
+
`issues update DEMO-12 --body '{"summary":"Login page crashes on Safari 18"}'`,
|
|
36
|
+
`issues comments add DEMO-12 --body '{"text":"Fixed in build 42"}'`,
|
|
37
|
+
];
|
|
22
38
|
export function createYouTrackCli(runtime) {
|
|
23
39
|
return createCli({
|
|
24
40
|
name: "youtrack-cli",
|
|
25
41
|
description: "AI-friendly access to YouTrack",
|
|
26
|
-
|
|
42
|
+
examples: [...issueExamples.slice(0, 3), "article get KB-A-7", "project list"],
|
|
43
|
+
version: "0.6.0",
|
|
27
44
|
applicationId: "youtrack-cli",
|
|
28
45
|
permissions: {},
|
|
29
46
|
profile: {
|
|
@@ -44,7 +61,7 @@ export function createYouTrackCli(runtime) {
|
|
|
44
61
|
},
|
|
45
62
|
auth: tokenAuth({
|
|
46
63
|
env: "YOUTRACK_TOKEN",
|
|
47
|
-
tokenSource: "Create
|
|
64
|
+
tokenSource: "Create a permanent token in your YouTrack profile with the YouTrack service scope.",
|
|
48
65
|
validate: ({ profile, token, fetch, signal }) => currentUser({
|
|
49
66
|
baseUrl: youTrackUrl(profile.values.url),
|
|
50
67
|
token,
|
|
@@ -52,8 +69,7 @@ export function createYouTrackCli(runtime) {
|
|
|
52
69
|
signal,
|
|
53
70
|
}),
|
|
54
71
|
}),
|
|
55
|
-
|
|
56
|
-
commands: [
|
|
72
|
+
commands: helpLayout(rootLayout, [
|
|
57
73
|
...contextRootCommands,
|
|
58
74
|
...timeRootCommands,
|
|
59
75
|
...relationsRootCommands,
|
|
@@ -63,81 +79,81 @@ export function createYouTrackCli(runtime) {
|
|
|
63
79
|
...groupDirectoryRootCommands,
|
|
64
80
|
...articlesRootCommands,
|
|
65
81
|
...agileRootCommands,
|
|
66
|
-
command("bundle", "Inspect
|
|
82
|
+
command("bundle", "Inspect custom-field value bundles", [
|
|
67
83
|
...fieldCatalogBundleChildren,
|
|
68
84
|
...userDirectoryBundleChildren,
|
|
69
85
|
...bundleValuesChildren,
|
|
70
86
|
]),
|
|
71
|
-
command("user", "Inspect
|
|
87
|
+
command("user", "Inspect users", [
|
|
72
88
|
...fieldsUserChildren,
|
|
73
89
|
...userDirectoryUserChildren,
|
|
74
|
-
projectedRead("me", "Show the
|
|
90
|
+
projectedRead("me", "Show the signed-in user", readUser, userRecord),
|
|
75
91
|
]),
|
|
76
|
-
command("project", "Inspect
|
|
92
|
+
command("project", "Inspect projects", [
|
|
77
93
|
...fieldsProjectChildren,
|
|
78
94
|
...timeSettingsProjectChildren,
|
|
79
95
|
...groupDirectoryProjectChildren,
|
|
80
96
|
...articlesProjectChildren,
|
|
81
|
-
pagedRead("list", "List
|
|
97
|
+
pagedRead("list", "List projects", listProjects, projectTable),
|
|
82
98
|
]),
|
|
83
|
-
command("issues", "Read and update
|
|
99
|
+
command("issues", "Read and update issues", [
|
|
84
100
|
...contextIssueChildren,
|
|
85
101
|
...timeIssueChildren,
|
|
86
102
|
...relationsIssueChildren,
|
|
87
103
|
...fieldsIssueChildren,
|
|
88
104
|
...attachmentsIssueChildren,
|
|
89
105
|
...queryIssueChildren,
|
|
90
|
-
bodyUpdate("create", "Create an issue
|
|
91
|
-
bodyUpdate("update <issueID>", "Update summary, description
|
|
92
|
-
readCommand("list", "Search issues
|
|
106
|
+
bodyUpdate("create", "Create an issue", createIssue, "description", createdIssue),
|
|
107
|
+
bodyUpdate("update <issueID>", "Update the summary, description or custom fields", updateIssue, "description", updatedIssue),
|
|
108
|
+
withView(issueTable, readCommand("list", "Search issues", (client, { options }, context) => {
|
|
93
109
|
if ((options.all === true) !== (options.maxResults !== undefined)) {
|
|
94
|
-
throw new Error("
|
|
110
|
+
throw new Error("--all and --max-results go together.");
|
|
95
111
|
}
|
|
96
|
-
return listIssues(client, readOptions(options));
|
|
112
|
+
return listIssues(client, { ...readOptions(options), progress: context.progress });
|
|
97
113
|
}, [
|
|
98
114
|
...pageOptions,
|
|
99
115
|
{ flags: "--query <query>", description: "YouTrack search query" },
|
|
100
|
-
{ flags: "--all", description: "Read every page (
|
|
116
|
+
{ flags: "--all", description: "Read every page (needs --max-results)" },
|
|
101
117
|
{
|
|
102
|
-
flags: "--max-results <count>", description: "Fail
|
|
118
|
+
flags: "--max-results <count>", description: "Fail above this many issues",
|
|
103
119
|
parse: integerParser({
|
|
104
120
|
min: 1, max: Number.MAX_SAFE_INTEGER, signed: false,
|
|
105
|
-
errorMessage: "
|
|
121
|
+
errorMessage: "--max-results must be a positive integer.",
|
|
106
122
|
}),
|
|
107
123
|
},
|
|
108
124
|
{
|
|
109
|
-
flags: "--max-bytes <n>", description: "Fail
|
|
125
|
+
flags: "--max-bytes <n>", description: "Fail above this many response bytes",
|
|
110
126
|
parse: downloadLimit,
|
|
111
127
|
},
|
|
112
|
-
]),
|
|
113
|
-
projectedRead("get <issueID>", "Show an issue
|
|
114
|
-
command("batch", "
|
|
115
|
-
command("validate", "
|
|
128
|
+
])),
|
|
129
|
+
projectedRead("get <issueID>", "Show an issue", getIssue, issueRecord),
|
|
130
|
+
command("batch", "Create and update issues from a manifest", [
|
|
131
|
+
withView(batchValidated, command("validate", "Check a manifest without sending requests", async ({ options }) => {
|
|
116
132
|
const rows = await manifest(options);
|
|
117
133
|
const updates = rows.filter((row) => row.issue !== undefined).length;
|
|
118
134
|
return { rows: rows.length, create: rows.length - updates, update: updates };
|
|
119
|
-
}, { permission: Permission.ReadOnly, options: [manifestOption] }),
|
|
120
|
-
updateCommand("apply", "Apply manifest rows in order
|
|
121
|
-
|
|
135
|
+
}, { permission: Permission.ReadOnly, options: [manifestOption] })),
|
|
136
|
+
withView(batchApplied, updateCommand("apply", "Apply manifest rows in order", async (connection, { options }, context) => applyIssueBatch(connection, await manifest(options), {
|
|
137
|
+
cwd: context.cwd,
|
|
122
138
|
continueOnError: options.continueOnError === true,
|
|
139
|
+
progress: context.progress,
|
|
123
140
|
...(typeof options.failedRows === "string" ? { failedRows: options.failedRows } : {}),
|
|
124
141
|
}), [
|
|
125
142
|
manifestOption,
|
|
126
|
-
{ flags: "--continue-on-error", description: "
|
|
143
|
+
{ flags: "--continue-on-error", description: "Keep going after a failed row" },
|
|
127
144
|
{
|
|
128
|
-
flags: "--failed-rows <
|
|
129
|
-
description: "Save failed
|
|
130
|
-
parse: downloadName,
|
|
145
|
+
flags: "--failed-rows <path>",
|
|
146
|
+
description: "Save failed rows as a .json manifest at a relative or absolute path",
|
|
131
147
|
},
|
|
132
|
-
]),
|
|
148
|
+
])),
|
|
133
149
|
]),
|
|
134
|
-
command("comments", "Read and add
|
|
150
|
+
command("comments", "Read and add comments", [
|
|
135
151
|
...contextCommentChildren,
|
|
136
|
-
bodyUpdate("add <issueID>", "Add a comment
|
|
137
|
-
pagedRead("list <issueID>", "List
|
|
152
|
+
bodyUpdate("add <issueID>", "Add a comment", addComment, "text", commentAdded("issueID")),
|
|
153
|
+
pagedRead("list <issueID>", "List comments", listComments, commentTable),
|
|
138
154
|
]),
|
|
139
|
-
]),
|
|
140
|
-
],
|
|
155
|
+
], { examples: issueExamples }),
|
|
156
|
+
]),
|
|
141
157
|
...(runtime === undefined ? {} : { runtime }),
|
|
142
158
|
});
|
|
143
159
|
}
|
package/dist/src/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,SAAS,EACT,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/src/client.d.ts
CHANGED
|
@@ -25,6 +25,7 @@ export interface IssueSearchOptions extends PageOptions {
|
|
|
25
25
|
query?: string;
|
|
26
26
|
/** Read every page; fail instead of returning more issues. */
|
|
27
27
|
maxResults?: number;
|
|
28
|
+
progress?: (message: string) => void;
|
|
28
29
|
/** Fail when this command's decoded response bytes exceed the budget. */
|
|
29
30
|
maxBytes?: number;
|
|
30
31
|
}
|
|
@@ -32,6 +33,7 @@ export interface ByteBudget {
|
|
|
32
33
|
remaining: number;
|
|
33
34
|
}
|
|
34
35
|
export declare function requiredText(value: string, label: string): string;
|
|
36
|
+
export declare function inputFilePath(value: string): string;
|
|
35
37
|
export declare function fields(options: ProjectionOptions, defaults: string): string;
|
|
36
38
|
export declare function page(options: PageOptions, defaults: string): Record<string, string>;
|
|
37
39
|
export declare function encodedID(id: string, label?: string): string;
|
|
@@ -49,11 +51,12 @@ export declare function readCollection(connection: Connection, path: string, que
|
|
|
49
51
|
* Read an offset collection in server order until a short page proves the selection complete.
|
|
50
52
|
* Repeated string IDs are dropped; offset paging is not a snapshot of a changing dataset.
|
|
51
53
|
*/
|
|
52
|
-
export declare function readPages(connection: Connection, path: string, query: Record<string, string>, { top, skip, maxResults, budget }: {
|
|
54
|
+
export declare function readPages(connection: Connection, path: string, query: Record<string, string>, { top, skip, maxResults, budget, progress }: {
|
|
53
55
|
top: number;
|
|
54
56
|
skip: number;
|
|
55
57
|
maxResults?: number;
|
|
56
58
|
budget?: ByteBudget | undefined;
|
|
59
|
+
progress?: ((message: string) => void) | undefined;
|
|
57
60
|
}): Promise<YouTrackObject[]>;
|
|
58
61
|
type ResourcePath = string | ((...arguments_: never[]) => string);
|
|
59
62
|
type ResourcePathArguments<Path extends ResourcePath> = Path extends (...arguments_: infer Arguments extends string[]) => string ? Arguments : [];
|
|
@@ -67,7 +70,7 @@ export declare const listProjects: (connection: Connection, options?: PageOption
|
|
|
67
70
|
export declare function listIssues(connection: Connection, options?: IssueSearchOptions): Promise<YouTrackObject[]>;
|
|
68
71
|
export declare const getIssue: (connection: Connection, id: string, options?: ProjectionOptions | undefined) => Promise<YouTrackObject>;
|
|
69
72
|
export declare const listComments: (connection: Connection, issueID: string, options?: PageOptions | undefined) => Promise<YouTrackObject[]>;
|
|
70
|
-
export declare function mutationBody(value: unknown
|
|
73
|
+
export declare function mutationBody(value: unknown): YouTrackObject;
|
|
71
74
|
export declare function narrative(value: unknown, label: string): string;
|
|
72
75
|
export declare function nullableText(value: unknown, label: string): string | null;
|
|
73
76
|
export declare function mutate(connection: Connection, path: string, body: YouTrackObject, projection: string): Promise<YouTrackObject | null>;
|
package/dist/src/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAChC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,eAAO,MAAM,eAAe,gGAAgG,CAAC;AAE7H,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
|