jiradc-cli 0.0.8 → 0.0.9
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/issue/attachment/delete.d.ts +3 -0
- package/dist/commands/issue/attachment/delete.d.ts.map +1 -0
- package/dist/commands/issue/attachment/delete.js +20 -0
- package/dist/commands/issue/attachment/delete.js.map +1 -0
- package/dist/commands/issue/attachment/download-all.d.ts +3 -0
- package/dist/commands/issue/attachment/download-all.d.ts.map +1 -0
- package/dist/commands/issue/attachment/download-all.js +53 -0
- package/dist/commands/issue/attachment/download-all.js.map +1 -0
- package/dist/commands/issue/attachment/download.d.ts +3 -0
- package/dist/commands/issue/attachment/download.d.ts.map +1 -0
- package/dist/commands/issue/attachment/download.js +35 -0
- package/dist/commands/issue/attachment/download.js.map +1 -0
- package/dist/commands/issue/attachment/index.d.ts +3 -0
- package/dist/commands/issue/attachment/index.d.ts.map +1 -0
- package/dist/commands/issue/attachment/index.js +24 -0
- package/dist/commands/issue/attachment/index.js.map +1 -0
- package/dist/commands/issue/attachment/list.d.ts +3 -0
- package/dist/commands/issue/attachment/list.d.ts.map +1 -0
- package/dist/commands/issue/attachment/list.js +33 -0
- package/dist/commands/issue/attachment/list.js.map +1 -0
- package/dist/commands/issue/attachment/upload.d.ts +3 -0
- package/dist/commands/issue/attachment/upload.d.ts.map +1 -0
- package/dist/commands/issue/attachment/upload.js +35 -0
- package/dist/commands/issue/attachment/upload.js.map +1 -0
- package/dist/commands/issue/index.d.ts.map +1 -1
- package/dist/commands/issue/index.js +4 -1
- package/dist/commands/issue/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../../src/commands/issue/attachment/delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,QAe/C"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { getClient } from '../../../utils/client.js';
|
|
2
|
+
import { output, handleError } from '../../../utils/output.js';
|
|
3
|
+
export function deleteAttachment(parent) {
|
|
4
|
+
parent
|
|
5
|
+
.command('delete')
|
|
6
|
+
.description('Delete an attachment by ID')
|
|
7
|
+
.requiredOption('--id <attachmentId>', 'Attachment ID to delete')
|
|
8
|
+
.addHelpText('after', '\nExamples:\n jiradc issue attachment delete --id 12345')
|
|
9
|
+
.action(async (opts) => {
|
|
10
|
+
try {
|
|
11
|
+
const client = getClient();
|
|
12
|
+
await client.issues.deleteAttachment({ attachmentId: opts.id });
|
|
13
|
+
output({ deleted: true, attachmentId: opts.id });
|
|
14
|
+
}
|
|
15
|
+
catch (err) {
|
|
16
|
+
handleError(err);
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=delete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../../src/commands/issue/attachment/delete.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,UAAU,gBAAgB,CAAC,MAAe;IAC9C,MAAM;SACH,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,4BAA4B,CAAC;SACzC,cAAc,CAAC,qBAAqB,EAAE,yBAAyB,CAAC;SAChE,WAAW,CAAC,OAAO,EAAE,0DAA0D,CAAC;SAChF,MAAM,CAAC,KAAK,EAAE,IAAoB,EAAE,EAAE;QACrC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;YAC3B,MAAM,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAChE,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"download-all.d.ts","sourceRoot":"","sources":["../../../../src/commands/issue/attachment/download-all.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,QAkD1C"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { mkdirSync } from 'fs';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
import { getClient } from '../../../utils/client.js';
|
|
4
|
+
import { output, handleError } from '../../../utils/output.js';
|
|
5
|
+
export function downloadAll(parent) {
|
|
6
|
+
parent
|
|
7
|
+
.command('download-all <key>')
|
|
8
|
+
.description('Download all attachments from an issue')
|
|
9
|
+
.requiredOption('--output <dir>', 'Local directory to save attachments into')
|
|
10
|
+
.addHelpText('after', '\nExamples:\n jiradc issue attachment download-all AI-73 --output ./downloads')
|
|
11
|
+
.action(async (key, opts) => {
|
|
12
|
+
try {
|
|
13
|
+
const client = getClient();
|
|
14
|
+
mkdirSync(opts.output, { recursive: true });
|
|
15
|
+
const issue = await client.issues.get({
|
|
16
|
+
issueKeyOrId: key,
|
|
17
|
+
fields: ['attachment'],
|
|
18
|
+
});
|
|
19
|
+
const atts = issue.fields.attachment ?? [];
|
|
20
|
+
if (atts.length === 0) {
|
|
21
|
+
output({ issueKey: key, downloaded: 0, files: [] });
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const results = [];
|
|
25
|
+
const failed = [];
|
|
26
|
+
for (const att of atts) {
|
|
27
|
+
if (!att.content) {
|
|
28
|
+
failed.push({ filename: att.filename, error: 'No content URL' });
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
const destPath = join(opts.output, att.filename);
|
|
32
|
+
try {
|
|
33
|
+
await client.issues.downloadAttachment({ url: att.content, destinationPath: destPath });
|
|
34
|
+
results.push({ filename: att.filename, size: att.size, path: destPath });
|
|
35
|
+
}
|
|
36
|
+
catch (err) {
|
|
37
|
+
failed.push({ filename: att.filename, error: String(err) });
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
output({
|
|
41
|
+
issueKey: key,
|
|
42
|
+
downloaded: results.length,
|
|
43
|
+
total: atts.length,
|
|
44
|
+
files: results,
|
|
45
|
+
...(failed.length > 0 && { failed }),
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
handleError(err);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=download-all.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"download-all.js","sourceRoot":"","sources":["../../../../src/commands/issue/attachment/download-all.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,UAAU,WAAW,CAAC,MAAe;IACzC,MAAM;SACH,OAAO,CAAC,oBAAoB,CAAC;SAC7B,WAAW,CAAC,wCAAwC,CAAC;SACrD,cAAc,CAAC,gBAAgB,EAAE,0CAA0C,CAAC;SAC5E,WAAW,CAAC,OAAO,EAAE,gFAAgF,CAAC;SACtG,MAAM,CAAC,KAAK,EAAE,GAAW,EAAE,IAAwB,EAAE,EAAE;QACtD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;YAC3B,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAE5C,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;gBACpC,YAAY,EAAE,GAAG;gBACjB,MAAM,EAAE,CAAC,YAAY,CAAC;aACvB,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;YAC3C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtB,MAAM,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;gBACpD,OAAO;YACT,CAAC;YAED,MAAM,OAAO,GAAuD,EAAE,CAAC;YACvE,MAAM,MAAM,GAA0C,EAAE,CAAC;YAEzD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;oBACjB,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC;oBACjE,SAAS;gBACX,CAAC;gBACD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACjD,IAAI,CAAC;oBACH,MAAM,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC,CAAC;oBACxF,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC3E,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC9D,CAAC;YACH,CAAC;YAED,MAAM,CAAC;gBACL,QAAQ,EAAE,GAAG;gBACb,UAAU,EAAE,OAAO,CAAC,MAAM;gBAC1B,KAAK,EAAE,IAAI,CAAC,MAAM;gBAClB,KAAK,EAAE,OAAO;gBACd,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;aACrC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../../../src/commands/issue/attachment/download.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,QAAQ,CAAC,MAAM,EAAE,OAAO,QAkCvC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { getClient } from '../../../utils/client.js';
|
|
2
|
+
import { output, handleError } from '../../../utils/output.js';
|
|
3
|
+
export function download(parent) {
|
|
4
|
+
parent
|
|
5
|
+
.command('download <key>')
|
|
6
|
+
.description('Download a single attachment by ID')
|
|
7
|
+
.requiredOption('--id <attachmentId>', 'Attachment ID')
|
|
8
|
+
.requiredOption('--output <path>', 'Local file path to save the attachment')
|
|
9
|
+
.addHelpText('after', '\nExamples:\n jiradc issue attachment download AI-73 --id 12345 --output ./report.pdf')
|
|
10
|
+
.action(async (key, opts) => {
|
|
11
|
+
try {
|
|
12
|
+
const client = getClient();
|
|
13
|
+
// Get attachment metadata to find the content URL
|
|
14
|
+
const attachment = await client.issues.getAttachment({ attachmentId: opts.id });
|
|
15
|
+
if (!attachment.content) {
|
|
16
|
+
throw new Error(`Attachment ${opts.id} has no content URL`);
|
|
17
|
+
}
|
|
18
|
+
await client.issues.downloadAttachment({
|
|
19
|
+
url: attachment.content,
|
|
20
|
+
destinationPath: opts.output,
|
|
21
|
+
});
|
|
22
|
+
output({
|
|
23
|
+
downloaded: true,
|
|
24
|
+
issueKey: key,
|
|
25
|
+
path: opts.output,
|
|
26
|
+
filename: attachment.filename,
|
|
27
|
+
size: attachment.size,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
handleError(err);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=download.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"download.js","sourceRoot":"","sources":["../../../../src/commands/issue/attachment/download.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,UAAU,QAAQ,CAAC,MAAe;IACtC,MAAM;SACH,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,oCAAoC,CAAC;SACjD,cAAc,CAAC,qBAAqB,EAAE,eAAe,CAAC;SACtD,cAAc,CAAC,iBAAiB,EAAE,wCAAwC,CAAC;SAC3E,WAAW,CAAC,OAAO,EAAE,wFAAwF,CAAC;SAC9G,MAAM,CAAC,KAAK,EAAE,GAAW,EAAE,IAAoC,EAAE,EAAE;QAClE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;YAE3B,kDAAkD;YAClD,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAEhF,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,CAAC,EAAE,qBAAqB,CAAC,CAAC;YAC9D,CAAC;YAED,MAAM,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC;gBACrC,GAAG,EAAE,UAAU,CAAC,OAAO;gBACvB,eAAe,EAAE,IAAI,CAAC,MAAM;aAC7B,CAAC,CAAC;YAEH,MAAM,CAAC;gBACL,UAAU,EAAE,IAAI;gBAChB,QAAQ,EAAE,GAAG;gBACb,IAAI,EAAE,IAAI,CAAC,MAAM;gBACjB,QAAQ,EAAE,UAAU,CAAC,QAAQ;gBAC7B,IAAI,EAAE,UAAU,CAAC,IAAI;aACtB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/issue/attachment/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,OAAO,QAqBzD"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { deleteAttachment } from './delete.js';
|
|
2
|
+
import { downloadAll } from './download-all.js';
|
|
3
|
+
import { download } from './download.js';
|
|
4
|
+
import { list } from './list.js';
|
|
5
|
+
import { upload } from './upload.js';
|
|
6
|
+
export function registerAttachmentCommands(parent) {
|
|
7
|
+
const attachment = parent
|
|
8
|
+
.command('attachment')
|
|
9
|
+
.description('Attachment operations')
|
|
10
|
+
.addHelpText('after', `
|
|
11
|
+
Examples:
|
|
12
|
+
$ jiradc issue attachment list AI-73
|
|
13
|
+
$ jiradc issue attachment upload AI-73 --files ./report.pdf
|
|
14
|
+
$ jiradc issue attachment download AI-73 --id 12345 --output ./report.pdf
|
|
15
|
+
$ jiradc issue attachment download-all AI-73 --output ./downloads
|
|
16
|
+
$ jiradc issue attachment delete --id 12345
|
|
17
|
+
`);
|
|
18
|
+
upload(attachment);
|
|
19
|
+
list(attachment);
|
|
20
|
+
download(attachment);
|
|
21
|
+
downloadAll(attachment);
|
|
22
|
+
deleteAttachment(attachment);
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/issue/attachment/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,UAAU,0BAA0B,CAAC,MAAe;IACxD,MAAM,UAAU,GAAG,MAAM;SACtB,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CAAC,uBAAuB,CAAC;SACpC,WAAW,CACV,OAAO,EACP;;;;;;;CAOL,CACI,CAAC;IAEJ,MAAM,CAAC,UAAU,CAAC,CAAC;IACnB,IAAI,CAAC,UAAU,CAAC,CAAC;IACjB,QAAQ,CAAC,UAAU,CAAC,CAAC;IACrB,WAAW,CAAC,UAAU,CAAC,CAAC;IACxB,gBAAgB,CAAC,UAAU,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../src/commands/issue/attachment/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,IAAI,CAAC,MAAM,EAAE,OAAO,QA6BnC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { getClient } from '../../../utils/client.js';
|
|
2
|
+
import { output, handleError } from '../../../utils/output.js';
|
|
3
|
+
export function list(parent) {
|
|
4
|
+
parent
|
|
5
|
+
.command('list <key>')
|
|
6
|
+
.description('List attachments on an issue')
|
|
7
|
+
.addHelpText('after', '\nExamples:\n jiradc issue attachment list AI-73')
|
|
8
|
+
.action(async (key) => {
|
|
9
|
+
try {
|
|
10
|
+
const client = getClient();
|
|
11
|
+
const issue = await client.issues.get({
|
|
12
|
+
issueKeyOrId: key,
|
|
13
|
+
fields: ['attachment'],
|
|
14
|
+
});
|
|
15
|
+
const atts = issue.fields.attachment ?? [];
|
|
16
|
+
output({
|
|
17
|
+
issueKey: key,
|
|
18
|
+
total: atts.length,
|
|
19
|
+
attachments: atts.map((a) => ({
|
|
20
|
+
id: a.id,
|
|
21
|
+
filename: a.filename,
|
|
22
|
+
size: a.size,
|
|
23
|
+
mimeType: a.mimeType,
|
|
24
|
+
created: a.created,
|
|
25
|
+
})),
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
catch (err) {
|
|
29
|
+
handleError(err);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/issue/attachment/list.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,UAAU,IAAI,CAAC,MAAe;IAClC,MAAM;SACH,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CAAC,8BAA8B,CAAC;SAC3C,WAAW,CAAC,OAAO,EAAE,mDAAmD,CAAC;SACzE,MAAM,CAAC,KAAK,EAAE,GAAW,EAAE,EAAE;QAC5B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;gBACpC,YAAY,EAAE,GAAG;gBACjB,MAAM,EAAE,CAAC,YAAY,CAAC;aACvB,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;YAC3C,MAAM,CAAC;gBACL,QAAQ,EAAE,GAAG;gBACb,KAAK,EAAE,IAAI,CAAC,MAAM;gBAClB,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC5B,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,QAAQ,EAAE,CAAC,CAAC,QAAQ;oBACpB,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;oBACpB,OAAO,EAAE,CAAC,CAAC,OAAO;iBACnB,CAAC,CAAC;aACJ,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../../../src/commands/issue/attachment/upload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,MAAM,CAAC,MAAM,EAAE,OAAO,QAmCrC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { getClient } from '../../../utils/client.js';
|
|
2
|
+
import { output, handleError } from '../../../utils/output.js';
|
|
3
|
+
export function upload(parent) {
|
|
4
|
+
parent
|
|
5
|
+
.command('upload <key>')
|
|
6
|
+
.description('Upload attachments to an issue')
|
|
7
|
+
.requiredOption('--files <paths>', 'Comma-separated file paths to upload')
|
|
8
|
+
.addHelpText('after', '\nExamples:\n jiradc issue attachment upload AI-73 --files ./report.pdf\n jiradc issue attachment upload AI-73 --files ./a.txt,./b.png')
|
|
9
|
+
.action(async (key, opts) => {
|
|
10
|
+
try {
|
|
11
|
+
const client = getClient();
|
|
12
|
+
const filePaths = opts.files.split(',').map((f) => f.trim());
|
|
13
|
+
const results = [];
|
|
14
|
+
for (const filePath of filePaths) {
|
|
15
|
+
const attachments = await client.issues.addAttachment({ issueKeyOrId: key, filePath });
|
|
16
|
+
results.push(...attachments);
|
|
17
|
+
}
|
|
18
|
+
output({
|
|
19
|
+
issueKey: key,
|
|
20
|
+
uploaded: results.length,
|
|
21
|
+
attachments: results.map((a) => ({
|
|
22
|
+
id: a.id,
|
|
23
|
+
filename: a.filename,
|
|
24
|
+
size: a.size,
|
|
25
|
+
mimeType: a.mimeType,
|
|
26
|
+
created: a.created,
|
|
27
|
+
})),
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
handleError(err);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=upload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upload.js","sourceRoot":"","sources":["../../../../src/commands/issue/attachment/upload.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,UAAU,MAAM,CAAC,MAAe;IACpC,MAAM;SACH,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CAAC,gCAAgC,CAAC;SAC7C,cAAc,CAAC,iBAAiB,EAAE,sCAAsC,CAAC;SACzE,WAAW,CACV,OAAO,EACP,0IAA0I,CAC3I;SACA,MAAM,CAAC,KAAK,EAAE,GAAW,EAAE,IAAuB,EAAE,EAAE;QACrD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;YAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7D,MAAM,OAAO,GAAG,EAAE,CAAC;YAEnB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBACjC,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACvF,OAAO,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;YAC/B,CAAC;YAED,MAAM,CAAC;gBACL,QAAQ,EAAE,GAAG;gBACb,QAAQ,EAAE,OAAO,CAAC,MAAM;gBACxB,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC/B,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,QAAQ,EAAE,CAAC,CAAC,QAAQ;oBACpB,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;oBACpB,OAAO,EAAE,CAAC,CAAC,OAAO;iBACnB,CAAC,CAAC;aACJ,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/issue/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/issue/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmBpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,QAiCrD"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { registerAttachmentCommands } from './attachment/index.js';
|
|
1
2
|
import { attachments } from './attachments.js';
|
|
2
3
|
import { batchChangelog } from './batch-changelog.js';
|
|
3
4
|
import { batchCreate } from './batch-create.js';
|
|
@@ -25,6 +26,7 @@ Examples:
|
|
|
25
26
|
$ jiradc issue create --project AI --type Task --summary "Fix the bug" --priority High
|
|
26
27
|
$ jiradc issue update AI-73 --fields '{"summary": "New title"}'
|
|
27
28
|
$ jiradc issue transition AI-73 --to 11
|
|
29
|
+
$ jiradc issue attachment list AI-73
|
|
28
30
|
`);
|
|
29
31
|
get(issue);
|
|
30
32
|
search(issue);
|
|
@@ -40,7 +42,8 @@ Examples:
|
|
|
40
42
|
changelog(issue);
|
|
41
43
|
batchChangelog(issue);
|
|
42
44
|
linkEpic(issue);
|
|
43
|
-
|
|
45
|
+
registerAttachmentCommands(issue);
|
|
46
|
+
attachments(issue); // backward-compat alias for `issue attachment download-all`
|
|
44
47
|
batchCreate(issue);
|
|
45
48
|
}
|
|
46
49
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/issue/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,MAAM,KAAK,GAAG,OAAO;SAClB,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,kBAAkB,CAAC;SAC/B,WAAW,CACV,OAAO,EACP
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/issue/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,MAAM,KAAK,GAAG,OAAO;SAClB,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,kBAAkB,CAAC;SAC/B,WAAW,CACV,OAAO,EACP;;;;;;;;CAQL,CACI,CAAC;IACJ,GAAG,CAAC,KAAK,CAAC,CAAC;IACX,MAAM,CAAC,KAAK,CAAC,CAAC;IACd,MAAM,CAAC,KAAK,CAAC,CAAC;IACd,MAAM,CAAC,KAAK,CAAC,CAAC;IACd,WAAW,CAAC,KAAK,CAAC,CAAC;IACnB,UAAU,CAAC,KAAK,CAAC,CAAC;IAClB,WAAW,CAAC,KAAK,CAAC,CAAC;IACnB,OAAO,CAAC,KAAK,CAAC,CAAC;IACf,WAAW,CAAC,KAAK,CAAC,CAAC;IACnB,OAAO,CAAC,KAAK,CAAC,CAAC;IACf,UAAU,CAAC,KAAK,CAAC,CAAC;IAClB,SAAS,CAAC,KAAK,CAAC,CAAC;IACjB,cAAc,CAAC,KAAK,CAAC,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChB,0BAA0B,CAAC,KAAK,CAAC,CAAC;IAClC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,4DAA4D;IAChF,WAAW,CAAC,KAAK,CAAC,CAAC;AACrB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jiradc-cli",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.9",
|
|
4
4
|
"publish": true,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"dependencies": {
|
|
14
14
|
"commander": "^13.1.0",
|
|
15
15
|
"dotenv": "17.2.3",
|
|
16
|
-
"jira-data-center-client": "1.0.
|
|
16
|
+
"jira-data-center-client": "1.0.23"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
19
|
"@types/node": "24.10.4",
|