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.
Files changed (28) hide show
  1. package/dist/commands/issue/attachment/delete.d.ts +3 -0
  2. package/dist/commands/issue/attachment/delete.d.ts.map +1 -0
  3. package/dist/commands/issue/attachment/delete.js +20 -0
  4. package/dist/commands/issue/attachment/delete.js.map +1 -0
  5. package/dist/commands/issue/attachment/download-all.d.ts +3 -0
  6. package/dist/commands/issue/attachment/download-all.d.ts.map +1 -0
  7. package/dist/commands/issue/attachment/download-all.js +53 -0
  8. package/dist/commands/issue/attachment/download-all.js.map +1 -0
  9. package/dist/commands/issue/attachment/download.d.ts +3 -0
  10. package/dist/commands/issue/attachment/download.d.ts.map +1 -0
  11. package/dist/commands/issue/attachment/download.js +35 -0
  12. package/dist/commands/issue/attachment/download.js.map +1 -0
  13. package/dist/commands/issue/attachment/index.d.ts +3 -0
  14. package/dist/commands/issue/attachment/index.d.ts.map +1 -0
  15. package/dist/commands/issue/attachment/index.js +24 -0
  16. package/dist/commands/issue/attachment/index.js.map +1 -0
  17. package/dist/commands/issue/attachment/list.d.ts +3 -0
  18. package/dist/commands/issue/attachment/list.d.ts.map +1 -0
  19. package/dist/commands/issue/attachment/list.js +33 -0
  20. package/dist/commands/issue/attachment/list.js.map +1 -0
  21. package/dist/commands/issue/attachment/upload.d.ts +3 -0
  22. package/dist/commands/issue/attachment/upload.d.ts.map +1 -0
  23. package/dist/commands/issue/attachment/upload.js +35 -0
  24. package/dist/commands/issue/attachment/upload.js.map +1 -0
  25. package/dist/commands/issue/index.d.ts.map +1 -1
  26. package/dist/commands/issue/index.js +4 -1
  27. package/dist/commands/issue/index.js.map +1 -1
  28. package/package.json +2 -2
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function deleteAttachment(parent: Command): void;
3
+ //# sourceMappingURL=delete.d.ts.map
@@ -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,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function downloadAll(parent: Command): void;
3
+ //# sourceMappingURL=download-all.d.ts.map
@@ -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,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function download(parent: Command): void;
3
+ //# sourceMappingURL=download.d.ts.map
@@ -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,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerAttachmentCommands(parent: Command): void;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function list(parent: Command): void;
3
+ //# sourceMappingURL=list.d.ts.map
@@ -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,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function upload(parent: Command): void;
3
+ //# sourceMappingURL=upload.d.ts.map
@@ -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;AAkBpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,QA+BrD"}
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
- attachments(issue);
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;;;;;;;CAOL,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,WAAW,CAAC,KAAK,CAAC,CAAC;IACnB,WAAW,CAAC,KAAK,CAAC,CAAC;AACrB,CAAC"}
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.8",
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.22"
16
+ "jira-data-center-client": "1.0.23"
17
17
  },
18
18
  "devDependencies": {
19
19
  "@types/node": "24.10.4",