centy 0.0.24 → 0.0.26
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/add/plan.d.ts +18 -0
- package/dist/commands/add/plan.d.ts.map +1 -0
- package/dist/commands/add/plan.js +87 -0
- package/dist/commands/add/plan.js.map +1 -0
- package/dist/commands/assign/issue.d.ts +19 -0
- package/dist/commands/assign/issue.d.ts.map +1 -0
- package/dist/commands/assign/issue.js +79 -0
- package/dist/commands/assign/issue.js.map +1 -0
- package/dist/commands/close/issue.d.ts +16 -0
- package/dist/commands/close/issue.d.ts.map +1 -0
- package/dist/commands/close/issue.js +54 -0
- package/dist/commands/close/issue.js.map +1 -0
- package/dist/commands/close/org-issue.d.ts +17 -0
- package/dist/commands/close/org-issue.d.ts.map +1 -0
- package/dist/commands/close/org-issue.js +69 -0
- package/dist/commands/close/org-issue.js.map +1 -0
- package/dist/commands/close.d.ts +22 -0
- package/dist/commands/close.d.ts.map +1 -0
- package/dist/commands/close.js +198 -0
- package/dist/commands/close.js.map +1 -0
- package/dist/commands/create/issue.d.ts +1 -0
- package/dist/commands/create/issue.d.ts.map +1 -1
- package/dist/commands/create/issue.js +6 -0
- package/dist/commands/create/issue.js.map +1 -1
- package/dist/commands/create/user.d.ts +18 -0
- package/dist/commands/create/user.d.ts.map +1 -0
- package/dist/commands/create/user.js +85 -0
- package/dist/commands/create/user.js.map +1 -0
- package/dist/commands/delete/plan.d.ts +17 -0
- package/dist/commands/delete/plan.d.ts.map +1 -0
- package/dist/commands/delete/plan.js +74 -0
- package/dist/commands/delete/plan.js.map +1 -0
- package/dist/commands/delete/user.d.ts +17 -0
- package/dist/commands/delete/user.d.ts.map +1 -0
- package/dist/commands/delete/user.js +73 -0
- package/dist/commands/delete/user.js.map +1 -0
- package/dist/commands/duplicate/doc.d.ts +19 -0
- package/dist/commands/duplicate/doc.d.ts.map +1 -0
- package/dist/commands/duplicate/doc.js +87 -0
- package/dist/commands/duplicate/doc.js.map +1 -0
- package/dist/commands/duplicate/issue.d.ts +18 -0
- package/dist/commands/duplicate/issue.d.ts.map +1 -0
- package/dist/commands/duplicate/issue.js +82 -0
- package/dist/commands/duplicate/issue.js.map +1 -0
- package/dist/commands/get/issue.d.ts +1 -0
- package/dist/commands/get/issue.d.ts.map +1 -1
- package/dist/commands/get/issue.js +38 -1
- package/dist/commands/get/issue.js.map +1 -1
- package/dist/commands/get/plan.d.ts +18 -0
- package/dist/commands/get/plan.d.ts.map +1 -0
- package/dist/commands/get/plan.js +68 -0
- package/dist/commands/get/plan.js.map +1 -0
- package/dist/commands/get/user.d.ts +17 -0
- package/dist/commands/get/user.d.ts.map +1 -0
- package/dist/commands/get/user.js +75 -0
- package/dist/commands/get/user.js.map +1 -0
- package/dist/commands/init.d.ts +7 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +43 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list/issues.d.ts +1 -0
- package/dist/commands/list/issues.d.ts.map +1 -1
- package/dist/commands/list/issues.js +9 -1
- package/dist/commands/list/issues.js.map +1 -1
- package/dist/commands/list/users.d.ts +15 -0
- package/dist/commands/list/users.d.ts.map +1 -0
- package/dist/commands/list/users.js +67 -0
- package/dist/commands/list/users.js.map +1 -0
- package/dist/commands/move/doc.d.ts +18 -0
- package/dist/commands/move/doc.d.ts.map +1 -0
- package/dist/commands/move/doc.js +82 -0
- package/dist/commands/move/doc.js.map +1 -0
- package/dist/commands/move/issue.d.ts +17 -0
- package/dist/commands/move/issue.d.ts.map +1 -0
- package/dist/commands/move/issue.js +74 -0
- package/dist/commands/move/issue.js.map +1 -0
- package/dist/commands/project/title.d.ts +19 -0
- package/dist/commands/project/title.d.ts.map +1 -0
- package/dist/commands/project/title.js +76 -0
- package/dist/commands/project/title.js.map +1 -0
- package/dist/commands/sync/users.d.ts +17 -0
- package/dist/commands/sync/users.d.ts.map +1 -0
- package/dist/commands/sync/users.js +105 -0
- package/dist/commands/sync/users.js.map +1 -0
- package/dist/commands/unassign/issue.d.ts +19 -0
- package/dist/commands/unassign/issue.d.ts.map +1 -0
- package/dist/commands/unassign/issue.js +79 -0
- package/dist/commands/unassign/issue.js.map +1 -0
- package/dist/commands/update/issue.d.ts +1 -0
- package/dist/commands/update/issue.d.ts.map +1 -1
- package/dist/commands/update/issue.js +7 -1
- package/dist/commands/update/issue.js.map +1 -1
- package/dist/commands/update/user.d.ts +20 -0
- package/dist/commands/update/user.d.ts.map +1 -0
- package/dist/commands/update/user.js +88 -0
- package/dist/commands/update/user.js.map +1 -0
- package/dist/daemon/daemon-assign-issue.d.ts +6 -0
- package/dist/daemon/daemon-assign-issue.d.ts.map +1 -0
- package/dist/daemon/daemon-assign-issue.js +17 -0
- package/dist/daemon/daemon-assign-issue.js.map +1 -0
- package/dist/daemon/daemon-create-user.d.ts +6 -0
- package/dist/daemon/daemon-create-user.d.ts.map +1 -0
- package/dist/daemon/daemon-create-user.js +17 -0
- package/dist/daemon/daemon-create-user.js.map +1 -0
- package/dist/daemon/daemon-delete-plan.d.ts +6 -0
- package/dist/daemon/daemon-delete-plan.d.ts.map +1 -0
- package/dist/daemon/daemon-delete-plan.js +17 -0
- package/dist/daemon/daemon-delete-plan.js.map +1 -0
- package/dist/daemon/daemon-delete-user.d.ts +6 -0
- package/dist/daemon/daemon-delete-user.d.ts.map +1 -0
- package/dist/daemon/daemon-delete-user.js +17 -0
- package/dist/daemon/daemon-delete-user.js.map +1 -0
- package/dist/daemon/daemon-duplicate-doc.d.ts +6 -0
- package/dist/daemon/daemon-duplicate-doc.d.ts.map +1 -0
- package/dist/daemon/daemon-duplicate-doc.js +17 -0
- package/dist/daemon/daemon-duplicate-doc.js.map +1 -0
- package/dist/daemon/daemon-duplicate-issue.d.ts +6 -0
- package/dist/daemon/daemon-duplicate-issue.d.ts.map +1 -0
- package/dist/daemon/daemon-duplicate-issue.js +17 -0
- package/dist/daemon/daemon-duplicate-issue.js.map +1 -0
- package/dist/daemon/daemon-get-plan.d.ts +6 -0
- package/dist/daemon/daemon-get-plan.d.ts.map +1 -0
- package/dist/daemon/daemon-get-plan.js +17 -0
- package/dist/daemon/daemon-get-plan.js.map +1 -0
- package/dist/daemon/daemon-get-user.d.ts +6 -0
- package/dist/daemon/daemon-get-user.d.ts.map +1 -0
- package/dist/daemon/daemon-get-user.js +17 -0
- package/dist/daemon/daemon-get-user.js.map +1 -0
- package/dist/daemon/daemon-list-users.d.ts +6 -0
- package/dist/daemon/daemon-list-users.d.ts.map +1 -0
- package/dist/daemon/daemon-list-users.js +17 -0
- package/dist/daemon/daemon-list-users.js.map +1 -0
- package/dist/daemon/daemon-move-doc.d.ts +6 -0
- package/dist/daemon/daemon-move-doc.d.ts.map +1 -0
- package/dist/daemon/daemon-move-doc.js +17 -0
- package/dist/daemon/daemon-move-doc.js.map +1 -0
- package/dist/daemon/daemon-move-issue.d.ts +6 -0
- package/dist/daemon/daemon-move-issue.d.ts.map +1 -0
- package/dist/daemon/daemon-move-issue.js +17 -0
- package/dist/daemon/daemon-move-issue.js.map +1 -0
- package/dist/daemon/daemon-set-project-title.d.ts +7 -0
- package/dist/daemon/daemon-set-project-title.d.ts.map +1 -0
- package/dist/daemon/daemon-set-project-title.js +18 -0
- package/dist/daemon/daemon-set-project-title.js.map +1 -0
- package/dist/daemon/daemon-set-project-user-title.d.ts +7 -0
- package/dist/daemon/daemon-set-project-user-title.d.ts.map +1 -0
- package/dist/daemon/daemon-set-project-user-title.js +18 -0
- package/dist/daemon/daemon-set-project-user-title.js.map +1 -0
- package/dist/daemon/daemon-spawn-agent.d.ts +6 -0
- package/dist/daemon/daemon-spawn-agent.d.ts.map +1 -0
- package/dist/daemon/daemon-spawn-agent.js +17 -0
- package/dist/daemon/daemon-spawn-agent.js.map +1 -0
- package/dist/daemon/daemon-sync-users.d.ts +6 -0
- package/dist/daemon/daemon-sync-users.d.ts.map +1 -0
- package/dist/daemon/daemon-sync-users.js +17 -0
- package/dist/daemon/daemon-sync-users.js.map +1 -0
- package/dist/daemon/daemon-unassign-issue.d.ts +6 -0
- package/dist/daemon/daemon-unassign-issue.d.ts.map +1 -0
- package/dist/daemon/daemon-unassign-issue.js +17 -0
- package/dist/daemon/daemon-unassign-issue.js.map +1 -0
- package/dist/daemon/daemon-update-plan.d.ts +6 -0
- package/dist/daemon/daemon-update-plan.d.ts.map +1 -0
- package/dist/daemon/daemon-update-plan.js +17 -0
- package/dist/daemon/daemon-update-plan.js.map +1 -0
- package/dist/daemon/daemon-update-user.d.ts +6 -0
- package/dist/daemon/daemon-update-user.d.ts.map +1 -0
- package/dist/daemon/daemon-update-user.js +17 -0
- package/dist/daemon/daemon-update-user.js.map +1 -0
- package/dist/daemon/load-proto.d.ts +20 -1
- package/dist/daemon/load-proto.d.ts.map +1 -1
- package/dist/daemon/load-proto.js.map +1 -1
- package/dist/daemon/types.d.ts +242 -0
- package/dist/daemon/types.d.ts.map +1 -1
- package/dist/hooks/postrun.d.ts +4 -0
- package/dist/hooks/postrun.d.ts.map +1 -0
- package/dist/hooks/postrun.js +17 -0
- package/dist/hooks/postrun.js.map +1 -0
- package/dist/lib/create-issue/create-issue.d.ts.map +1 -1
- package/dist/lib/create-issue/create-issue.js +3 -0
- package/dist/lib/create-issue/create-issue.js.map +1 -1
- package/dist/lib/init/init.d.ts +7 -0
- package/dist/lib/init/init.d.ts.map +1 -1
- package/dist/lib/init/init.js +51 -1
- package/dist/lib/init/init.js.map +1 -1
- package/dist/lib/install-daemon/github-api.d.ts.map +1 -1
- package/dist/lib/install-daemon/github-api.js +50 -39
- package/dist/lib/install-daemon/github-api.js.map +1 -1
- package/dist/tui/components/domain/AssetList.js +1 -3
- package/dist/tui/components/domain/AssetList.js.map +1 -1
- package/dist/tui/components/domain/ConfigPanel.js +1 -3
- package/dist/tui/components/domain/ConfigPanel.js.map +1 -1
- package/dist/tui/components/domain/DocCreate.d.ts.map +1 -1
- package/dist/tui/components/domain/DocCreate.js +10 -43
- package/dist/tui/components/domain/DocCreate.js.map +1 -1
- package/dist/tui/components/domain/IssueCreate.d.ts.map +1 -1
- package/dist/tui/components/domain/IssueCreate.js +11 -55
- package/dist/tui/components/domain/IssueCreate.js.map +1 -1
- package/dist/tui/components/domain/IssueEdit.d.ts.map +1 -1
- package/dist/tui/components/domain/IssueEdit.js +15 -54
- package/dist/tui/components/domain/IssueEdit.js.map +1 -1
- package/dist/tui/components/domain/IssueList.js +1 -1
- package/dist/tui/components/domain/IssueList.js.map +1 -1
- package/dist/tui/components/domain/PRCreate.d.ts.map +1 -1
- package/dist/tui/components/domain/PRCreate.js +12 -47
- package/dist/tui/components/domain/PRCreate.js.map +1 -1
- package/dist/tui/components/domain/PREdit.d.ts.map +1 -1
- package/dist/tui/components/domain/PREdit.js +17 -51
- package/dist/tui/components/domain/PREdit.js.map +1 -1
- package/dist/tui/components/domain/PRList.js +1 -1
- package/dist/tui/components/domain/PRList.js.map +1 -1
- package/dist/tui/components/domain/ProjectCreate.d.ts.map +1 -1
- package/dist/tui/components/domain/ProjectCreate.js +5 -13
- package/dist/tui/components/domain/ProjectCreate.js.map +1 -1
- package/dist/tui/components/domain/ProjectList.js +1 -3
- package/dist/tui/components/domain/ProjectList.js.map +1 -1
- package/dist/tui/components/form/FormInput.d.ts +12 -0
- package/dist/tui/components/form/FormInput.d.ts.map +1 -0
- package/dist/tui/components/form/FormInput.js +6 -0
- package/dist/tui/components/form/FormInput.js.map +1 -0
- package/dist/tui/components/form/FormTextarea.d.ts +11 -0
- package/dist/tui/components/form/FormTextarea.d.ts.map +1 -0
- package/dist/tui/components/form/FormTextarea.js +13 -0
- package/dist/tui/components/form/FormTextarea.js.map +1 -0
- package/dist/tui/components/form/index.d.ts +3 -0
- package/dist/tui/components/form/index.d.ts.map +1 -0
- package/dist/tui/components/form/index.js +3 -0
- package/dist/tui/components/form/index.js.map +1 -0
- package/dist/tui/components/layout/Sidebar.js +1 -1
- package/dist/tui/components/layout/Sidebar.js.map +1 -1
- package/dist/tui/hooks/useNavigation.d.ts +1 -0
- package/dist/tui/hooks/useNavigation.d.ts.map +1 -1
- package/dist/tui/hooks/useNavigation.js +4 -0
- package/dist/tui/hooks/useNavigation.js.map +1 -1
- package/dist/tui/state/app-state.d.ts +4 -0
- package/dist/tui/state/app-state.d.ts.map +1 -1
- package/dist/tui/state/app-state.js +7 -0
- package/dist/tui/state/app-state.js.map +1 -1
- package/dist/types/create-issue-options.d.ts +2 -0
- package/dist/types/create-issue-options.d.ts.map +1 -1
- package/dist/types/init-options.d.ts +14 -0
- package/dist/types/init-options.d.ts.map +1 -1
- package/dist/utils/is-valid-uuid.js +2 -2
- package/dist/utils/is-valid-uuid.js.map +1 -1
- package/oclif.manifest.json +1270 -155
- package/package.json +9 -3
- package/proto/centy.proto +230 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
// eslint-disable-next-line import/order
|
|
2
|
+
import { Args, Command, Flags } from '@oclif/core';
|
|
3
|
+
import { daemonMoveDoc } from '../../daemon/daemon-move-doc.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
|
+
* Move a doc to a different project
|
|
9
|
+
*/
|
|
10
|
+
// eslint-disable-next-line custom/no-default-class-export, class-export/class-export
|
|
11
|
+
export default class MoveDoc extends Command {
|
|
12
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
13
|
+
static args = {
|
|
14
|
+
slug: Args.string({
|
|
15
|
+
description: 'Doc slug',
|
|
16
|
+
required: true,
|
|
17
|
+
}),
|
|
18
|
+
};
|
|
19
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
20
|
+
static description = 'Move a doc to a different project';
|
|
21
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
22
|
+
static examples = [
|
|
23
|
+
'<%= config.bin %> move doc my-doc --to /path/to/target/project',
|
|
24
|
+
'<%= config.bin %> move doc readme --to ../other-project --new-slug new-readme',
|
|
25
|
+
'<%= config.bin %> move doc api-guide --to ~/projects/target --project ./source',
|
|
26
|
+
];
|
|
27
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
28
|
+
static flags = {
|
|
29
|
+
to: Flags.string({
|
|
30
|
+
char: 't',
|
|
31
|
+
description: 'Target project path',
|
|
32
|
+
required: true,
|
|
33
|
+
}),
|
|
34
|
+
'new-slug': Flags.string({
|
|
35
|
+
char: 's',
|
|
36
|
+
description: 'New slug for the doc (if slug already exists in target)',
|
|
37
|
+
}),
|
|
38
|
+
project: projectFlag,
|
|
39
|
+
};
|
|
40
|
+
async run() {
|
|
41
|
+
const { args, flags } = await this.parse(MoveDoc);
|
|
42
|
+
const sourceProjectPath = await resolveProjectPath(flags.project);
|
|
43
|
+
const targetProjectPath = await resolveProjectPath(flags.to);
|
|
44
|
+
// Ensure source project is initialized
|
|
45
|
+
try {
|
|
46
|
+
await ensureInitialized(sourceProjectPath);
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
if (error instanceof NotInitializedError) {
|
|
50
|
+
this.error(`Source project: ${error.message}`);
|
|
51
|
+
}
|
|
52
|
+
throw error instanceof Error ? error : new Error(String(error));
|
|
53
|
+
}
|
|
54
|
+
// Ensure target project is initialized
|
|
55
|
+
try {
|
|
56
|
+
await ensureInitialized(targetProjectPath);
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
if (error instanceof NotInitializedError) {
|
|
60
|
+
this.error(`Target project: ${error.message}`);
|
|
61
|
+
}
|
|
62
|
+
throw error instanceof Error ? error : new Error(String(error));
|
|
63
|
+
}
|
|
64
|
+
if (sourceProjectPath === targetProjectPath) {
|
|
65
|
+
this.error('Source and target project cannot be the same.');
|
|
66
|
+
}
|
|
67
|
+
const response = await daemonMoveDoc({
|
|
68
|
+
sourceProjectPath,
|
|
69
|
+
slug: args.slug,
|
|
70
|
+
targetProjectPath,
|
|
71
|
+
newSlug: flags['new-slug'],
|
|
72
|
+
});
|
|
73
|
+
if (!response.success) {
|
|
74
|
+
this.error(response.error);
|
|
75
|
+
}
|
|
76
|
+
const slugInfo = response.oldSlug !== response.doc.slug
|
|
77
|
+
? `${response.oldSlug} → ${response.doc.slug}`
|
|
78
|
+
: response.doc.slug;
|
|
79
|
+
this.log(`Moved doc "${slugInfo}" to ${targetProjectPath}`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=doc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doc.js","sourceRoot":"","sources":["../../../src/commands/move/doc.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
/**
|
|
3
|
+
* Move an issue to a different project
|
|
4
|
+
*/
|
|
5
|
+
export default class MoveIssue extends Command {
|
|
6
|
+
static args: {
|
|
7
|
+
id: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
8
|
+
};
|
|
9
|
+
static description: string;
|
|
10
|
+
static examples: string[];
|
|
11
|
+
static flags: {
|
|
12
|
+
to: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
+
};
|
|
15
|
+
run(): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=issue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issue.d.ts","sourceRoot":"","sources":["../../../src/commands/move/issue.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAA;AAUlD;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,OAAO;IAE5C,OAAgB,IAAI;;MAKnB;IAGD,OAAgB,WAAW,SAAyC;IAGpE,OAAgB,QAAQ,WAIvB;IAGD,OAAgB,KAAK;;;MAOpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA2ClC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
// eslint-disable-next-line import/order
|
|
2
|
+
import { Args, Command, Flags } from '@oclif/core';
|
|
3
|
+
import { daemonMoveIssue } from '../../daemon/daemon-move-issue.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
|
+
* Move an issue to a different project
|
|
9
|
+
*/
|
|
10
|
+
// eslint-disable-next-line custom/no-default-class-export, class-export/class-export
|
|
11
|
+
export default class MoveIssue extends Command {
|
|
12
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
13
|
+
static args = {
|
|
14
|
+
id: Args.string({
|
|
15
|
+
description: 'Issue ID (UUID) or display number',
|
|
16
|
+
required: true,
|
|
17
|
+
}),
|
|
18
|
+
};
|
|
19
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
20
|
+
static description = 'Move an issue to a different project';
|
|
21
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
22
|
+
static examples = [
|
|
23
|
+
'<%= config.bin %> move issue 1 --to /path/to/target/project',
|
|
24
|
+
'<%= config.bin %> move issue abc123-uuid --to ../other-project',
|
|
25
|
+
'<%= config.bin %> move issue 5 --to ~/projects/target --project ./source',
|
|
26
|
+
];
|
|
27
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
28
|
+
static flags = {
|
|
29
|
+
to: Flags.string({
|
|
30
|
+
char: 't',
|
|
31
|
+
description: 'Target project path',
|
|
32
|
+
required: true,
|
|
33
|
+
}),
|
|
34
|
+
project: projectFlag,
|
|
35
|
+
};
|
|
36
|
+
async run() {
|
|
37
|
+
const { args, flags } = await this.parse(MoveIssue);
|
|
38
|
+
const sourceProjectPath = await resolveProjectPath(flags.project);
|
|
39
|
+
const targetProjectPath = await resolveProjectPath(flags.to);
|
|
40
|
+
// Ensure source project is initialized
|
|
41
|
+
try {
|
|
42
|
+
await ensureInitialized(sourceProjectPath);
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
if (error instanceof NotInitializedError) {
|
|
46
|
+
this.error(`Source project: ${error.message}`);
|
|
47
|
+
}
|
|
48
|
+
throw error instanceof Error ? error : new Error(String(error));
|
|
49
|
+
}
|
|
50
|
+
// Ensure target project is initialized
|
|
51
|
+
try {
|
|
52
|
+
await ensureInitialized(targetProjectPath);
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
if (error instanceof NotInitializedError) {
|
|
56
|
+
this.error(`Target project: ${error.message}`);
|
|
57
|
+
}
|
|
58
|
+
throw error instanceof Error ? error : new Error(String(error));
|
|
59
|
+
}
|
|
60
|
+
if (sourceProjectPath === targetProjectPath) {
|
|
61
|
+
this.error('Source and target project cannot be the same.');
|
|
62
|
+
}
|
|
63
|
+
const response = await daemonMoveIssue({
|
|
64
|
+
sourceProjectPath,
|
|
65
|
+
issueId: args.id,
|
|
66
|
+
targetProjectPath,
|
|
67
|
+
});
|
|
68
|
+
if (!response.success) {
|
|
69
|
+
this.error(response.error);
|
|
70
|
+
}
|
|
71
|
+
this.log(`Moved issue #${response.oldDisplayNumber} → #${response.issue.displayNumber} in ${targetProjectPath}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=issue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issue.js","sourceRoot":"","sources":["../../../src/commands/move/issue.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
/**
|
|
3
|
+
* Set a custom title for a project
|
|
4
|
+
*/
|
|
5
|
+
export default class ProjectTitle extends Command {
|
|
6
|
+
static args: {
|
|
7
|
+
title: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
|
|
8
|
+
};
|
|
9
|
+
static description: string;
|
|
10
|
+
static examples: string[];
|
|
11
|
+
static flags: {
|
|
12
|
+
path: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
shared: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
14
|
+
clear: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
15
|
+
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
16
|
+
};
|
|
17
|
+
run(): Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=title.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"title.d.ts","sourceRoot":"","sources":["../../../src/commands/project/title.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAA;AAKlD;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,OAAO;IAE/C,OAAgB,IAAI;;MAKnB;IAGD,OAAgB,WAAW,SAAqC;IAGhE,OAAgB,QAAQ,WAMvB;IAGD,OAAgB,KAAK;;;;;MAoBpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAgClC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
// eslint-disable-next-line import/order
|
|
2
|
+
import { Args, Command, Flags } from '@oclif/core';
|
|
3
|
+
import { daemonSetProjectTitle } from '../../daemon/daemon-set-project-title.js';
|
|
4
|
+
import { daemonSetProjectUserTitle } from '../../daemon/daemon-set-project-user-title.js';
|
|
5
|
+
/**
|
|
6
|
+
* Set a custom title for a project
|
|
7
|
+
*/
|
|
8
|
+
// eslint-disable-next-line custom/no-default-class-export, class-export/class-export
|
|
9
|
+
export default class ProjectTitle extends Command {
|
|
10
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
11
|
+
static args = {
|
|
12
|
+
title: Args.string({
|
|
13
|
+
description: 'Custom title for the project (omit to clear)',
|
|
14
|
+
required: false,
|
|
15
|
+
}),
|
|
16
|
+
};
|
|
17
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
18
|
+
static description = 'Set a custom title for a project';
|
|
19
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
20
|
+
static examples = [
|
|
21
|
+
'<%= config.bin %> project title "My Awesome Project"',
|
|
22
|
+
'<%= config.bin %> project title "Work Project" --shared',
|
|
23
|
+
'<%= config.bin %> project title --clear',
|
|
24
|
+
'<%= config.bin %> project title --clear --shared',
|
|
25
|
+
'<%= config.bin %> project title "Custom Name" --path /path/to/project',
|
|
26
|
+
];
|
|
27
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
28
|
+
static flags = {
|
|
29
|
+
path: Flags.string({
|
|
30
|
+
char: 'p',
|
|
31
|
+
description: 'Path to the project (defaults to current directory)',
|
|
32
|
+
}),
|
|
33
|
+
shared: Flags.boolean({
|
|
34
|
+
char: 's',
|
|
35
|
+
description: 'Set project-scope title (visible to all, stored in .centy/project.json)',
|
|
36
|
+
default: false,
|
|
37
|
+
}),
|
|
38
|
+
clear: Flags.boolean({
|
|
39
|
+
char: 'c',
|
|
40
|
+
description: 'Clear the custom title',
|
|
41
|
+
default: false,
|
|
42
|
+
}),
|
|
43
|
+
json: Flags.boolean({
|
|
44
|
+
description: 'Output as JSON',
|
|
45
|
+
default: false,
|
|
46
|
+
}),
|
|
47
|
+
};
|
|
48
|
+
async run() {
|
|
49
|
+
const { args, flags } = await this.parse(ProjectTitle);
|
|
50
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
51
|
+
const projectPath = flags.path ?? process.env['CENTY_CWD'] ?? process.cwd();
|
|
52
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
53
|
+
const title = flags.clear ? '' : (args.title ?? '');
|
|
54
|
+
if (!title && !flags.clear) {
|
|
55
|
+
this.error('Provide a title or use --clear to remove');
|
|
56
|
+
}
|
|
57
|
+
const response = flags.shared
|
|
58
|
+
? await daemonSetProjectTitle({ projectPath, title })
|
|
59
|
+
: await daemonSetProjectUserTitle({ projectPath, title });
|
|
60
|
+
if (!response.success) {
|
|
61
|
+
this.error(response.error);
|
|
62
|
+
}
|
|
63
|
+
if (flags.json) {
|
|
64
|
+
this.log(JSON.stringify(response.project, null, 2));
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
const scope = flags.shared ? 'project-scope' : 'user-scope';
|
|
68
|
+
if (flags.clear || !args.title) {
|
|
69
|
+
this.log(`Cleared ${scope} title for "${response.project.name}"`);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
this.log(`Set ${scope} title: "${args.title}"`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=title.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"title.js","sourceRoot":"","sources":["../../../src/commands/project/title.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
/**
|
|
3
|
+
* Sync users from git history
|
|
4
|
+
*/
|
|
5
|
+
export default class SyncUsers extends Command {
|
|
6
|
+
static description: string;
|
|
7
|
+
static examples: string[];
|
|
8
|
+
static flags: {
|
|
9
|
+
'dry-run': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
|
+
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
|
+
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
};
|
|
13
|
+
run(): Promise<void>;
|
|
14
|
+
private printDryRunOutput;
|
|
15
|
+
private printSyncOutput;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=users.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/users.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAW5C;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,OAAO;IAE5C,OAAgB,WAAW,SAAgC;IAG3D,OAAgB,QAAQ,WAKvB;IAGD,OAAgB,KAAK;;;;MAWpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAkCjC,OAAO,CAAC,iBAAiB;IAuBzB,OAAO,CAAC,eAAe;CAmBxB"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
// eslint-disable-next-line import/order
|
|
2
|
+
import { Command, Flags } from '@oclif/core';
|
|
3
|
+
import { daemonSyncUsers } from '../../daemon/daemon-sync-users.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
|
+
* Sync users from git history
|
|
9
|
+
*/
|
|
10
|
+
// eslint-disable-next-line custom/no-default-class-export, class-export/class-export
|
|
11
|
+
export default class SyncUsers extends Command {
|
|
12
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
13
|
+
static description = 'Sync users from git history';
|
|
14
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
15
|
+
static examples = [
|
|
16
|
+
'<%= config.bin %> sync users',
|
|
17
|
+
'<%= config.bin %> sync users --dry-run',
|
|
18
|
+
'<%= config.bin %> sync users --json',
|
|
19
|
+
'<%= config.bin %> sync users --project centy-daemon',
|
|
20
|
+
];
|
|
21
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
22
|
+
static flags = {
|
|
23
|
+
'dry-run': Flags.boolean({
|
|
24
|
+
char: 'd',
|
|
25
|
+
description: 'Show what would be done without making changes',
|
|
26
|
+
default: false,
|
|
27
|
+
}),
|
|
28
|
+
json: Flags.boolean({
|
|
29
|
+
description: 'Output as JSON',
|
|
30
|
+
default: false,
|
|
31
|
+
}),
|
|
32
|
+
project: projectFlag,
|
|
33
|
+
};
|
|
34
|
+
async run() {
|
|
35
|
+
const { flags } = await this.parse(SyncUsers);
|
|
36
|
+
const cwd = await resolveProjectPath(flags.project);
|
|
37
|
+
try {
|
|
38
|
+
await ensureInitialized(cwd);
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
if (error instanceof NotInitializedError) {
|
|
42
|
+
this.error(error.message);
|
|
43
|
+
}
|
|
44
|
+
throw error instanceof Error ? error : new Error(String(error));
|
|
45
|
+
}
|
|
46
|
+
const response = await daemonSyncUsers({
|
|
47
|
+
projectPath: cwd,
|
|
48
|
+
dryRun: flags['dry-run'],
|
|
49
|
+
});
|
|
50
|
+
if (!response.success) {
|
|
51
|
+
this.error(response.error);
|
|
52
|
+
}
|
|
53
|
+
if (flags.json) {
|
|
54
|
+
this.log(JSON.stringify(response, null, 2));
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
if (flags['dry-run']) {
|
|
58
|
+
this.printDryRunOutput(response);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
this.printSyncOutput(response);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
printDryRunOutput(response) {
|
|
65
|
+
if (response.wouldCreate.length === 0 && response.wouldSkip.length === 0) {
|
|
66
|
+
this.log('No git contributors found.');
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
if (response.wouldCreate.length > 0) {
|
|
70
|
+
this.log(`Would create ${response.wouldCreate.length} user(s):`);
|
|
71
|
+
for (const contributor of response.wouldCreate) {
|
|
72
|
+
this.log(` ${contributor.name} <${contributor.email}>`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (response.wouldSkip.length > 0) {
|
|
76
|
+
this.log(`\nWould skip ${response.wouldSkip.length} user(s) (already exist):`);
|
|
77
|
+
for (const contributor of response.wouldSkip) {
|
|
78
|
+
this.log(` ${contributor.name} <${contributor.email}>`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
printSyncOutput(response) {
|
|
83
|
+
if (response.created.length > 0) {
|
|
84
|
+
this.log(`Created ${response.created.length} user(s):`);
|
|
85
|
+
for (const userId of response.created)
|
|
86
|
+
this.log(` ${userId}`);
|
|
87
|
+
}
|
|
88
|
+
if (response.skipped.length > 0) {
|
|
89
|
+
this.log(`\nSkipped ${response.skipped.length} user(s) (already exist):`);
|
|
90
|
+
for (const email of response.skipped)
|
|
91
|
+
this.log(` ${email}`);
|
|
92
|
+
}
|
|
93
|
+
if (response.errors.length > 0) {
|
|
94
|
+
this.log(`\nErrors (${response.errors.length}):`);
|
|
95
|
+
for (const err of response.errors)
|
|
96
|
+
this.log(` ${err}`);
|
|
97
|
+
}
|
|
98
|
+
const hasNoResults = response.created.length === 0 &&
|
|
99
|
+
response.skipped.length === 0 &&
|
|
100
|
+
response.errors.length === 0;
|
|
101
|
+
if (hasNoResults)
|
|
102
|
+
this.log('No git contributors found.');
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=users.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users.js","sourceRoot":"","sources":["../../../src/commands/sync/users.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
/**
|
|
3
|
+
* Unassign users from an issue
|
|
4
|
+
*/
|
|
5
|
+
export default class UnassignIssue extends Command {
|
|
6
|
+
static args: {
|
|
7
|
+
issueId: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
8
|
+
userIds: 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
|
+
static strict: boolean;
|
|
17
|
+
run(): Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=issue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issue.d.ts","sourceRoot":"","sources":["../../../src/commands/unassign/issue.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAA;AAUlD;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,OAAO;IAEhD,OAAgB,IAAI;;;MASnB;IAGD,OAAgB,WAAW,SAAiC;IAG5D,OAAgB,QAAQ,WAIvB;IAGD,OAAgB,KAAK;;;MAMpB;IAGD,OAAgB,MAAM,UAAQ;IAEjB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA8ClC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
// eslint-disable-next-line import/order
|
|
2
|
+
import { Args, Command, Flags } from '@oclif/core';
|
|
3
|
+
import { daemonUnassignIssue } from '../../daemon/daemon-unassign-issue.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
|
+
* Unassign users from an issue
|
|
9
|
+
*/
|
|
10
|
+
// eslint-disable-next-line custom/no-default-class-export, class-export/class-export
|
|
11
|
+
export default class UnassignIssue extends Command {
|
|
12
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
13
|
+
static args = {
|
|
14
|
+
issueId: Args.string({
|
|
15
|
+
description: 'Issue ID (UUID) or display number',
|
|
16
|
+
required: true,
|
|
17
|
+
}),
|
|
18
|
+
userIds: Args.string({
|
|
19
|
+
description: 'User IDs to unassign (space-separated)',
|
|
20
|
+
required: true,
|
|
21
|
+
}),
|
|
22
|
+
};
|
|
23
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
24
|
+
static description = 'Unassign users from an issue';
|
|
25
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
26
|
+
static examples = [
|
|
27
|
+
'<%= config.bin %> unassign issue 1 john-doe',
|
|
28
|
+
'<%= config.bin %> unassign issue abc123-uuid alice bob',
|
|
29
|
+
'<%= config.bin %> unassign issue 1 john-doe --project centy-daemon',
|
|
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
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
40
|
+
static strict = false;
|
|
41
|
+
async run() {
|
|
42
|
+
const { args, argv, flags } = await this.parse(UnassignIssue);
|
|
43
|
+
const cwd = await resolveProjectPath(flags.project);
|
|
44
|
+
try {
|
|
45
|
+
await ensureInitialized(cwd);
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
if (error instanceof NotInitializedError) {
|
|
49
|
+
this.error(error.message);
|
|
50
|
+
}
|
|
51
|
+
throw error instanceof Error ? error : new Error(String(error));
|
|
52
|
+
}
|
|
53
|
+
// Get all user IDs from argv (everything after the issue ID)
|
|
54
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
55
|
+
const userIds = argv.slice(1);
|
|
56
|
+
if (userIds.length === 0) {
|
|
57
|
+
this.error('At least one user ID is required');
|
|
58
|
+
}
|
|
59
|
+
const response = await daemonUnassignIssue({
|
|
60
|
+
projectPath: cwd,
|
|
61
|
+
issueId: args.issueId,
|
|
62
|
+
userIds,
|
|
63
|
+
});
|
|
64
|
+
if (!response.success) {
|
|
65
|
+
this.error(response.error);
|
|
66
|
+
}
|
|
67
|
+
if (flags.json) {
|
|
68
|
+
this.log(JSON.stringify(response.issue, null, 2));
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
const issue = response.issue;
|
|
72
|
+
if (issue !== undefined) {
|
|
73
|
+
this.log(`Unassigned ${userIds.join(', ')} from issue #${issue.displayNumber}`);
|
|
74
|
+
const remaining = issue.metadata.assignees;
|
|
75
|
+
this.log(`Remaining assignees: ${remaining.length > 0 ? remaining.join(', ') : 'none'}`);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=issue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issue.js","sourceRoot":"","sources":["../../../src/commands/unassign/issue.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ export default class UpdateIssue extends Command {
|
|
|
13
13
|
description: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
14
|
status: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
15
|
priority: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
|
+
draft: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
16
17
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
17
18
|
};
|
|
18
19
|
private convertPriority;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issue.d.ts","sourceRoot":"","sources":["../../../src/commands/update/issue.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAA;AAUlD;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,OAAO;IAE9C,OAAgB,IAAI;;MAKnB;IAGD,OAAgB,WAAW,SAA6B;IAGxD,OAAgB,QAAQ,WAKvB;IAGD,OAAgB,KAAK
|
|
1
|
+
{"version":3,"file":"issue.d.ts","sourceRoot":"","sources":["../../../src/commands/update/issue.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAA;AAUlD;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,OAAO;IAE9C,OAAgB,IAAI;;MAKnB;IAGD,OAAgB,WAAW,SAA6B;IAGxD,OAAgB,QAAQ,WAKvB;IAGD,OAAgB,KAAK;;;;;;;MAsBpB;IAED,OAAO,CAAC,eAAe;IAiBV,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAuClC"}
|
|
@@ -43,6 +43,10 @@ export default class UpdateIssue extends Command {
|
|
|
43
43
|
char: 'p',
|
|
44
44
|
description: 'New priority (low/medium/high or 1-3)',
|
|
45
45
|
}),
|
|
46
|
+
draft: Flags.boolean({
|
|
47
|
+
description: 'Mark as draft (use --no-draft to unmark)',
|
|
48
|
+
allowNo: true,
|
|
49
|
+
}),
|
|
46
50
|
project: projectFlag,
|
|
47
51
|
};
|
|
48
52
|
convertPriority(priority) {
|
|
@@ -77,7 +81,8 @@ export default class UpdateIssue extends Command {
|
|
|
77
81
|
if (!flags.title &&
|
|
78
82
|
!flags.description &&
|
|
79
83
|
!flags.status &&
|
|
80
|
-
!flags.priority
|
|
84
|
+
!flags.priority &&
|
|
85
|
+
flags.draft === undefined) {
|
|
81
86
|
this.error('At least one field must be specified to update.');
|
|
82
87
|
}
|
|
83
88
|
const response = await daemonUpdateIssue({
|
|
@@ -87,6 +92,7 @@ export default class UpdateIssue extends Command {
|
|
|
87
92
|
description: flags.description,
|
|
88
93
|
status: flags.status,
|
|
89
94
|
priority: this.convertPriority(flags.priority),
|
|
95
|
+
draft: flags.draft,
|
|
90
96
|
});
|
|
91
97
|
if (!response.success) {
|
|
92
98
|
this.error(response.error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issue.js","sourceRoot":"","sources":["../../../src/commands/update/issue.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"issue.js","sourceRoot":"","sources":["../../../src/commands/update/issue.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
/**
|
|
3
|
+
* Update a user
|
|
4
|
+
*/
|
|
5
|
+
export default class UpdateUser extends Command {
|
|
6
|
+
static args: {
|
|
7
|
+
id: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
8
|
+
};
|
|
9
|
+
static description: string;
|
|
10
|
+
static examples: string[];
|
|
11
|
+
static flags: {
|
|
12
|
+
name: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
email: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
+
'git-username': import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
16
|
+
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
17
|
+
};
|
|
18
|
+
run(): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=user.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../src/commands/update/user.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAA;AAUlD;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,OAAO;IAE7C,OAAgB,IAAI;;MAKnB;IAGD,OAAgB,WAAW,SAAkB;IAG7C,OAAgB,QAAQ,WAKvB;IAGD,OAAgB,KAAK;;;;;;MAoBpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA0ClC"}
|