centy 0.4.0 → 0.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/dist/commands/create/item-type.d.ts +20 -0
- package/dist/commands/create/item-type.d.ts.map +1 -0
- package/dist/commands/create/item-type.js +90 -0
- package/dist/commands/create/item-type.js.map +1 -0
- package/dist/commands/init.d.ts +0 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +0 -4
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/link.d.ts +19 -0
- package/dist/commands/link.d.ts.map +1 -0
- package/dist/commands/link.js +74 -0
- package/dist/commands/link.js.map +1 -0
- package/dist/commands/links.d.ts +18 -0
- package/dist/commands/links.d.ts.map +1 -0
- package/dist/commands/links.js +70 -0
- package/dist/commands/links.js.map +1 -0
- package/dist/commands/list/link-types.d.ts +14 -0
- package/dist/commands/list/link-types.d.ts.map +1 -0
- package/dist/commands/list/link-types.js +59 -0
- package/dist/commands/list/link-types.js.map +1 -0
- package/dist/commands/unlink.d.ts +19 -0
- package/dist/commands/unlink.d.ts.map +1 -0
- package/dist/commands/unlink.js +73 -0
- package/dist/commands/unlink.js.map +1 -0
- package/dist/commands/version.d.ts +13 -0
- package/dist/commands/version.d.ts.map +1 -0
- package/dist/commands/version.js +51 -0
- package/dist/commands/version.js.map +1 -0
- package/dist/daemon/daemon-create-item-type.d.ts +6 -0
- package/dist/daemon/daemon-create-item-type.d.ts.map +1 -0
- package/dist/daemon/daemon-create-item-type.js +9 -0
- package/dist/daemon/daemon-create-item-type.js.map +1 -0
- package/dist/daemon/daemon-create-link.d.ts +6 -0
- package/dist/daemon/daemon-create-link.d.ts.map +1 -0
- package/dist/daemon/daemon-create-link.js +9 -0
- package/dist/daemon/daemon-create-link.js.map +1 -0
- package/dist/daemon/daemon-delete-link.d.ts +6 -0
- package/dist/daemon/daemon-delete-link.d.ts.map +1 -0
- package/dist/daemon/daemon-delete-link.js +9 -0
- package/dist/daemon/daemon-delete-link.js.map +1 -0
- package/dist/daemon/daemon-get-available-link-types.d.ts +6 -0
- package/dist/daemon/daemon-get-available-link-types.d.ts.map +1 -0
- package/dist/daemon/daemon-get-available-link-types.js +9 -0
- package/dist/daemon/daemon-get-available-link-types.js.map +1 -0
- package/dist/daemon/daemon-list-links.d.ts +6 -0
- package/dist/daemon/daemon-list-links.d.ts.map +1 -0
- package/dist/daemon/daemon-list-links.js +9 -0
- package/dist/daemon/daemon-list-links.js.map +1 -0
- package/dist/daemon/daemon-open-in-temp-workspace.d.ts +2 -2
- package/dist/daemon/daemon-open-in-temp-workspace.d.ts.map +1 -1
- package/dist/daemon/daemon-open-in-temp-workspace.js.map +1 -1
- package/dist/daemon/grpc-client-extended.d.ts +4 -8
- package/dist/daemon/grpc-client-extended.d.ts.map +1 -1
- package/dist/daemon/grpc-client-items.d.ts +19 -0
- package/dist/daemon/grpc-client-items.d.ts.map +1 -0
- package/dist/daemon/grpc-client-items.js +2 -0
- package/dist/daemon/grpc-client-items.js.map +1 -0
- package/dist/daemon/grpc-client-link.d.ts +12 -0
- package/dist/daemon/grpc-client-link.d.ts.map +1 -0
- package/dist/daemon/grpc-client-link.js +2 -0
- package/dist/daemon/grpc-client-link.js.map +1 -0
- package/dist/daemon/load-proto.d.ts +3 -1
- package/dist/daemon/load-proto.d.ts.map +1 -1
- package/dist/daemon/load-proto.js +3 -1
- package/dist/daemon/load-proto.js.map +1 -1
- package/dist/daemon/types/config.d.ts +0 -1
- package/dist/daemon/types/config.d.ts.map +1 -1
- package/dist/daemon/types/generic-item.d.ts +104 -0
- package/dist/daemon/types/generic-item.d.ts.map +1 -0
- package/dist/daemon/types/generic-item.js +6 -0
- package/dist/daemon/types/generic-item.js.map +1 -0
- package/dist/daemon/types/item-type.d.ts +37 -0
- package/dist/daemon/types/item-type.d.ts.map +1 -0
- package/dist/daemon/types/item-type.js +6 -0
- package/dist/daemon/types/item-type.js.map +1 -0
- package/dist/daemon/types.d.ts +2 -0
- package/dist/daemon/types.d.ts.map +1 -1
- package/dist/daemon/types.js +2 -0
- package/dist/daemon/types.js.map +1 -1
- package/dist/lib/create-item-type/features.d.ts +18 -0
- package/dist/lib/create-item-type/features.d.ts.map +1 -0
- package/dist/lib/create-item-type/features.js +58 -0
- package/dist/lib/create-item-type/features.js.map +1 -0
- package/dist/lib/init/config-builder.d.ts.map +1 -1
- package/dist/lib/init/config-builder.js +0 -2
- package/dist/lib/init/config-builder.js.map +1 -1
- package/dist/types/init-options.d.ts +0 -2
- package/dist/types/init-options.d.ts.map +1 -1
- package/dist/utils/parse-link-target.d.ts +5 -0
- package/dist/utils/parse-link-target.d.ts.map +1 -0
- package/dist/utils/parse-link-target.js +16 -0
- package/dist/utils/parse-link-target.js.map +1 -0
- package/oclif.manifest.json +446 -128
- package/package.json +1 -1
- package/proto/{centy.proto → centy/v1/centy.proto} +44 -15
- package/proto/centy/v1/generic_item.proto +177 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
/**
|
|
3
|
+
* Create a new custom item type in the .centy folder
|
|
4
|
+
*/
|
|
5
|
+
export default class CreateItemType extends Command {
|
|
6
|
+
static description: string;
|
|
7
|
+
static examples: string[];
|
|
8
|
+
static flags: {
|
|
9
|
+
name: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
plural: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
identifier: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
statuses: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
'default-status': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
+
'priority-levels': import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
features: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
|
+
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
17
|
+
};
|
|
18
|
+
run(): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=item-type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"item-type.d.ts","sourceRoot":"","sources":["../../../src/commands/create/item-type.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAU5C;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,OAAO;IAEjD,OAAgB,WAAW,SAAkC;IAG7D,OAAgB,QAAQ,WAGvB;IAGD,OAAgB,KAAK;;;;;;;;;MAiCpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA2ClC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
// eslint-disable-next-line import/order
|
|
2
|
+
import { Command, Flags } from '@oclif/core';
|
|
3
|
+
import { daemonCreateItemType } from '../../daemon/daemon-create-item-type.js';
|
|
4
|
+
import { projectFlag } from '../../flags/project-flag.js';
|
|
5
|
+
import { VALID_FEATURES, parseFeatures, } from '../../lib/create-item-type/features.js';
|
|
6
|
+
import { resolveProjectPath } from '../../utils/resolve-project-path.js';
|
|
7
|
+
/**
|
|
8
|
+
* Create a new custom item type in the .centy folder
|
|
9
|
+
*/
|
|
10
|
+
// eslint-disable-next-line custom/no-default-class-export, class-export/class-export
|
|
11
|
+
export default class CreateItemType extends Command {
|
|
12
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
13
|
+
static description = 'Create a new custom item type';
|
|
14
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
15
|
+
static examples = [
|
|
16
|
+
'<%= config.bin %> create item-type --name "Bug" --plural "bugs" --identifier uuid --statuses open,in-progress,closed --default-status open --priority-levels 3 --features display-number,status,priority,move,duplicate',
|
|
17
|
+
'<%= config.bin %> create item-type --name "Task" --plural "tasks" --identifier slug --statuses todo,doing,done --default-status todo --features status,priority',
|
|
18
|
+
];
|
|
19
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
20
|
+
static flags = {
|
|
21
|
+
name: Flags.string({
|
|
22
|
+
char: 'n',
|
|
23
|
+
description: 'Singular display name (e.g., "Bug", "Task", "Epic")',
|
|
24
|
+
required: true,
|
|
25
|
+
}),
|
|
26
|
+
plural: Flags.string({
|
|
27
|
+
description: 'Folder/type key, lowercase alphanumeric + hyphens (e.g., "bugs")',
|
|
28
|
+
required: true,
|
|
29
|
+
}),
|
|
30
|
+
identifier: Flags.string({
|
|
31
|
+
description: 'Identifier type for items',
|
|
32
|
+
options: ['uuid', 'slug'],
|
|
33
|
+
required: true,
|
|
34
|
+
}),
|
|
35
|
+
statuses: Flags.string({
|
|
36
|
+
description: 'Comma-separated list of allowed statuses',
|
|
37
|
+
required: true,
|
|
38
|
+
}),
|
|
39
|
+
'default-status': Flags.string({
|
|
40
|
+
description: 'Default status for new items (must be in statuses list)',
|
|
41
|
+
required: true,
|
|
42
|
+
}),
|
|
43
|
+
'priority-levels': Flags.integer({
|
|
44
|
+
description: 'Number of priority levels (0 = none)',
|
|
45
|
+
default: 0,
|
|
46
|
+
}),
|
|
47
|
+
features: Flags.string({
|
|
48
|
+
char: 'f',
|
|
49
|
+
description: `Comma-separated features (${VALID_FEATURES.join(', ')})`,
|
|
50
|
+
}),
|
|
51
|
+
project: projectFlag,
|
|
52
|
+
};
|
|
53
|
+
async run() {
|
|
54
|
+
const { flags } = await this.parse(CreateItemType);
|
|
55
|
+
const cwd = await resolveProjectPath(flags.project);
|
|
56
|
+
const statuses = flags.statuses.split(',').map(s => s.trim());
|
|
57
|
+
const defaultStatus = flags['default-status'];
|
|
58
|
+
if (!statuses.includes(defaultStatus)) {
|
|
59
|
+
this.error(`Default status "${defaultStatus}" must be one of: ${statuses.join(', ')}`);
|
|
60
|
+
}
|
|
61
|
+
const features = parseFeatures(flags.features);
|
|
62
|
+
const response = await daemonCreateItemType({
|
|
63
|
+
projectPath: cwd,
|
|
64
|
+
name: flags.name,
|
|
65
|
+
plural: flags.plural,
|
|
66
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
67
|
+
identifier: flags.identifier,
|
|
68
|
+
features,
|
|
69
|
+
statuses,
|
|
70
|
+
defaultStatus,
|
|
71
|
+
priorityLevels: flags['priority-levels'],
|
|
72
|
+
customFields: [],
|
|
73
|
+
});
|
|
74
|
+
if (!response.success) {
|
|
75
|
+
const errorMsg = response.error !== '' ? response.error : 'Failed to create item type';
|
|
76
|
+
this.error(errorMsg);
|
|
77
|
+
}
|
|
78
|
+
this.log(`\nCreated item type "${flags.name}" (${flags.plural})`);
|
|
79
|
+
this.log(` Identifier: ${flags.identifier}`);
|
|
80
|
+
this.log(` Statuses: ${statuses.join(', ')}`);
|
|
81
|
+
this.log(` Default status: ${defaultStatus}`);
|
|
82
|
+
if (flags['priority-levels'] > 0) {
|
|
83
|
+
this.log(` Priority levels: ${flags['priority-levels']}`);
|
|
84
|
+
}
|
|
85
|
+
if (features.length > 0 && flags.features !== undefined) {
|
|
86
|
+
this.log(` Features: ${flags.features}`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=item-type.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"item-type.js","sourceRoot":"","sources":["../../../src/commands/create/item-type.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -8,7 +8,6 @@ export default class Init extends Command {
|
|
|
8
8
|
static flags: {
|
|
9
9
|
force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
10
|
'priority-levels': import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
-
'default-state': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
11
|
'allowed-states': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
12
|
version: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
13
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAI5C;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,OAAO;IAEvC,OAAgB,WAAW,SAC0B;IAGrD,OAAgB,QAAQ,WAGvB;IAGD,OAAgB,KAAK
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAI5C;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,OAAO;IAEvC,OAAgB,WAAW,SAC0B;IAGrD,OAAgB,QAAQ,WAGvB;IAGD,OAAgB,KAAK;;;;;MAkBpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAwBlC"}
|
package/dist/commands/init.js
CHANGED
|
@@ -26,9 +26,6 @@ export default class Init extends Command {
|
|
|
26
26
|
min: 1,
|
|
27
27
|
max: 10,
|
|
28
28
|
}),
|
|
29
|
-
'default-state': Flags.string({
|
|
30
|
-
description: 'Default state for new issues (default: "open")',
|
|
31
|
-
}),
|
|
32
29
|
'allowed-states': Flags.string({
|
|
33
30
|
description: 'Comma-separated list of allowed states',
|
|
34
31
|
}),
|
|
@@ -49,7 +46,6 @@ export default class Init extends Command {
|
|
|
49
46
|
force: flags.force,
|
|
50
47
|
cwd,
|
|
51
48
|
priorityLevels: flags['priority-levels'],
|
|
52
|
-
defaultState: flags['default-state'],
|
|
53
49
|
allowedStates,
|
|
54
50
|
version: flags.version,
|
|
55
51
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAE5C,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAE3C;;GAEG;AACH,qFAAqF;AACrF,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,OAAO;IACvC,gDAAgD;IAChD,MAAM,CAAU,WAAW,GACzB,mDAAmD,CAAA;IAErD,gDAAgD;IAChD,MAAM,CAAU,QAAQ,GAAG;QACzB,qCAAqC;QACrC,6CAA6C;KAC9C,CAAA;IAED,gDAAgD;IAChD,MAAM,CAAU,KAAK,GAAG;QACtB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,2CAA2C;YACxD,OAAO,EAAE,KAAK;SACf,CAAC;QACF,eAAe;QACf,iBAAiB,EAAE,KAAK,CAAC,OAAO,CAAC;YAC/B,WAAW,EAAE,8CAA8C;YAC3D,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,EAAE;SACR,CAAC;QACF,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAE5C,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAE3C;;GAEG;AACH,qFAAqF;AACrF,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,OAAO;IACvC,gDAAgD;IAChD,MAAM,CAAU,WAAW,GACzB,mDAAmD,CAAA;IAErD,gDAAgD;IAChD,MAAM,CAAU,QAAQ,GAAG;QACzB,qCAAqC;QACrC,6CAA6C;KAC9C,CAAA;IAED,gDAAgD;IAChD,MAAM,CAAU,KAAK,GAAG;QACtB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,2CAA2C;YACxD,OAAO,EAAE,KAAK;SACf,CAAC;QACF,eAAe;QACf,iBAAiB,EAAE,KAAK,CAAC,OAAO,CAAC;YAC/B,WAAW,EAAE,8CAA8C;YAC3D,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,EAAE;SACR,CAAC;QACF,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC;YAC7B,WAAW,EAAE,wCAAwC;SACtD,CAAC;QACF,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC;YACpB,WAAW,EAAE,0BAA0B;SACxC,CAAC;KACH,CAAA;IAEM,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAExC,sEAAsE;QACtE,gDAAgD;QAChD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QAEpC,mCAAmC;QACnC,MAAM,aAAa,GAAG,KAAK,CAAC,gBAAgB,CAAC;YAC3C,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACvD,CAAC,CAAC,SAAS,CAAA;QAEb,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC;YACxB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,GAAG;YACH,cAAc,EAAE,KAAK,CAAC,iBAAiB,CAAC;YACxC,aAAa;YACb,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAA;QAEF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACd,CAAC;IACH,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
/**
|
|
3
|
+
* Create a link between two entities
|
|
4
|
+
*/
|
|
5
|
+
export default class Link extends Command {
|
|
6
|
+
static args: {
|
|
7
|
+
type: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
8
|
+
id: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
9
|
+
linkType: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
10
|
+
target: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
11
|
+
};
|
|
12
|
+
static description: string;
|
|
13
|
+
static examples: string[];
|
|
14
|
+
static flags: {
|
|
15
|
+
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
|
+
};
|
|
17
|
+
run(): Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=link.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/commands/link.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,OAAO,EAAE,MAAM,aAAa,CAAA;AAW3C;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,OAAO;IAEvC,OAAgB,IAAI;;;;;MAkBnB;IAGD,OAAgB,WAAW,SAAuC;IAGlE,OAAgB,QAAQ,WAIvB;IAGD,OAAgB,KAAK;;MAEpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAqClC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
// eslint-disable-next-line import/order
|
|
2
|
+
import { Args, Command } from '@oclif/core';
|
|
3
|
+
import { daemonCreateLink } from '../daemon/daemon-create-link.js';
|
|
4
|
+
import { projectFlag } from '../flags/project-flag.js';
|
|
5
|
+
import { ensureInitialized, NotInitializedError, } from '../utils/ensure-initialized.js';
|
|
6
|
+
import { parseLinkTarget } from '../utils/parse-link-target.js';
|
|
7
|
+
import { resolveProjectPath } from '../utils/resolve-project-path.js';
|
|
8
|
+
/**
|
|
9
|
+
* Create a link between two entities
|
|
10
|
+
*/
|
|
11
|
+
// eslint-disable-next-line custom/no-default-class-export, class-export/class-export
|
|
12
|
+
export default class Link extends Command {
|
|
13
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
14
|
+
static args = {
|
|
15
|
+
type: Args.string({
|
|
16
|
+
description: 'Source entity type (e.g., issue, doc)',
|
|
17
|
+
required: true,
|
|
18
|
+
}),
|
|
19
|
+
id: Args.string({
|
|
20
|
+
description: 'Source entity ID or slug',
|
|
21
|
+
required: true,
|
|
22
|
+
}),
|
|
23
|
+
linkType: Args.string({
|
|
24
|
+
description: 'Link type (e.g., blocks, relates-to, parent-of)',
|
|
25
|
+
required: true,
|
|
26
|
+
}),
|
|
27
|
+
target: Args.string({
|
|
28
|
+
description: 'Target entity as type:id (e.g., issue:2, doc:getting-started)',
|
|
29
|
+
required: true,
|
|
30
|
+
}),
|
|
31
|
+
};
|
|
32
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
33
|
+
static description = 'Create a link between two entities';
|
|
34
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
35
|
+
static examples = [
|
|
36
|
+
'<%= config.bin %> link issue 1 blocks issue:2',
|
|
37
|
+
'<%= config.bin %> link doc getting-started relates-to issue:5',
|
|
38
|
+
'<%= config.bin %> link issue 1 parent-of issue:3 --project my-project',
|
|
39
|
+
];
|
|
40
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
41
|
+
static flags = {
|
|
42
|
+
project: projectFlag,
|
|
43
|
+
};
|
|
44
|
+
async run() {
|
|
45
|
+
const { args, flags } = await this.parse(Link);
|
|
46
|
+
const cwd = await resolveProjectPath(flags.project);
|
|
47
|
+
try {
|
|
48
|
+
await ensureInitialized(cwd);
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
if (error instanceof NotInitializedError) {
|
|
52
|
+
this.error(error.message);
|
|
53
|
+
}
|
|
54
|
+
throw error instanceof Error ? error : new Error(String(error));
|
|
55
|
+
}
|
|
56
|
+
const parsed = parseLinkTarget(args.target);
|
|
57
|
+
if (parsed === undefined) {
|
|
58
|
+
this.error('Invalid target format. Use type:id (e.g., issue:2, doc:getting-started)');
|
|
59
|
+
}
|
|
60
|
+
const response = await daemonCreateLink({
|
|
61
|
+
projectPath: cwd,
|
|
62
|
+
sourceId: args.id,
|
|
63
|
+
sourceType: args.type,
|
|
64
|
+
targetId: parsed[1],
|
|
65
|
+
targetType: parsed[0],
|
|
66
|
+
linkType: args.linkType,
|
|
67
|
+
});
|
|
68
|
+
if (!response.success) {
|
|
69
|
+
this.error(response.error);
|
|
70
|
+
}
|
|
71
|
+
this.log(`Created link: ${args.type} ${args.id} --[${args.linkType}]--> ${args.target}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=link.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/commands/link.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
/**
|
|
3
|
+
* List all links for an entity
|
|
4
|
+
*/
|
|
5
|
+
export default class Links extends Command {
|
|
6
|
+
static args: {
|
|
7
|
+
type: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
8
|
+
id: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
9
|
+
};
|
|
10
|
+
static description: string;
|
|
11
|
+
static examples: string[];
|
|
12
|
+
static flags: {
|
|
13
|
+
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
14
|
+
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
};
|
|
16
|
+
run(): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=links.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../../src/commands/links.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAA;AAUlD;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,OAAO;IAExC,OAAgB,IAAI;;;MASnB;IAGD,OAAgB,WAAW,SAAiC;IAG5D,OAAgB,QAAQ,WAIvB;IAGD,OAAgB,KAAK;;;MAMpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAoClC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
// eslint-disable-next-line import/order
|
|
2
|
+
import { Args, Command, Flags } from '@oclif/core';
|
|
3
|
+
import { daemonListLinks } from '../daemon/daemon-list-links.js';
|
|
4
|
+
import { projectFlag } from '../flags/project-flag.js';
|
|
5
|
+
import { ensureInitialized, NotInitializedError, } from '../utils/ensure-initialized.js';
|
|
6
|
+
import { resolveProjectPath } from '../utils/resolve-project-path.js';
|
|
7
|
+
/**
|
|
8
|
+
* List all links for an entity
|
|
9
|
+
*/
|
|
10
|
+
// eslint-disable-next-line custom/no-default-class-export, class-export/class-export
|
|
11
|
+
export default class Links extends Command {
|
|
12
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
13
|
+
static args = {
|
|
14
|
+
type: Args.string({
|
|
15
|
+
description: 'Entity type (e.g., issue, doc)',
|
|
16
|
+
required: true,
|
|
17
|
+
}),
|
|
18
|
+
id: Args.string({
|
|
19
|
+
description: 'Entity ID or slug',
|
|
20
|
+
required: true,
|
|
21
|
+
}),
|
|
22
|
+
};
|
|
23
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
24
|
+
static description = 'List all links for an entity';
|
|
25
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
26
|
+
static examples = [
|
|
27
|
+
'<%= config.bin %> links issue 1',
|
|
28
|
+
'<%= config.bin %> links doc getting-started --json',
|
|
29
|
+
'<%= config.bin %> links issue 1 --project my-project',
|
|
30
|
+
];
|
|
31
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
32
|
+
static flags = {
|
|
33
|
+
json: Flags.boolean({
|
|
34
|
+
description: 'Output as JSON',
|
|
35
|
+
default: false,
|
|
36
|
+
}),
|
|
37
|
+
project: projectFlag,
|
|
38
|
+
};
|
|
39
|
+
async run() {
|
|
40
|
+
const { args, flags } = await this.parse(Links);
|
|
41
|
+
const cwd = await resolveProjectPath(flags.project);
|
|
42
|
+
try {
|
|
43
|
+
await ensureInitialized(cwd);
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
if (error instanceof NotInitializedError) {
|
|
47
|
+
this.error(error.message);
|
|
48
|
+
}
|
|
49
|
+
throw error instanceof Error ? error : new Error(String(error));
|
|
50
|
+
}
|
|
51
|
+
const response = await daemonListLinks({
|
|
52
|
+
projectPath: cwd,
|
|
53
|
+
entityId: args.id,
|
|
54
|
+
entityType: args.type,
|
|
55
|
+
});
|
|
56
|
+
if (flags.json) {
|
|
57
|
+
this.log(JSON.stringify(response.links, null, 2));
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
if (response.links.length === 0) {
|
|
61
|
+
this.log(`No links found for ${args.type} ${args.id}.`);
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
this.log(`Found ${response.totalCount} link(s) for ${args.type} ${args.id}:\n`);
|
|
65
|
+
for (const link of response.links) {
|
|
66
|
+
this.log(` ${link.linkType} --> ${link.targetType}:${link.targetId}`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=links.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"links.js","sourceRoot":"","sources":["../../src/commands/links.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
/**
|
|
3
|
+
* List all available link types
|
|
4
|
+
*/
|
|
5
|
+
export default class ListLinkTypes extends Command {
|
|
6
|
+
static description: string;
|
|
7
|
+
static examples: string[];
|
|
8
|
+
static flags: {
|
|
9
|
+
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
|
+
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
};
|
|
12
|
+
run(): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=link-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link-types.d.ts","sourceRoot":"","sources":["../../../src/commands/list/link-types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAU5C;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,OAAO;IAEhD,OAAgB,WAAW,SAAkC;IAG7D,OAAgB,QAAQ,WAIvB;IAGD,OAAgB,KAAK;;;MAMpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAmClC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
// eslint-disable-next-line import/order
|
|
2
|
+
import { Command, Flags } from '@oclif/core';
|
|
3
|
+
import { daemonGetAvailableLinkTypes } from '../../daemon/daemon-get-available-link-types.js';
|
|
4
|
+
import { projectFlag } from '../../flags/project-flag.js';
|
|
5
|
+
import { ensureInitialized, NotInitializedError, } from '../../utils/ensure-initialized.js';
|
|
6
|
+
import { resolveProjectPath } from '../../utils/resolve-project-path.js';
|
|
7
|
+
/**
|
|
8
|
+
* List all available link types
|
|
9
|
+
*/
|
|
10
|
+
// eslint-disable-next-line custom/no-default-class-export, class-export/class-export
|
|
11
|
+
export default class ListLinkTypes extends Command {
|
|
12
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
13
|
+
static description = 'List all available link types';
|
|
14
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
15
|
+
static examples = [
|
|
16
|
+
'<%= config.bin %> list link-types',
|
|
17
|
+
'<%= config.bin %> list link-types --json',
|
|
18
|
+
'<%= config.bin %> list link-types --project centy-daemon',
|
|
19
|
+
];
|
|
20
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
21
|
+
static flags = {
|
|
22
|
+
json: Flags.boolean({
|
|
23
|
+
description: 'Output as JSON',
|
|
24
|
+
default: false,
|
|
25
|
+
}),
|
|
26
|
+
project: projectFlag,
|
|
27
|
+
};
|
|
28
|
+
async run() {
|
|
29
|
+
const { flags } = await this.parse(ListLinkTypes);
|
|
30
|
+
const cwd = await resolveProjectPath(flags.project);
|
|
31
|
+
try {
|
|
32
|
+
await ensureInitialized(cwd);
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
if (error instanceof NotInitializedError) {
|
|
36
|
+
this.error(error.message);
|
|
37
|
+
}
|
|
38
|
+
throw error instanceof Error ? error : new Error(String(error));
|
|
39
|
+
}
|
|
40
|
+
const response = await daemonGetAvailableLinkTypes({
|
|
41
|
+
projectPath: cwd,
|
|
42
|
+
});
|
|
43
|
+
if (flags.json) {
|
|
44
|
+
this.log(JSON.stringify(response.linkTypes, null, 2));
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
if (response.linkTypes.length === 0) {
|
|
48
|
+
this.log('No link types available.');
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
this.log('Available link types:\n');
|
|
52
|
+
for (const linkType of response.linkTypes) {
|
|
53
|
+
const builtinTag = linkType.isBuiltin ? ' (builtin)' : ' (custom)';
|
|
54
|
+
const desc = linkType.description !== '' ? ` - ${linkType.description}` : '';
|
|
55
|
+
this.log(` ${linkType.name} <-> ${linkType.inverse}${builtinTag}${desc}`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=link-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link-types.js","sourceRoot":"","sources":["../../../src/commands/list/link-types.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAE5C,OAAO,EAAE,2BAA2B,EAAE,MAAM,iDAAiD,CAAA;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,EACL,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAA;AAExE;;GAEG;AACH,qFAAqF;AACrF,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,OAAO;IAChD,gDAAgD;IAChD,MAAM,CAAU,WAAW,GAAG,+BAA+B,CAAA;IAE7D,gDAAgD;IAChD,MAAM,CAAU,QAAQ,GAAG;QACzB,mCAAmC;QACnC,0CAA0C;QAC1C,0DAA0D;KAC3D,CAAA;IAED,gDAAgD;IAChD,MAAM,CAAU,KAAK,GAAG;QACtB,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC;YAClB,WAAW,EAAE,gBAAgB;YAC7B,OAAO,EAAE,KAAK;SACf,CAAC;QACF,OAAO,EAAE,WAAW;KACrB,CAAA;IAEM,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;QACjD,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAEnD,IAAI,CAAC;YACH,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAA;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,mBAAmB,EAAE,CAAC;gBACzC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAC3B,CAAC;YACD,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QACjE,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,2BAA2B,CAAC;YACjD,WAAW,EAAE,GAAG;SACjB,CAAC,CAAA;QAEF,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;YACrD,OAAM;QACR,CAAC;QAED,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAA;YACpC,OAAM;QACR,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAA;QACnC,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;YAC1C,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAA;YAClE,MAAM,IAAI,GACR,QAAQ,CAAC,WAAW,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;YACjE,IAAI,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,IAAI,QAAQ,QAAQ,CAAC,OAAO,GAAG,UAAU,GAAG,IAAI,EAAE,CAAC,CAAA;QAC5E,CAAC;IACH,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
/**
|
|
3
|
+
* Remove a link between two entities
|
|
4
|
+
*/
|
|
5
|
+
export default class Unlink extends Command {
|
|
6
|
+
static args: {
|
|
7
|
+
type: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
8
|
+
id: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
9
|
+
target: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
10
|
+
};
|
|
11
|
+
static description: string;
|
|
12
|
+
static examples: string[];
|
|
13
|
+
static flags: {
|
|
14
|
+
type: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
|
+
};
|
|
17
|
+
run(): Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=unlink.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unlink.d.ts","sourceRoot":"","sources":["../../src/commands/unlink.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAA;AAWlD;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,OAAO;IAEzC,OAAgB,IAAI;;;;MAcnB;IAGD,OAAgB,WAAW,SAAuC;IAGlE,OAAgB,QAAQ,WAIvB;IAGD,OAAgB,KAAK;;;MAMpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAqClC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
// eslint-disable-next-line import/order
|
|
2
|
+
import { Args, Command, Flags } from '@oclif/core';
|
|
3
|
+
import { daemonDeleteLink } from '../daemon/daemon-delete-link.js';
|
|
4
|
+
import { projectFlag } from '../flags/project-flag.js';
|
|
5
|
+
import { ensureInitialized, NotInitializedError, } from '../utils/ensure-initialized.js';
|
|
6
|
+
import { parseLinkTarget } from '../utils/parse-link-target.js';
|
|
7
|
+
import { resolveProjectPath } from '../utils/resolve-project-path.js';
|
|
8
|
+
/**
|
|
9
|
+
* Remove a link between two entities
|
|
10
|
+
*/
|
|
11
|
+
// eslint-disable-next-line custom/no-default-class-export, class-export/class-export
|
|
12
|
+
export default class Unlink extends Command {
|
|
13
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
14
|
+
static args = {
|
|
15
|
+
type: Args.string({
|
|
16
|
+
description: 'Source entity type (e.g., issue, doc)',
|
|
17
|
+
required: true,
|
|
18
|
+
}),
|
|
19
|
+
id: Args.string({
|
|
20
|
+
description: 'Source entity ID or slug',
|
|
21
|
+
required: true,
|
|
22
|
+
}),
|
|
23
|
+
target: Args.string({
|
|
24
|
+
description: 'Target entity as type:id (e.g., issue:2, doc:getting-started)',
|
|
25
|
+
required: true,
|
|
26
|
+
}),
|
|
27
|
+
};
|
|
28
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
29
|
+
static description = 'Remove a link between two entities';
|
|
30
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
31
|
+
static examples = [
|
|
32
|
+
'<%= config.bin %> unlink issue 1 issue:2',
|
|
33
|
+
'<%= config.bin %> unlink issue 1 issue:2 --type blocks',
|
|
34
|
+
'<%= config.bin %> unlink doc getting-started issue:5 --project my-project',
|
|
35
|
+
];
|
|
36
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
37
|
+
static flags = {
|
|
38
|
+
type: Flags.string({
|
|
39
|
+
description: 'Specific link type to remove (removes all link types if omitted)',
|
|
40
|
+
}),
|
|
41
|
+
project: projectFlag,
|
|
42
|
+
};
|
|
43
|
+
async run() {
|
|
44
|
+
const { args, flags } = await this.parse(Unlink);
|
|
45
|
+
const cwd = await resolveProjectPath(flags.project);
|
|
46
|
+
try {
|
|
47
|
+
await ensureInitialized(cwd);
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
if (error instanceof NotInitializedError) {
|
|
51
|
+
this.error(error.message);
|
|
52
|
+
}
|
|
53
|
+
throw error instanceof Error ? error : new Error(String(error));
|
|
54
|
+
}
|
|
55
|
+
const parsed = parseLinkTarget(args.target);
|
|
56
|
+
if (parsed === undefined) {
|
|
57
|
+
this.error('Invalid target format. Use type:id (e.g., issue:2, doc:getting-started)');
|
|
58
|
+
}
|
|
59
|
+
const response = await daemonDeleteLink({
|
|
60
|
+
projectPath: cwd,
|
|
61
|
+
sourceId: args.id,
|
|
62
|
+
sourceType: args.type,
|
|
63
|
+
targetId: parsed[1],
|
|
64
|
+
targetType: parsed[0],
|
|
65
|
+
linkType: flags.type,
|
|
66
|
+
});
|
|
67
|
+
if (!response.success) {
|
|
68
|
+
this.error(response.error);
|
|
69
|
+
}
|
|
70
|
+
this.log(`Removed ${response.deletedCount} link(s) from ${args.type} ${args.id} to ${args.target}`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=unlink.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unlink.js","sourceRoot":"","sources":["../../src/commands/unlink.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
/**
|
|
3
|
+
* Show CLI and daemon version information
|
|
4
|
+
*/
|
|
5
|
+
export default class Version extends Command {
|
|
6
|
+
static description: string;
|
|
7
|
+
static examples: string[];
|
|
8
|
+
static flags: {
|
|
9
|
+
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
|
+
};
|
|
11
|
+
run(): Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=version.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAK5C;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,OAAO;IAE1C,OAAgB,WAAW,SAA4C;IAGvE,OAAgB,QAAQ,WAGvB;IAGD,OAAgB,KAAK;;MAKpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAsClC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
// eslint-disable-next-line import/order
|
|
2
|
+
import { Command, Flags } from '@oclif/core';
|
|
3
|
+
import { daemonGetDaemonInfo } from '../daemon/daemon-get-daemon-info.js';
|
|
4
|
+
import { getVersion } from '../get-version.js';
|
|
5
|
+
/**
|
|
6
|
+
* Show CLI and daemon version information
|
|
7
|
+
*/
|
|
8
|
+
// eslint-disable-next-line custom/no-default-class-export, class-export/class-export
|
|
9
|
+
export default class Version extends Command {
|
|
10
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
11
|
+
static description = 'Show CLI and daemon version information';
|
|
12
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
13
|
+
static examples = [
|
|
14
|
+
'<%= config.bin %> version',
|
|
15
|
+
'<%= config.bin %> version --json',
|
|
16
|
+
];
|
|
17
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
18
|
+
static flags = {
|
|
19
|
+
json: Flags.boolean({
|
|
20
|
+
description: 'Output as JSON',
|
|
21
|
+
default: false,
|
|
22
|
+
}),
|
|
23
|
+
};
|
|
24
|
+
async run() {
|
|
25
|
+
const { flags } = await this.parse(Version);
|
|
26
|
+
const cliVersion = getVersion();
|
|
27
|
+
let daemonVersion = null;
|
|
28
|
+
let daemonStatus;
|
|
29
|
+
try {
|
|
30
|
+
const daemonInfo = await daemonGetDaemonInfo({});
|
|
31
|
+
daemonVersion = daemonInfo.version;
|
|
32
|
+
daemonStatus =
|
|
33
|
+
daemonVersion === cliVersion ? 'Up to date' : 'Version mismatch';
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
daemonStatus = 'Not running';
|
|
37
|
+
}
|
|
38
|
+
if (flags.json) {
|
|
39
|
+
this.log(JSON.stringify({
|
|
40
|
+
cli: cliVersion,
|
|
41
|
+
daemon: daemonVersion,
|
|
42
|
+
status: daemonStatus,
|
|
43
|
+
}, null, 2));
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
this.log(`CLI: ${cliVersion}`);
|
|
47
|
+
this.log(`Daemon: ${daemonVersion !== null ? daemonVersion : 'not running'}`);
|
|
48
|
+
this.log(`Status: ${daemonStatus}`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAE5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAA;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE9C;;GAEG;AACH,qFAAqF;AACrF,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,OAAO;IAC1C,gDAAgD;IAChD,MAAM,CAAU,WAAW,GAAG,yCAAyC,CAAA;IAEvE,gDAAgD;IAChD,MAAM,CAAU,QAAQ,GAAG;QACzB,2BAA2B;QAC3B,kCAAkC;KACnC,CAAA;IAED,gDAAgD;IAChD,MAAM,CAAU,KAAK,GAAG;QACtB,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC;YAClB,WAAW,EAAE,gBAAgB;YAC7B,OAAO,EAAE,KAAK;SACf,CAAC;KACH,CAAA;IAEM,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAE3C,MAAM,UAAU,GAAG,UAAU,EAAE,CAAA;QAE/B,IAAI,aAAa,GAAkB,IAAI,CAAA;QACvC,IAAI,YAAoB,CAAA;QAExB,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,EAAE,CAAC,CAAA;YAChD,aAAa,GAAG,UAAU,CAAC,OAAO,CAAA;YAClC,YAAY;gBACV,aAAa,KAAK,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,kBAAkB,CAAA;QACpE,CAAC;QAAC,MAAM,CAAC;YACP,YAAY,GAAG,aAAa,CAAA;QAC9B,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CACN,IAAI,CAAC,SAAS,CACZ;gBACE,GAAG,EAAE,UAAU;gBACf,MAAM,EAAE,aAAa;gBACrB,MAAM,EAAE,YAAY;aACrB,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAA;YACD,OAAM;QACR,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,QAAQ,UAAU,EAAE,CAAC,CAAA;QAC9B,IAAI,CAAC,GAAG,CACN,WAAW,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,EAAE,CACpE,CAAA;QACD,IAAI,CAAC,GAAG,CAAC,WAAW,YAAY,EAAE,CAAC,CAAA;IACrC,CAAC"}
|