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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issue.d.ts","sourceRoot":"","sources":["../../../src/commands/create/issue.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAM5C;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,OAAO;IAE9C,OAAgB,WAAW,SAA4C;IAGvE,OAAgB,QAAQ,
|
|
1
|
+
{"version":3,"file":"issue.d.ts","sourceRoot":"","sources":["../../../src/commands/create/issue.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAM5C;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,OAAO;IAE9C,OAAgB,WAAW,SAA4C;IAGvE,OAAgB,QAAQ,WAMvB;IAGD,OAAgB,KAAK;;;;;;;MAwBpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAmBlC"}
|
|
@@ -16,6 +16,7 @@ export default class CreateIssue extends Command {
|
|
|
16
16
|
'<%= config.bin %> create issue --title "Bug in login" --priority high',
|
|
17
17
|
'<%= config.bin %> create issue -t "Add feature" -d "Implement dark mode"',
|
|
18
18
|
'<%= config.bin %> create issue -t "Add feature" --project centy-daemon',
|
|
19
|
+
'<%= config.bin %> create issue --title "WIP feature" --draft',
|
|
19
20
|
];
|
|
20
21
|
// eslint-disable-next-line no-restricted-syntax
|
|
21
22
|
static flags = {
|
|
@@ -37,6 +38,10 @@ export default class CreateIssue extends Command {
|
|
|
37
38
|
description: 'Initial status',
|
|
38
39
|
default: 'open',
|
|
39
40
|
}),
|
|
41
|
+
draft: Flags.boolean({
|
|
42
|
+
description: 'Create as draft',
|
|
43
|
+
default: false,
|
|
44
|
+
}),
|
|
40
45
|
project: projectFlag,
|
|
41
46
|
};
|
|
42
47
|
async run() {
|
|
@@ -49,6 +54,7 @@ export default class CreateIssue extends Command {
|
|
|
49
54
|
// eslint-disable-next-line no-restricted-syntax
|
|
50
55
|
priority: flags.priority,
|
|
51
56
|
status: flags.status,
|
|
57
|
+
draft: flags.draft,
|
|
52
58
|
});
|
|
53
59
|
if (!result.success) {
|
|
54
60
|
// eslint-disable-next-line no-restricted-syntax
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issue.js","sourceRoot":"","sources":["../../../src/commands/create/issue.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAE5C,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAA;AAExE;;GAEG;AACH,qFAAqF;AACrF,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,OAAO;IAC9C,gDAAgD;IAChD,MAAM,CAAU,WAAW,GAAG,yCAAyC,CAAA;IAEvE,gDAAgD;IAChD,MAAM,CAAU,QAAQ,GAAG;QACzB,gCAAgC;QAChC,uEAAuE;QACvE,0EAA0E;QAC1E,wEAAwE;
|
|
1
|
+
{"version":3,"file":"issue.js","sourceRoot":"","sources":["../../../src/commands/create/issue.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAE5C,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAA;AAExE;;GAEG;AACH,qFAAqF;AACrF,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,OAAO;IAC9C,gDAAgD;IAChD,MAAM,CAAU,WAAW,GAAG,yCAAyC,CAAA;IAEvE,gDAAgD;IAChD,MAAM,CAAU,QAAQ,GAAG;QACzB,gCAAgC;QAChC,uEAAuE;QACvE,0EAA0E;QAC1E,wEAAwE;QACxE,8DAA8D;KAC/D,CAAA;IAED,gDAAgD;IAChD,MAAM,CAAU,KAAK,GAAG;QACtB,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;YAClB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,aAAa;SAC3B,CAAC;QACF,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC;YACxB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,mBAAmB;SACjC,CAAC;QACF,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC;YACrB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,kCAAkC;YAC/C,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC;SACnC,CAAC;QACF,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,gBAAgB;YAC7B,OAAO,EAAE,MAAM;SAChB,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;YACnB,WAAW,EAAE,iBAAiB;YAC9B,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,WAAW,CAAC,CAAA;QAC/C,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAEnD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;YAC/B,GAAG;YACH,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,gDAAgD;YAChD,QAAQ,EAAE,KAAK,CAAC,QAAiD;YACjE,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC,CAAA;QAEF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,gDAAgD;YAChD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,wBAAwB,CAAC,CAAA;QACtD,CAAC;IACH,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
/**
|
|
3
|
+
* Create a new user in the project
|
|
4
|
+
*/
|
|
5
|
+
export default class CreateUser extends Command {
|
|
6
|
+
static description: string;
|
|
7
|
+
static examples: string[];
|
|
8
|
+
static flags: {
|
|
9
|
+
id: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
name: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
email: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
'git-username': import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
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=user.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../src/commands/create/user.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAU5C;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,OAAO;IAE7C,OAAgB,WAAW,SAAqC;IAGhE,OAAgB,QAAQ,WAKvB;IAGD,OAAgB,KAAK;;;;;;;MAyBpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAyClC"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
// eslint-disable-next-line import/order
|
|
2
|
+
import { Command, Flags } from '@oclif/core';
|
|
3
|
+
import { daemonCreateUser } from '../../daemon/daemon-create-user.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
|
+
* Create a new user in the project
|
|
9
|
+
*/
|
|
10
|
+
// eslint-disable-next-line custom/no-default-class-export, class-export/class-export
|
|
11
|
+
export default class CreateUser extends Command {
|
|
12
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
13
|
+
static description = 'Create a new user in the project';
|
|
14
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
15
|
+
static examples = [
|
|
16
|
+
'<%= config.bin %> create user --name "John Doe"',
|
|
17
|
+
'<%= config.bin %> create user --id john-doe --name "John Doe" --email john@example.com',
|
|
18
|
+
'<%= config.bin %> create user -n "Alice" -g alice-dev -g alice-work',
|
|
19
|
+
'<%= config.bin %> create user --name "Bob" --project centy-daemon',
|
|
20
|
+
];
|
|
21
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
22
|
+
static flags = {
|
|
23
|
+
id: Flags.string({
|
|
24
|
+
char: 'i',
|
|
25
|
+
description: 'User ID (slug format, auto-generated from name if not provided)',
|
|
26
|
+
}),
|
|
27
|
+
name: Flags.string({
|
|
28
|
+
char: 'n',
|
|
29
|
+
description: 'Display name (required)',
|
|
30
|
+
required: true,
|
|
31
|
+
}),
|
|
32
|
+
email: Flags.string({
|
|
33
|
+
char: 'e',
|
|
34
|
+
description: 'Email address',
|
|
35
|
+
}),
|
|
36
|
+
'git-username': Flags.string({
|
|
37
|
+
char: 'g',
|
|
38
|
+
description: 'Git username (can be specified multiple times)',
|
|
39
|
+
multiple: true,
|
|
40
|
+
}),
|
|
41
|
+
json: Flags.boolean({
|
|
42
|
+
description: 'Output as JSON',
|
|
43
|
+
default: false,
|
|
44
|
+
}),
|
|
45
|
+
project: projectFlag,
|
|
46
|
+
};
|
|
47
|
+
async run() {
|
|
48
|
+
const { flags } = await this.parse(CreateUser);
|
|
49
|
+
const cwd = await resolveProjectPath(flags.project);
|
|
50
|
+
try {
|
|
51
|
+
await ensureInitialized(cwd);
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
if (error instanceof NotInitializedError) {
|
|
55
|
+
this.error(error.message);
|
|
56
|
+
}
|
|
57
|
+
throw error instanceof Error ? error : new Error(String(error));
|
|
58
|
+
}
|
|
59
|
+
const response = await daemonCreateUser({
|
|
60
|
+
projectPath: cwd,
|
|
61
|
+
id: flags.id !== undefined ? flags.id : '',
|
|
62
|
+
name: flags.name,
|
|
63
|
+
email: flags.email,
|
|
64
|
+
gitUsernames: flags['git-username'],
|
|
65
|
+
});
|
|
66
|
+
if (!response.success) {
|
|
67
|
+
this.error(response.error);
|
|
68
|
+
}
|
|
69
|
+
if (flags.json) {
|
|
70
|
+
this.log(JSON.stringify(response.user, null, 2));
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
const user = response.user;
|
|
74
|
+
if (user !== undefined) {
|
|
75
|
+
this.log(`Created user: ${user.id} (${user.name})`);
|
|
76
|
+
if (user.email !== undefined && user.email !== '') {
|
|
77
|
+
this.log(` Email: ${user.email}`);
|
|
78
|
+
}
|
|
79
|
+
if (user.gitUsernames !== undefined && user.gitUsernames.length > 0) {
|
|
80
|
+
this.log(` Git usernames: ${user.gitUsernames.join(', ')}`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=user.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.js","sourceRoot":"","sources":["../../../src/commands/create/user.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAE5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AACrE,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,UAAW,SAAQ,OAAO;IAC7C,gDAAgD;IAChD,MAAM,CAAU,WAAW,GAAG,kCAAkC,CAAA;IAEhE,gDAAgD;IAChD,MAAM,CAAU,QAAQ,GAAG;QACzB,iDAAiD;QACjD,wFAAwF;QACxF,qEAAqE;QACrE,mEAAmE;KACpE,CAAA;IAED,gDAAgD;IAChD,MAAM,CAAU,KAAK,GAAG;QACtB,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC;YACf,IAAI,EAAE,GAAG;YACT,WAAW,EACT,iEAAiE;SACpE,CAAC;QACF,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,yBAAyB;YACtC,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;YAClB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,eAAe;SAC7B,CAAC;QACF,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC;YAC3B,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,gDAAgD;YAC7D,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,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,UAAU,CAAC,CAAA;QAC9C,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,gBAAgB,CAAC;YACtC,WAAW,EAAE,GAAG;YAChB,EAAE,EAAE,KAAK,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;YAC1C,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,YAAY,EAAE,KAAK,CAAC,cAAc,CAAC;SACpC,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAC5B,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;YAChD,OAAM;QACR,CAAC;QAED,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAA;QAC1B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,IAAI,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;YACnD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,EAAE,EAAE,CAAC;gBAClD,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;YACpC,CAAC;YACD,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpE,IAAI,CAAC,GAAG,CAAC,oBAAoB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAC9D,CAAC;QACH,CAAC;IACH,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
/**
|
|
3
|
+
* Delete an issue's plan
|
|
4
|
+
*/
|
|
5
|
+
export default class DeletePlan extends Command {
|
|
6
|
+
static args: {
|
|
7
|
+
issueId: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
8
|
+
};
|
|
9
|
+
static description: string;
|
|
10
|
+
static examples: string[];
|
|
11
|
+
static flags: {
|
|
12
|
+
force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
13
|
+
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
+
};
|
|
15
|
+
run(): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../src/commands/delete/plan.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,SAA2B;IAGtD,OAAgB,QAAQ,WAKvB;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 { daemonDeletePlan } from '../../daemon/daemon-delete-plan.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
|
+
* Delete an issue's plan
|
|
9
|
+
*/
|
|
10
|
+
// eslint-disable-next-line custom/no-default-class-export, class-export/class-export
|
|
11
|
+
export default class DeletePlan extends Command {
|
|
12
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
13
|
+
static args = {
|
|
14
|
+
issueId: Args.string({
|
|
15
|
+
description: 'Issue ID or display number',
|
|
16
|
+
required: true,
|
|
17
|
+
}),
|
|
18
|
+
};
|
|
19
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
20
|
+
static description = "Delete an issue's plan";
|
|
21
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
22
|
+
static examples = [
|
|
23
|
+
'<%= config.bin %> delete plan 1',
|
|
24
|
+
'<%= config.bin %> delete plan abc123',
|
|
25
|
+
'<%= config.bin %> delete plan 1 --force',
|
|
26
|
+
'<%= config.bin %> delete plan 1 --project centy-daemon',
|
|
27
|
+
];
|
|
28
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
29
|
+
static flags = {
|
|
30
|
+
force: Flags.boolean({
|
|
31
|
+
char: 'f',
|
|
32
|
+
description: 'Skip confirmation prompt',
|
|
33
|
+
default: false,
|
|
34
|
+
}),
|
|
35
|
+
project: projectFlag,
|
|
36
|
+
};
|
|
37
|
+
async run() {
|
|
38
|
+
const { args, flags } = await this.parse(DeletePlan);
|
|
39
|
+
const cwd = await resolveProjectPath(flags.project);
|
|
40
|
+
try {
|
|
41
|
+
await ensureInitialized(cwd);
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
if (error instanceof NotInitializedError) {
|
|
45
|
+
this.error(error.message);
|
|
46
|
+
}
|
|
47
|
+
throw error instanceof Error ? error : new Error(String(error));
|
|
48
|
+
}
|
|
49
|
+
if (!flags.force) {
|
|
50
|
+
const readline = await import('node:readline');
|
|
51
|
+
const rl = readline.createInterface({
|
|
52
|
+
input: process.stdin,
|
|
53
|
+
output: process.stdout,
|
|
54
|
+
});
|
|
55
|
+
const answer = await new Promise(resolve => {
|
|
56
|
+
rl.question(`Are you sure you want to delete the plan for issue ${args.issueId}? (y/N) `, resolve);
|
|
57
|
+
});
|
|
58
|
+
rl.close();
|
|
59
|
+
if (answer.toLowerCase() !== 'y') {
|
|
60
|
+
this.log('Cancelled.');
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
const response = await daemonDeletePlan({
|
|
65
|
+
projectPath: cwd,
|
|
66
|
+
issueId: args.issueId,
|
|
67
|
+
});
|
|
68
|
+
if (!response.success) {
|
|
69
|
+
this.error(response.error);
|
|
70
|
+
}
|
|
71
|
+
this.log(`Deleted plan for issue ${args.issueId}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/commands/delete/plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
/**
|
|
3
|
+
* Delete a user
|
|
4
|
+
*/
|
|
5
|
+
export default class DeleteUser 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
|
+
force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
13
|
+
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
+
};
|
|
15
|
+
run(): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=user.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../src/commands/delete/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,WAIvB;IAGD,OAAgB,KAAK;;;MAOpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA2ClC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
// eslint-disable-next-line import/order
|
|
2
|
+
import { Args, Command, Flags } from '@oclif/core';
|
|
3
|
+
import { daemonDeleteUser } from '../../daemon/daemon-delete-user.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
|
+
* Delete a user
|
|
9
|
+
*/
|
|
10
|
+
// eslint-disable-next-line custom/no-default-class-export, class-export/class-export
|
|
11
|
+
export default class DeleteUser extends Command {
|
|
12
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
13
|
+
static args = {
|
|
14
|
+
id: Args.string({
|
|
15
|
+
description: 'User ID',
|
|
16
|
+
required: true,
|
|
17
|
+
}),
|
|
18
|
+
};
|
|
19
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
20
|
+
static description = 'Delete a user';
|
|
21
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
22
|
+
static examples = [
|
|
23
|
+
'<%= config.bin %> delete user john-doe',
|
|
24
|
+
'<%= config.bin %> delete user john-doe --force',
|
|
25
|
+
'<%= config.bin %> delete user john-doe --project centy-daemon',
|
|
26
|
+
];
|
|
27
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
28
|
+
static flags = {
|
|
29
|
+
force: Flags.boolean({
|
|
30
|
+
char: 'f',
|
|
31
|
+
description: 'Skip confirmation prompt',
|
|
32
|
+
default: false,
|
|
33
|
+
}),
|
|
34
|
+
project: projectFlag,
|
|
35
|
+
};
|
|
36
|
+
async run() {
|
|
37
|
+
const { args, flags } = await this.parse(DeleteUser);
|
|
38
|
+
const cwd = await resolveProjectPath(flags.project);
|
|
39
|
+
try {
|
|
40
|
+
await ensureInitialized(cwd);
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
if (error instanceof NotInitializedError) {
|
|
44
|
+
this.error(error.message);
|
|
45
|
+
}
|
|
46
|
+
throw error instanceof Error ? error : new Error(String(error));
|
|
47
|
+
}
|
|
48
|
+
if (!flags.force) {
|
|
49
|
+
const readline = await import('node:readline');
|
|
50
|
+
const rl = readline.createInterface({
|
|
51
|
+
input: process.stdin,
|
|
52
|
+
output: process.stdout,
|
|
53
|
+
});
|
|
54
|
+
const answer = await new Promise(resolve => {
|
|
55
|
+
rl.question(`Are you sure you want to delete user "${args.id}"? (y/N) `, resolve);
|
|
56
|
+
});
|
|
57
|
+
rl.close();
|
|
58
|
+
if (answer.toLowerCase() !== 'y') {
|
|
59
|
+
this.log('Cancelled.');
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
const response = await daemonDeleteUser({
|
|
64
|
+
projectPath: cwd,
|
|
65
|
+
userId: args.id,
|
|
66
|
+
});
|
|
67
|
+
if (!response.success) {
|
|
68
|
+
this.error(response.error);
|
|
69
|
+
}
|
|
70
|
+
this.log(`Deleted user "${args.id}"`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=user.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.js","sourceRoot":"","sources":["../../../src/commands/delete/user.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
/**
|
|
3
|
+
* Duplicate a doc (same or different project)
|
|
4
|
+
*/
|
|
5
|
+
export default class DuplicateDoc extends Command {
|
|
6
|
+
static args: {
|
|
7
|
+
slug: 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 | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
'new-slug': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
+
title: 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=doc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doc.d.ts","sourceRoot":"","sources":["../../../src/commands/duplicate/doc.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAA;AAUlD;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,OAAO;IAE/C,OAAgB,IAAI;;MAKnB;IAGD,OAAgB,WAAW,SAC4B;IAGvD,OAAgB,QAAQ,WAKvB;IAGD,OAAgB,KAAK;;;;;MAcpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAkDlC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
// eslint-disable-next-line import/order
|
|
2
|
+
import { Args, Command, Flags } from '@oclif/core';
|
|
3
|
+
import { daemonDuplicateDoc } from '../../daemon/daemon-duplicate-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
|
+
* Duplicate a doc (same or different project)
|
|
9
|
+
*/
|
|
10
|
+
// eslint-disable-next-line custom/no-default-class-export, class-export/class-export
|
|
11
|
+
export default class DuplicateDoc 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 = 'Duplicate a doc (same project or different project)';
|
|
21
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
22
|
+
static examples = [
|
|
23
|
+
'<%= config.bin %> duplicate doc my-doc',
|
|
24
|
+
'<%= config.bin %> duplicate doc readme --new-slug readme-v2',
|
|
25
|
+
'<%= config.bin %> duplicate doc api-guide --to /path/to/other/project',
|
|
26
|
+
'<%= config.bin %> duplicate doc spec --to ../other --new-slug spec-copy --title "Spec Copy"',
|
|
27
|
+
];
|
|
28
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
29
|
+
static flags = {
|
|
30
|
+
to: Flags.string({
|
|
31
|
+
char: 't',
|
|
32
|
+
description: 'Target project path (defaults to same project if not specified)',
|
|
33
|
+
}),
|
|
34
|
+
'new-slug': Flags.string({
|
|
35
|
+
char: 's',
|
|
36
|
+
description: 'Slug for the duplicate (defaults to "{slug}-copy")',
|
|
37
|
+
}),
|
|
38
|
+
title: Flags.string({
|
|
39
|
+
description: 'Title for the duplicate (defaults to "Copy of {original}")',
|
|
40
|
+
}),
|
|
41
|
+
project: projectFlag,
|
|
42
|
+
};
|
|
43
|
+
async run() {
|
|
44
|
+
const { args, flags } = await this.parse(DuplicateDoc);
|
|
45
|
+
const sourceProjectPath = await resolveProjectPath(flags.project);
|
|
46
|
+
const targetProjectPath = flags.to
|
|
47
|
+
? await resolveProjectPath(flags.to)
|
|
48
|
+
: sourceProjectPath;
|
|
49
|
+
// Ensure source project is initialized
|
|
50
|
+
try {
|
|
51
|
+
await ensureInitialized(sourceProjectPath);
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
if (error instanceof NotInitializedError) {
|
|
55
|
+
this.error(`Source project: ${error.message}`);
|
|
56
|
+
}
|
|
57
|
+
throw error instanceof Error ? error : new Error(String(error));
|
|
58
|
+
}
|
|
59
|
+
// Ensure target project is initialized (if different)
|
|
60
|
+
if (targetProjectPath !== sourceProjectPath) {
|
|
61
|
+
try {
|
|
62
|
+
await ensureInitialized(targetProjectPath);
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
if (error instanceof NotInitializedError) {
|
|
66
|
+
this.error(`Target project: ${error.message}`);
|
|
67
|
+
}
|
|
68
|
+
throw error instanceof Error ? error : new Error(String(error));
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
const response = await daemonDuplicateDoc({
|
|
72
|
+
sourceProjectPath,
|
|
73
|
+
slug: args.slug,
|
|
74
|
+
targetProjectPath,
|
|
75
|
+
newSlug: flags['new-slug'],
|
|
76
|
+
newTitle: flags.title,
|
|
77
|
+
});
|
|
78
|
+
if (!response.success) {
|
|
79
|
+
this.error(response.error);
|
|
80
|
+
}
|
|
81
|
+
const locationInfo = targetProjectPath !== sourceProjectPath
|
|
82
|
+
? ` in ${targetProjectPath}`
|
|
83
|
+
: ' in current project';
|
|
84
|
+
this.log(`Duplicated doc → "${response.doc.slug}" "${response.doc.title}"${locationInfo}`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=doc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doc.js","sourceRoot":"","sources":["../../../src/commands/duplicate/doc.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAElD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAA;AACzE,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,YAAa,SAAQ,OAAO;IAC/C,gDAAgD;IAChD,MAAM,CAAU,IAAI,GAAG;QACrB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;YAChB,WAAW,EAAE,UAAU;YACvB,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAA;IAED,gDAAgD;IAChD,MAAM,CAAU,WAAW,GACzB,qDAAqD,CAAA;IAEvD,gDAAgD;IAChD,MAAM,CAAU,QAAQ,GAAG;QACzB,wCAAwC;QACxC,6DAA6D;QAC7D,uEAAuE;QACvE,6FAA6F;KAC9F,CAAA;IAED,gDAAgD;IAChD,MAAM,CAAU,KAAK,GAAG;QACtB,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC;YACf,IAAI,EAAE,GAAG;YACT,WAAW,EACT,iEAAiE;SACpE,CAAC;QACF,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC;YACvB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,oDAAoD;SAClE,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;YAClB,WAAW,EAAE,4DAA4D;SAC1E,CAAC;QACF,OAAO,EAAE,WAAW;KACrB,CAAA;IAEM,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;QACtD,MAAM,iBAAiB,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACjE,MAAM,iBAAiB,GAAG,KAAK,CAAC,EAAE;YAChC,CAAC,CAAC,MAAM,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;YACpC,CAAC,CAAC,iBAAiB,CAAA;QAErB,uCAAuC;QACvC,IAAI,CAAC;YACH,MAAM,iBAAiB,CAAC,iBAAiB,CAAC,CAAA;QAC5C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,mBAAmB,EAAE,CAAC;gBACzC,IAAI,CAAC,KAAK,CAAC,mBAAmB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;YAChD,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,sDAAsD;QACtD,IAAI,iBAAiB,KAAK,iBAAiB,EAAE,CAAC;YAC5C,IAAI,CAAC;gBACH,MAAM,iBAAiB,CAAC,iBAAiB,CAAC,CAAA;YAC5C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,mBAAmB,EAAE,CAAC;oBACzC,IAAI,CAAC,KAAK,CAAC,mBAAmB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;gBAChD,CAAC;gBACD,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;YACjE,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC;YACxC,iBAAiB;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,iBAAiB;YACjB,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC;YAC1B,QAAQ,EAAE,KAAK,CAAC,KAAK;SACtB,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAC5B,CAAC;QAED,MAAM,YAAY,GAChB,iBAAiB,KAAK,iBAAiB;YACrC,CAAC,CAAC,OAAO,iBAAiB,EAAE;YAC5B,CAAC,CAAC,qBAAqB,CAAA;QAE3B,IAAI,CAAC,GAAG,CACN,qBAAqB,QAAQ,CAAC,GAAG,CAAC,IAAI,MAAM,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAI,YAAY,EAAE,CACjF,CAAA;IACH,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
/**
|
|
3
|
+
* Duplicate an issue (same or different project)
|
|
4
|
+
*/
|
|
5
|
+
export default class DuplicateIssue 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 | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
title: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
+
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
};
|
|
16
|
+
run(): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=issue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issue.d.ts","sourceRoot":"","sources":["../../../src/commands/duplicate/issue.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAA;AAUlD;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,OAAO;IAEjD,OAAgB,IAAI;;MAKnB;IAGD,OAAgB,WAAW,SAC+B;IAG1D,OAAgB,QAAQ,WAKvB;IAGD,OAAgB,KAAK;;;;MAUpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAiDlC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
// eslint-disable-next-line import/order
|
|
2
|
+
import { Args, Command, Flags } from '@oclif/core';
|
|
3
|
+
import { daemonDuplicateIssue } from '../../daemon/daemon-duplicate-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
|
+
* Duplicate an issue (same or different project)
|
|
9
|
+
*/
|
|
10
|
+
// eslint-disable-next-line custom/no-default-class-export, class-export/class-export
|
|
11
|
+
export default class DuplicateIssue 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 = 'Duplicate an issue (same project or different project)';
|
|
21
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
22
|
+
static examples = [
|
|
23
|
+
'<%= config.bin %> duplicate issue 1',
|
|
24
|
+
'<%= config.bin %> duplicate issue 1 --title "New feature branch"',
|
|
25
|
+
'<%= config.bin %> duplicate issue abc123-uuid --to /path/to/other/project',
|
|
26
|
+
'<%= config.bin %> duplicate issue 5 --to ../other --title "Copy for testing"',
|
|
27
|
+
];
|
|
28
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
29
|
+
static flags = {
|
|
30
|
+
to: Flags.string({
|
|
31
|
+
char: 't',
|
|
32
|
+
description: 'Target project path (defaults to same project if not specified)',
|
|
33
|
+
}),
|
|
34
|
+
title: Flags.string({
|
|
35
|
+
description: 'Title for the duplicate (defaults to "Copy of {original}")',
|
|
36
|
+
}),
|
|
37
|
+
project: projectFlag,
|
|
38
|
+
};
|
|
39
|
+
async run() {
|
|
40
|
+
const { args, flags } = await this.parse(DuplicateIssue);
|
|
41
|
+
const sourceProjectPath = await resolveProjectPath(flags.project);
|
|
42
|
+
const targetProjectPath = flags.to
|
|
43
|
+
? await resolveProjectPath(flags.to)
|
|
44
|
+
: sourceProjectPath;
|
|
45
|
+
// Ensure source project is initialized
|
|
46
|
+
try {
|
|
47
|
+
await ensureInitialized(sourceProjectPath);
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
if (error instanceof NotInitializedError) {
|
|
51
|
+
this.error(`Source project: ${error.message}`);
|
|
52
|
+
}
|
|
53
|
+
throw error instanceof Error ? error : new Error(String(error));
|
|
54
|
+
}
|
|
55
|
+
// Ensure target project is initialized (if different)
|
|
56
|
+
if (targetProjectPath !== sourceProjectPath) {
|
|
57
|
+
try {
|
|
58
|
+
await ensureInitialized(targetProjectPath);
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
if (error instanceof NotInitializedError) {
|
|
62
|
+
this.error(`Target project: ${error.message}`);
|
|
63
|
+
}
|
|
64
|
+
throw error instanceof Error ? error : new Error(String(error));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
const response = await daemonDuplicateIssue({
|
|
68
|
+
sourceProjectPath,
|
|
69
|
+
issueId: args.id,
|
|
70
|
+
targetProjectPath,
|
|
71
|
+
newTitle: flags.title,
|
|
72
|
+
});
|
|
73
|
+
if (!response.success) {
|
|
74
|
+
this.error(response.error);
|
|
75
|
+
}
|
|
76
|
+
const locationInfo = targetProjectPath !== sourceProjectPath
|
|
77
|
+
? ` in ${targetProjectPath}`
|
|
78
|
+
: ' in current project';
|
|
79
|
+
this.log(`Duplicated issue → #${response.issue.displayNumber} "${response.issue.title}"${locationInfo}`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=issue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issue.js","sourceRoot":"","sources":["../../../src/commands/duplicate/issue.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ export default class GetIssue extends Command {
|
|
|
13
13
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
14
14
|
global: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
15
15
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
|
+
action: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
17
|
};
|
|
17
18
|
run(): Promise<void>;
|
|
18
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issue.d.ts","sourceRoot":"","sources":["../../../src/commands/get/issue.ts"],"names":[],"mappings":"AAGA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"issue.d.ts","sourceRoot":"","sources":["../../../src/commands/get/issue.ts"],"names":[],"mappings":"AAGA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAA;AAoBlD;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,OAAO;IAE3C,OAAgB,OAAO,WAA0B;IAGjD,OAAgB,IAAI;;MAKnB;IAGD,OAAgB,WAAW,SAA+C;IAG1E,OAAgB,QAAQ,WAUvB;IAGD,OAAgB,KAAK;;;;;MAgBpB;IAGY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAkMlC"}
|