@newpeak/barista-cli 0.2.279 → 0.2.285
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/liberica/index.d.ts.map +1 -1
- package/dist/commands/liberica/index.js +2 -0
- package/dist/commands/liberica/index.js.map +1 -1
- package/dist/commands/liberica/settings/get.d.ts +3 -0
- package/dist/commands/liberica/settings/get.d.ts.map +1 -0
- package/dist/commands/liberica/settings/get.js +88 -0
- package/dist/commands/liberica/settings/get.js.map +1 -0
- package/dist/commands/liberica/settings/index.d.ts +3 -0
- package/dist/commands/liberica/settings/index.d.ts.map +1 -0
- package/dist/commands/liberica/settings/index.js +11 -0
- package/dist/commands/liberica/settings/index.js.map +1 -0
- package/dist/commands/liberica/settings/set.d.ts +3 -0
- package/dist/commands/liberica/settings/set.d.ts.map +1 -0
- package/dist/commands/liberica/settings/set.js +78 -0
- package/dist/commands/liberica/settings/set.js.map +1 -0
- package/dist/commands/liberica/settings/shared.d.ts +12 -0
- package/dist/commands/liberica/settings/shared.d.ts.map +1 -0
- package/dist/commands/liberica/settings/shared.js +23 -0
- package/dist/commands/liberica/settings/shared.js.map +1 -0
- package/dist/commands/liberica/teams/index.d.ts.map +1 -1
- package/dist/commands/liberica/teams/index.js +2 -0
- package/dist/commands/liberica/teams/index.js.map +1 -1
- package/dist/commands/liberica/teams/issues/list.d.ts.map +1 -1
- package/dist/commands/liberica/teams/issues/list.js +11 -0
- package/dist/commands/liberica/teams/issues/list.js.map +1 -1
- package/dist/commands/liberica/teams/plans/create.d.ts +3 -0
- package/dist/commands/liberica/teams/plans/create.d.ts.map +1 -0
- package/dist/commands/liberica/teams/plans/create.js +61 -0
- package/dist/commands/liberica/teams/plans/create.js.map +1 -0
- package/dist/commands/liberica/teams/plans/delete.d.ts +3 -0
- package/dist/commands/liberica/teams/plans/delete.d.ts.map +1 -0
- package/dist/commands/liberica/teams/plans/delete.js +43 -0
- package/dist/commands/liberica/teams/plans/delete.js.map +1 -0
- package/dist/commands/liberica/teams/plans/export.d.ts +3 -0
- package/dist/commands/liberica/teams/plans/export.d.ts.map +1 -0
- package/dist/commands/liberica/teams/plans/export.js +45 -0
- package/dist/commands/liberica/teams/plans/export.js.map +1 -0
- package/dist/commands/liberica/teams/plans/generate.d.ts +3 -0
- package/dist/commands/liberica/teams/plans/generate.d.ts.map +1 -0
- package/dist/commands/liberica/teams/plans/generate.js +55 -0
- package/dist/commands/liberica/teams/plans/generate.js.map +1 -0
- package/dist/commands/liberica/teams/plans/get.d.ts +3 -0
- package/dist/commands/liberica/teams/plans/get.d.ts.map +1 -0
- package/dist/commands/liberica/teams/plans/get.js +23 -0
- package/dist/commands/liberica/teams/plans/get.js.map +1 -0
- package/dist/commands/liberica/teams/plans/helpers.d.ts +18 -0
- package/dist/commands/liberica/teams/plans/helpers.d.ts.map +1 -0
- package/dist/commands/liberica/teams/plans/helpers.js +96 -0
- package/dist/commands/liberica/teams/plans/helpers.js.map +1 -0
- package/dist/commands/liberica/teams/plans/index.d.ts +3 -0
- package/dist/commands/liberica/teams/plans/index.d.ts.map +1 -0
- package/dist/commands/liberica/teams/plans/index.js +29 -0
- package/dist/commands/liberica/teams/plans/index.js.map +1 -0
- package/dist/commands/liberica/teams/plans/items/add.d.ts +3 -0
- package/dist/commands/liberica/teams/plans/items/add.d.ts.map +1 -0
- package/dist/commands/liberica/teams/plans/items/add.js +73 -0
- package/dist/commands/liberica/teams/plans/items/add.js.map +1 -0
- package/dist/commands/liberica/teams/plans/items/edit.d.ts +3 -0
- package/dist/commands/liberica/teams/plans/items/edit.d.ts.map +1 -0
- package/dist/commands/liberica/teams/plans/items/edit.js +81 -0
- package/dist/commands/liberica/teams/plans/items/edit.js.map +1 -0
- package/dist/commands/liberica/teams/plans/items/import.d.ts +3 -0
- package/dist/commands/liberica/teams/plans/items/import.d.ts.map +1 -0
- package/dist/commands/liberica/teams/plans/items/import.js +91 -0
- package/dist/commands/liberica/teams/plans/items/import.js.map +1 -0
- package/dist/commands/liberica/teams/plans/items/index.d.ts +3 -0
- package/dist/commands/liberica/teams/plans/items/index.d.ts.map +1 -0
- package/dist/commands/liberica/teams/plans/items/index.js +19 -0
- package/dist/commands/liberica/teams/plans/items/index.js.map +1 -0
- package/dist/commands/liberica/teams/plans/items/list.d.ts +3 -0
- package/dist/commands/liberica/teams/plans/items/list.d.ts.map +1 -0
- package/dist/commands/liberica/teams/plans/items/list.js +44 -0
- package/dist/commands/liberica/teams/plans/items/list.js.map +1 -0
- package/dist/commands/liberica/teams/plans/items/moveWeek.d.ts +3 -0
- package/dist/commands/liberica/teams/plans/items/moveWeek.d.ts.map +1 -0
- package/dist/commands/liberica/teams/plans/items/moveWeek.js +36 -0
- package/dist/commands/liberica/teams/plans/items/moveWeek.js.map +1 -0
- package/dist/commands/liberica/teams/plans/items/remove.d.ts +3 -0
- package/dist/commands/liberica/teams/plans/items/remove.d.ts.map +1 -0
- package/dist/commands/liberica/teams/plans/items/remove.js +46 -0
- package/dist/commands/liberica/teams/plans/items/remove.js.map +1 -0
- package/dist/commands/liberica/teams/plans/list.d.ts +3 -0
- package/dist/commands/liberica/teams/plans/list.d.ts.map +1 -0
- package/dist/commands/liberica/teams/plans/list.js +41 -0
- package/dist/commands/liberica/teams/plans/list.js.map +1 -0
- package/dist/commands/liberica/teams/plans/rollup.d.ts +3 -0
- package/dist/commands/liberica/teams/plans/rollup.d.ts.map +1 -0
- package/dist/commands/liberica/teams/plans/rollup.js +30 -0
- package/dist/commands/liberica/teams/plans/rollup.js.map +1 -0
- package/dist/commands/liberica/teams/plans/scenarios/baseline.d.ts +3 -0
- package/dist/commands/liberica/teams/plans/scenarios/baseline.d.ts.map +1 -0
- package/dist/commands/liberica/teams/plans/scenarios/baseline.js +42 -0
- package/dist/commands/liberica/teams/plans/scenarios/baseline.js.map +1 -0
- package/dist/commands/liberica/teams/plans/scenarios/compare.d.ts +3 -0
- package/dist/commands/liberica/teams/plans/scenarios/compare.d.ts.map +1 -0
- package/dist/commands/liberica/teams/plans/scenarios/compare.js +39 -0
- package/dist/commands/liberica/teams/plans/scenarios/compare.js.map +1 -0
- package/dist/commands/liberica/teams/plans/scenarios/index.d.ts +3 -0
- package/dist/commands/liberica/teams/plans/scenarios/index.d.ts.map +1 -0
- package/dist/commands/liberica/teams/plans/scenarios/index.js +15 -0
- package/dist/commands/liberica/teams/plans/scenarios/index.js.map +1 -0
- package/dist/commands/liberica/teams/plans/scenarios/list.d.ts +3 -0
- package/dist/commands/liberica/teams/plans/scenarios/list.d.ts.map +1 -0
- package/dist/commands/liberica/teams/plans/scenarios/list.js +27 -0
- package/dist/commands/liberica/teams/plans/scenarios/list.js.map +1 -0
- package/dist/commands/liberica/teams/plans/scenarios/save.d.ts +3 -0
- package/dist/commands/liberica/teams/plans/scenarios/save.d.ts.map +1 -0
- package/dist/commands/liberica/teams/plans/scenarios/save.js +57 -0
- package/dist/commands/liberica/teams/plans/scenarios/save.js.map +1 -0
- package/dist/commands/liberica/teams/plans/update.d.ts +3 -0
- package/dist/commands/liberica/teams/plans/update.d.ts.map +1 -0
- package/dist/commands/liberica/teams/plans/update.js +89 -0
- package/dist/commands/liberica/teams/plans/update.js.map +1 -0
- package/dist/commands/liberica/teams/plans/week/index.d.ts +3 -0
- package/dist/commands/liberica/teams/plans/week/index.d.ts.map +1 -0
- package/dist/commands/liberica/teams/plans/week/index.js +9 -0
- package/dist/commands/liberica/teams/plans/week/index.js.map +1 -0
- package/dist/commands/liberica/teams/plans/week/list.d.ts +3 -0
- package/dist/commands/liberica/teams/plans/week/list.d.ts.map +1 -0
- package/dist/commands/liberica/teams/plans/week/list.js +27 -0
- package/dist/commands/liberica/teams/plans/week/list.js.map +1 -0
- package/dist/commands/liberica/teams/tasks/list.d.ts.map +1 -1
- package/dist/commands/liberica/teams/tasks/list.js +18 -0
- package/dist/commands/liberica/teams/tasks/list.js.map +1 -1
- package/dist/core/api/client.d.ts +23 -0
- package/dist/core/api/client.d.ts.map +1 -1
- package/dist/core/api/client.js +499 -0
- package/dist/core/api/client.js.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/settings.d.ts +9 -0
- package/dist/types/settings.d.ts.map +1 -0
- package/dist/types/settings.js +2 -0
- package/dist/types/settings.js.map +1 -0
- package/dist/types/team-issue.d.ts +2 -0
- package/dist/types/team-issue.d.ts.map +1 -1
- package/dist/types/team-plan.d.ts +265 -0
- package/dist/types/team-plan.d.ts.map +1 -0
- package/dist/types/team-plan.js +2 -0
- package/dist/types/team-plan.js.map +1 -0
- package/dist/types/team-task.d.ts +3 -1
- package/dist/types/team-task.d.ts.map +1 -1
- package/package.json +1 -1
- package/skills/barista-cli/data/commands.json +132 -1
- package/skills/barista-cli/data/commands.yaml +86 -1
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { apiClient } from '../../../../core/api/client.js';
|
|
4
|
+
import { handleResponse, optionalInteger, printDryRun, printJson, requireOption, resolveContext, } from './helpers.js';
|
|
5
|
+
export function createTeamPlanDeleteCommand() {
|
|
6
|
+
const command = new Command('delete');
|
|
7
|
+
command.description('Delete a team plan');
|
|
8
|
+
command.argument('<plan-id>', 'Plan ID');
|
|
9
|
+
command
|
|
10
|
+
.option('--optimistic-lock <number>', 'Optimistic lock version')
|
|
11
|
+
.option('--confirm', 'Confirm deletion')
|
|
12
|
+
.option('--force', 'Alias for --confirm')
|
|
13
|
+
.option('--dry-run', 'Print the request body without calling the API')
|
|
14
|
+
.option('--json', 'Output as JSON');
|
|
15
|
+
command.action(async (planId, options) => {
|
|
16
|
+
const { environment, tenant } = resolveContext(options);
|
|
17
|
+
const json = options.json === true;
|
|
18
|
+
const id = requireOption(planId, '<plan-id>', json);
|
|
19
|
+
const data = { planId: id };
|
|
20
|
+
const optimisticLock = optionalInteger(options.optimisticLock);
|
|
21
|
+
if (optimisticLock !== undefined)
|
|
22
|
+
data.optimisticLock = optimisticLock;
|
|
23
|
+
if (options.dryRun) {
|
|
24
|
+
printDryRun(data, json);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (!options.confirm && !options.force) {
|
|
28
|
+
if (json) {
|
|
29
|
+
printJson({ success: true, dryRun: true, needsConfirm: true, data });
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
console.log(chalk.yellow(`\n⚠️ Add --confirm to delete team plan ${id}\n`));
|
|
33
|
+
}
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const response = await apiClient.deleteTeamPlan(environment, tenant, data);
|
|
37
|
+
handleResponse(response, json, () => {
|
|
38
|
+
console.log(chalk.green(`\n✓ Team plan ${id} deleted\n`));
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
return command;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=delete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/plans/delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAE3D,OAAO,EACL,cAAc,EACd,eAAe,EACf,WAAW,EACX,SAAS,EACT,aAAa,EACb,cAAc,GACf,MAAM,cAAc,CAAC;AAEtB,MAAM,UAAU,2BAA2B;IACzC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtC,OAAO,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;IAC1C,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAEzC,OAAO;SACJ,MAAM,CAAC,4BAA4B,EAAE,yBAAyB,CAAC;SAC/D,MAAM,CAAC,WAAW,EAAE,kBAAkB,CAAC;SACvC,MAAM,CAAC,SAAS,EAAE,qBAAqB,CAAC;SACxC,MAAM,CAAC,WAAW,EAAE,gDAAgD,CAAC;SACrE,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAEtC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,OAAgC,EAAE,EAAE;QACxE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QACxD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC;QACnC,MAAM,EAAE,GAAG,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;QACpD,MAAM,IAAI,GAA0B,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QACnD,MAAM,cAAc,GAAG,eAAe,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAC/D,IAAI,cAAc,KAAK,SAAS;YAAE,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QAEvE,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACxB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACvC,IAAI,IAAI,EAAE,CAAC;gBACT,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACvE,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,2CAA2C,EAAE,IAAI,CAAC,CAAC,CAAC;YAC/E,CAAC;YACD,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAE3E,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE;YAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/plans/export.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,wBAAgB,2BAA2B,IAAI,OAAO,CAuDrD"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { writeFileSync } from 'fs';
|
|
3
|
+
import { apiClient } from '../../../../core/api/client.js';
|
|
4
|
+
import { fail, printJson, requireOption, resolveContext, } from './helpers.js';
|
|
5
|
+
export function createTeamPlanExportCommand() {
|
|
6
|
+
const command = new Command('export');
|
|
7
|
+
command.description('Export a plan as JSON, Markdown or HTML');
|
|
8
|
+
command.argument('<plan-id>', 'Plan ID');
|
|
9
|
+
command
|
|
10
|
+
.option('-f, --format <string>', 'Export format: json|md|html', 'json')
|
|
11
|
+
.option('-o, --output <path>', 'Write the export to a file')
|
|
12
|
+
.option('--json', 'Output API result as JSON');
|
|
13
|
+
command.action(async (planId, options) => {
|
|
14
|
+
const { environment, tenant } = resolveContext(options);
|
|
15
|
+
const json = options.json === true;
|
|
16
|
+
const id = requireOption(planId, '<plan-id>', json);
|
|
17
|
+
const format = String(options.format || 'json').toLowerCase();
|
|
18
|
+
if (!['json', 'md', 'html'].includes(format)) {
|
|
19
|
+
fail('INVALID_FORMAT', `Unsupported export format: ${format}`, json);
|
|
20
|
+
}
|
|
21
|
+
const response = await apiClient.exportTeamPlan(environment, tenant, id, format);
|
|
22
|
+
if (!response.success) {
|
|
23
|
+
fail(response.error?.code || 'EXPORT_ERROR', response.error?.message || 'Failed to export plan', json);
|
|
24
|
+
}
|
|
25
|
+
const data = response.data;
|
|
26
|
+
const content = typeof data === 'string'
|
|
27
|
+
? data
|
|
28
|
+
: format === 'json'
|
|
29
|
+
? JSON.stringify(data, null, 2)
|
|
30
|
+
: String(data ?? '');
|
|
31
|
+
if (options.output) {
|
|
32
|
+
writeFileSync(String(options.output), content, 'utf8');
|
|
33
|
+
if (json) {
|
|
34
|
+
printJson({ success: true, data: { path: options.output, format } });
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
console.log(`Wrote ${format} export to ${String(options.output)}`);
|
|
38
|
+
}
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
console.log(content);
|
|
42
|
+
});
|
|
43
|
+
return command;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=export.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/plans/export.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAK3D,OAAO,EACL,IAAI,EACJ,SAAS,EACT,aAAa,EACb,cAAc,GACf,MAAM,cAAc,CAAC;AAEtB,MAAM,UAAU,2BAA2B;IACzC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtC,OAAO,CAAC,WAAW,CAAC,yCAAyC,CAAC,CAAC;IAC/D,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAEzC,OAAO;SACJ,MAAM,CAAC,uBAAuB,EAAE,6BAA6B,EAAE,MAAM,CAAC;SACtE,MAAM,CAAC,qBAAqB,EAAE,4BAA4B,CAAC;SAC3D,MAAM,CAAC,QAAQ,EAAE,2BAA2B,CAAC,CAAC;IACjD,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,OAAO,EAAE,EAAE;QAC/C,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QACxD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC;QACnC,MAAM,EAAE,GAAG,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9D,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,gBAAgB,EAAE,8BAA8B,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,cAAc,CAC7C,WAAW,EACX,MAAM,EACN,EAAE,EACF,MAA8B,CAC/B,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtB,IAAI,CACF,QAAQ,CAAC,KAAK,EAAE,IAAI,IAAI,cAAc,EACtC,QAAQ,CAAC,KAAK,EAAE,OAAO,IAAI,uBAAuB,EAClD,IAAI,CACL,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAgC,CAAC;QACvD,MAAM,OAAO,GACX,OAAO,IAAI,KAAK,QAAQ;YACtB,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,MAAM,KAAK,MAAM;gBACjB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC/B,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAE3B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YACvD,IAAI,IAAI,EAAE,CAAC;gBACT,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;YACvE,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,SAAS,MAAM,cAAc,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACrE,CAAC;YACD,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/plans/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAc5C,wBAAgB,6BAA6B,IAAI,OAAO,CA4DvD"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Command, Option } from 'commander';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { apiClient } from '../../../../core/api/client.js';
|
|
4
|
+
import { handleResponse, optionalString, parseIntegerOption, parseNumberOption, printDryRun, requireOption, resolveContext, } from './helpers.js';
|
|
5
|
+
export function createTeamPlanGenerateCommand() {
|
|
6
|
+
const command = new Command('generate');
|
|
7
|
+
command.description('Generate a plan (optionally importing issues)');
|
|
8
|
+
command
|
|
9
|
+
.option('--name <string>', 'Plan name (defaults to custom project code)')
|
|
10
|
+
.option('--custom-project-code <string>', 'Custom project code')
|
|
11
|
+
.option('--scenario-code <string>', 'Scenario code')
|
|
12
|
+
.option('--from-issues', 'Import items from issues (default)', true)
|
|
13
|
+
.addOption(new Option('--no-from-issues', 'Skip issue import'))
|
|
14
|
+
.option('--fp-per-day <number>', 'Function points per person-day')
|
|
15
|
+
.option('--team-size <number>', 'Team size')
|
|
16
|
+
.option('--utilization <number>', 'Utilization ratio (0-1)')
|
|
17
|
+
.option('--buffer <number>', 'Buffer percentage')
|
|
18
|
+
.option('--start-date <string>', 'Start date (yyyy-MM-dd)')
|
|
19
|
+
.option('--scheduled-finish-date <string>', 'Scheduled finish date (yyyy-MM-dd)')
|
|
20
|
+
.option('--dry-run', 'Print the request body without calling the API')
|
|
21
|
+
.option('--confirm', 'Confirm the write operation')
|
|
22
|
+
.option('--json', 'Output as JSON');
|
|
23
|
+
command.action(async (options) => {
|
|
24
|
+
const { environment, tenant } = resolveContext(options);
|
|
25
|
+
const json = options.json === true;
|
|
26
|
+
const customProjectCode = requireOption(options.customProjectCode, '--custom-project-code', json);
|
|
27
|
+
const startDate = requireOption(options.startDate, '--start-date', json);
|
|
28
|
+
const data = {
|
|
29
|
+
planName: optionalString(options.name) || customProjectCode,
|
|
30
|
+
customProjectCode,
|
|
31
|
+
fpPerDay: parseNumberOption(options.fpPerDay, '--fp-per-day', json),
|
|
32
|
+
teamSize: parseIntegerOption(options.teamSize, '--team-size', json),
|
|
33
|
+
utilization: parseNumberOption(options.utilization, '--utilization', json),
|
|
34
|
+
bufferPercent: parseNumberOption(options.buffer, '--buffer', json),
|
|
35
|
+
startDate,
|
|
36
|
+
scheduledFinishDate: optionalString(options.scheduledFinishDate) || startDate,
|
|
37
|
+
fromIssues: options.fromIssues !== false,
|
|
38
|
+
};
|
|
39
|
+
const scenarioCode = optionalString(options.scenarioCode);
|
|
40
|
+
if (scenarioCode)
|
|
41
|
+
data.scenarioCode = scenarioCode;
|
|
42
|
+
if (options.dryRun) {
|
|
43
|
+
printDryRun(data, json);
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
const response = await apiClient.generateTeamPlan(environment, tenant, data);
|
|
47
|
+
handleResponse(response, json, (result) => {
|
|
48
|
+
console.log(chalk.green('\n✓ Team plan generated\n'));
|
|
49
|
+
console.log(JSON.stringify(result, null, 2));
|
|
50
|
+
console.log();
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
return command;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=generate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/plans/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/plans/get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,wBAAwB,IAAI,OAAO,CAqBlD"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { apiClient } from '../../../../core/api/client.js';
|
|
4
|
+
import { handleResponse, requireOption, resolveContext } from './helpers.js';
|
|
5
|
+
export function createTeamPlanGetCommand() {
|
|
6
|
+
const command = new Command('get');
|
|
7
|
+
command.description('Get team plan details by ID');
|
|
8
|
+
command.argument('<plan-id>', 'Plan ID');
|
|
9
|
+
command.option('--json', 'Output as JSON');
|
|
10
|
+
command.action(async (planId, options) => {
|
|
11
|
+
const { environment, tenant } = resolveContext(options);
|
|
12
|
+
const json = options.json === true;
|
|
13
|
+
const id = requireOption(planId, '<plan-id>', json);
|
|
14
|
+
const response = await apiClient.getTeamPlan(environment, tenant, id);
|
|
15
|
+
handleResponse(response, json, (data) => {
|
|
16
|
+
console.log(chalk.bold('\n📋 Team Plan\n'));
|
|
17
|
+
console.log(JSON.stringify(data, null, 2));
|
|
18
|
+
console.log();
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
return command;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=get.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/plans/get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE7E,MAAM,UAAU,wBAAwB;IACtC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;IACnC,OAAO,CAAC,WAAW,CAAC,6BAA6B,CAAC,CAAC;IACnD,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACzC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAE3C,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,OAAgC,EAAE,EAAE;QACxE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QACxD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC;QACnC,MAAM,EAAE,GAAG,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;QAEpD,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAEtE,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE;YACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Environment } from '../../../../types/index.js';
|
|
2
|
+
import { TeamPlanApiResponse } from '../../../../types/team-plan.js';
|
|
3
|
+
export declare function resolveContext(options?: Record<string, unknown>): {
|
|
4
|
+
environment: Environment;
|
|
5
|
+
tenant: string;
|
|
6
|
+
};
|
|
7
|
+
export declare function printJson(value: unknown): void;
|
|
8
|
+
export declare function fail(code: string, message: string, json: boolean): never;
|
|
9
|
+
export declare function requireOption(value: unknown, optionName: string, json: boolean): string;
|
|
10
|
+
export declare function optionalString(value: unknown): string | undefined;
|
|
11
|
+
export declare function parseNumberOption(value: unknown, optionName: string, json: boolean): number;
|
|
12
|
+
export declare function parseIntegerOption(value: unknown, optionName: string, json: boolean): number;
|
|
13
|
+
export declare function optionalNumber(value: unknown): number | undefined;
|
|
14
|
+
export declare function optionalInteger(value: unknown): number | undefined;
|
|
15
|
+
export declare function printDryRun(data: unknown, json: boolean): void;
|
|
16
|
+
export declare function handleResponse(response: TeamPlanApiResponse, json: boolean, render: (data: unknown) => void): void;
|
|
17
|
+
export declare function printRows(data: unknown): void;
|
|
18
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/plans/helpers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAErE,wBAAgB,cAAc,CAAC,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG;IACrE,WAAW,EAAE,WAAW,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB,CAMA;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAE9C;AAED,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,KAAK,CAQxE;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,OAAO,EACd,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,OAAO,GACZ,MAAM,CAKR;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAKjE;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,EACd,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,OAAO,GACZ,MAAM,CAOR;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EACd,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,OAAO,GACZ,MAAM,CAOR;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAMjE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAMlE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAQ9D;AAED,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,mBAAmB,EAC7B,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,GAC9B,IAAI,CAaN;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAiB7C"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { configManager } from '../../../../core/config/manager.js';
|
|
3
|
+
export function resolveContext(options = {}) {
|
|
4
|
+
const context = configManager.getCurrentContext();
|
|
5
|
+
return {
|
|
6
|
+
environment: options.env || context.environment,
|
|
7
|
+
tenant: options.tenant || context.tenant,
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
export function printJson(value) {
|
|
11
|
+
console.log(JSON.stringify(value, null, 2));
|
|
12
|
+
}
|
|
13
|
+
export function fail(code, message, json) {
|
|
14
|
+
if (json) {
|
|
15
|
+
console.error(JSON.stringify({ success: false, error: { code, message } }, null, 2));
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
console.error(chalk.red(`\n✗ ${message}`));
|
|
19
|
+
console.error(chalk.gray(` Error code: ${code}\n`));
|
|
20
|
+
}
|
|
21
|
+
process.exit(1);
|
|
22
|
+
}
|
|
23
|
+
export function requireOption(value, optionName, json) {
|
|
24
|
+
if (value === undefined || value === null || String(value).trim() === '') {
|
|
25
|
+
fail('MISSING_OPTION', `Option ${optionName} is required`, json);
|
|
26
|
+
}
|
|
27
|
+
return String(value);
|
|
28
|
+
}
|
|
29
|
+
export function optionalString(value) {
|
|
30
|
+
if (value === undefined || value === null || String(value).trim() === '') {
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
return String(value);
|
|
34
|
+
}
|
|
35
|
+
export function parseNumberOption(value, optionName, json) {
|
|
36
|
+
const raw = requireOption(value, optionName, json);
|
|
37
|
+
const parsed = Number(raw);
|
|
38
|
+
if (!Number.isFinite(parsed)) {
|
|
39
|
+
fail('INVALID_NUMBER', `Option ${optionName} must be a number, got '${raw}'`, json);
|
|
40
|
+
}
|
|
41
|
+
return parsed;
|
|
42
|
+
}
|
|
43
|
+
export function parseIntegerOption(value, optionName, json) {
|
|
44
|
+
const raw = requireOption(value, optionName, json);
|
|
45
|
+
const parsed = Number.parseInt(raw, 10);
|
|
46
|
+
if (!Number.isInteger(parsed)) {
|
|
47
|
+
fail('INVALID_INTEGER', `Option ${optionName} must be an integer, got '${raw}'`, json);
|
|
48
|
+
}
|
|
49
|
+
return parsed;
|
|
50
|
+
}
|
|
51
|
+
export function optionalNumber(value) {
|
|
52
|
+
if (value === undefined || value === null || String(value).trim() === '') {
|
|
53
|
+
return undefined;
|
|
54
|
+
}
|
|
55
|
+
const parsed = Number(value);
|
|
56
|
+
return Number.isFinite(parsed) ? parsed : undefined;
|
|
57
|
+
}
|
|
58
|
+
export function optionalInteger(value) {
|
|
59
|
+
if (value === undefined || value === null || String(value).trim() === '') {
|
|
60
|
+
return undefined;
|
|
61
|
+
}
|
|
62
|
+
const parsed = Number.parseInt(String(value), 10);
|
|
63
|
+
return Number.isInteger(parsed) ? parsed : undefined;
|
|
64
|
+
}
|
|
65
|
+
export function printDryRun(data, json) {
|
|
66
|
+
if (json) {
|
|
67
|
+
printJson({ success: true, dryRun: true, data });
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
console.log(chalk.bold('\n🔍 Dry-Run Mode: No API call will be made\n'));
|
|
71
|
+
console.log(JSON.stringify(data, null, 2));
|
|
72
|
+
console.log();
|
|
73
|
+
}
|
|
74
|
+
export function handleResponse(response, json, render) {
|
|
75
|
+
if (!response.success) {
|
|
76
|
+
fail(response.error?.code || 'API_ERROR', response.error?.message || response.message || 'Unknown error', json);
|
|
77
|
+
}
|
|
78
|
+
if (json) {
|
|
79
|
+
printJson(response);
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
render(response.data);
|
|
83
|
+
}
|
|
84
|
+
export function printRows(data) {
|
|
85
|
+
const page = data;
|
|
86
|
+
const rows = page?.rows || [];
|
|
87
|
+
if (rows.length === 0) {
|
|
88
|
+
console.log(chalk.gray('\n No records found\n'));
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
for (const row of rows) {
|
|
92
|
+
console.log(` ${JSON.stringify(row)}`);
|
|
93
|
+
}
|
|
94
|
+
console.log(chalk.gray(`\n Total: ${page?.totalRows ?? rows.length} | Page: ${page?.pageNo ?? 1} | Size: ${page?.pageSize ?? rows.length}\n`));
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/plans/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/plans/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,wBAAgB,sBAAsB,IAAI,OAAO,CAiBhD"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { createTeamPlanListCommand } from './list.js';
|
|
3
|
+
import { createTeamPlanGetCommand } from './get.js';
|
|
4
|
+
import { createTeamPlanCreateCommand } from './create.js';
|
|
5
|
+
import { createTeamPlanUpdateCommand } from './update.js';
|
|
6
|
+
import { createTeamPlanDeleteCommand } from './delete.js';
|
|
7
|
+
import { createTeamPlanItemsCommand } from './items/index.js';
|
|
8
|
+
import { createTeamPlanGenerateCommand } from './generate.js';
|
|
9
|
+
import { createTeamPlanRollupCommand } from './rollup.js';
|
|
10
|
+
import { createTeamPlanExportCommand } from './export.js';
|
|
11
|
+
import { createTeamPlanScenariosCommand } from './scenarios/index.js';
|
|
12
|
+
import { createTeamPlanWeekCommand } from './week/index.js';
|
|
13
|
+
export function createTeamPlansCommand() {
|
|
14
|
+
const plans = new Command('plans');
|
|
15
|
+
plans.description('Manage team plans (WBS, capacity, scenarios, weekly sprints)');
|
|
16
|
+
plans.addCommand(createTeamPlanListCommand());
|
|
17
|
+
plans.addCommand(createTeamPlanGetCommand());
|
|
18
|
+
plans.addCommand(createTeamPlanCreateCommand());
|
|
19
|
+
plans.addCommand(createTeamPlanUpdateCommand());
|
|
20
|
+
plans.addCommand(createTeamPlanDeleteCommand());
|
|
21
|
+
plans.addCommand(createTeamPlanItemsCommand());
|
|
22
|
+
plans.addCommand(createTeamPlanGenerateCommand());
|
|
23
|
+
plans.addCommand(createTeamPlanRollupCommand());
|
|
24
|
+
plans.addCommand(createTeamPlanExportCommand());
|
|
25
|
+
plans.addCommand(createTeamPlanScenariosCommand());
|
|
26
|
+
plans.addCommand(createTeamPlanWeekCommand());
|
|
27
|
+
return plans;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/plans/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,6BAA6B,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,8BAA8B,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAE5D,MAAM,UAAU,sBAAsB;IACpC,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACnC,KAAK,CAAC,WAAW,CAAC,8DAA8D,CAAC,CAAC;IAElF,KAAK,CAAC,UAAU,CAAC,yBAAyB,EAAE,CAAC,CAAC;IAC9C,KAAK,CAAC,UAAU,CAAC,wBAAwB,EAAE,CAAC,CAAC;IAC7C,KAAK,CAAC,UAAU,CAAC,2BAA2B,EAAE,CAAC,CAAC;IAChD,KAAK,CAAC,UAAU,CAAC,2BAA2B,EAAE,CAAC,CAAC;IAChD,KAAK,CAAC,UAAU,CAAC,2BAA2B,EAAE,CAAC,CAAC;IAChD,KAAK,CAAC,UAAU,CAAC,0BAA0B,EAAE,CAAC,CAAC;IAC/C,KAAK,CAAC,UAAU,CAAC,6BAA6B,EAAE,CAAC,CAAC;IAClD,KAAK,CAAC,UAAU,CAAC,2BAA2B,EAAE,CAAC,CAAC;IAChD,KAAK,CAAC,UAAU,CAAC,2BAA2B,EAAE,CAAC,CAAC;IAChD,KAAK,CAAC,UAAU,CAAC,8BAA8B,EAAE,CAAC,CAAC;IACnD,KAAK,CAAC,UAAU,CAAC,yBAAyB,EAAE,CAAC,CAAC;IAE9C,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../../../../src/commands/liberica/teams/plans/items/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,wBAAgB,4BAA4B,IAAI,OAAO,CA0EtD"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { apiClient } from '../../../../../core/api/client.js';
|
|
4
|
+
import { handleResponse, optionalNumber, optionalString, parseNumberOption, printDryRun, requireOption, resolveContext, } from '../helpers.js';
|
|
5
|
+
export function createTeamPlanItemAddCommand() {
|
|
6
|
+
const command = new Command('add');
|
|
7
|
+
command.description('Add an item to a plan');
|
|
8
|
+
command.argument('<plan-id>', 'Plan ID');
|
|
9
|
+
command
|
|
10
|
+
.option('--phase-code <string>', 'Phase code')
|
|
11
|
+
.option('--batch-code <string>', 'Batch code')
|
|
12
|
+
.option('--week <string>', 'Week code')
|
|
13
|
+
.option('--issue-id <string>', 'Source issue ID')
|
|
14
|
+
.option('--issue-code <string>', 'Source issue code')
|
|
15
|
+
.option('--title <string>', 'Item title')
|
|
16
|
+
.option('--module-code <string>', 'Module code')
|
|
17
|
+
.option('--item-type <string>', 'Item type')
|
|
18
|
+
.option('--fp <number>', 'Function points')
|
|
19
|
+
.option('--person-days <number>', 'Person-days')
|
|
20
|
+
.option('--priority <string>', 'Priority')
|
|
21
|
+
.option('--owner-id <string>', 'Owner ID')
|
|
22
|
+
.option('--owner-name <string>', 'Owner name')
|
|
23
|
+
.option('--acceptor-id <string>', 'Acceptor ID')
|
|
24
|
+
.option('--acceptor-name <string>', 'Acceptor name')
|
|
25
|
+
.option('--plan-start-date <string>', 'Plan start date (yyyy-MM-dd)')
|
|
26
|
+
.option('--plan-end-date <string>', 'Plan end date (yyyy-MM-dd)')
|
|
27
|
+
.option('--dry-run', 'Print the request body without calling the API')
|
|
28
|
+
.option('--confirm', 'Confirm the write operation')
|
|
29
|
+
.option('--json', 'Output as JSON');
|
|
30
|
+
command.action(async (planId, options) => {
|
|
31
|
+
const { environment, tenant } = resolveContext(options);
|
|
32
|
+
const json = options.json === true;
|
|
33
|
+
const data = {
|
|
34
|
+
planId: requireOption(planId, '<plan-id>', json),
|
|
35
|
+
phaseCode: requireOption(options.phaseCode, '--phase-code', json),
|
|
36
|
+
itemTitle: requireOption(options.title, '--title', json),
|
|
37
|
+
fp: parseNumberOption(options.fp, '--fp', json),
|
|
38
|
+
};
|
|
39
|
+
const optionalFields = [
|
|
40
|
+
['batchCode', optionalString(options.batchCode)],
|
|
41
|
+
['weekCode', optionalString(options.week)],
|
|
42
|
+
['issueId', optionalString(options.issueId)],
|
|
43
|
+
['issueCode', optionalString(options.issueCode)],
|
|
44
|
+
['moduleCode', optionalString(options.moduleCode)],
|
|
45
|
+
['itemType', optionalString(options.itemType)],
|
|
46
|
+
['priority', optionalString(options.priority)],
|
|
47
|
+
['ownerId', optionalString(options.ownerId)],
|
|
48
|
+
['ownerName', optionalString(options.ownerName)],
|
|
49
|
+
['acceptorId', optionalString(options.acceptorId)],
|
|
50
|
+
['acceptorName', optionalString(options.acceptorName)],
|
|
51
|
+
['planStartDate', optionalString(options.planStartDate)],
|
|
52
|
+
['planEndDate', optionalString(options.planEndDate)],
|
|
53
|
+
];
|
|
54
|
+
for (const [key, value] of optionalFields) {
|
|
55
|
+
if (value !== undefined) {
|
|
56
|
+
data[key] = value;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
const personDays = optionalNumber(options.personDays);
|
|
60
|
+
if (personDays !== undefined)
|
|
61
|
+
data.personDays = personDays;
|
|
62
|
+
if (options.dryRun) {
|
|
63
|
+
printDryRun(data, json);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const response = await apiClient.addTeamPlanItem(environment, tenant, data);
|
|
67
|
+
handleResponse(response, json, () => {
|
|
68
|
+
console.log(chalk.green('\n✓ Team plan item added\n'));
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
return command;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=add.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../../../../../src/commands/liberica/teams/plans/items/add.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../../../../../src/commands/liberica/teams/plans/items/edit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,wBAAgB,6BAA6B,IAAI,OAAO,CAiFvD"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { apiClient } from '../../../../../core/api/client.js';
|
|
4
|
+
import { handleResponse, optionalInteger, optionalNumber, optionalString, printDryRun, requireOption, resolveContext, } from '../helpers.js';
|
|
5
|
+
export function createTeamPlanItemEditCommand() {
|
|
6
|
+
const command = new Command('edit');
|
|
7
|
+
command.description('Edit a plan item');
|
|
8
|
+
command.argument('<plan-id>', 'Plan ID');
|
|
9
|
+
command
|
|
10
|
+
.option('--item-id <string>', 'Plan item ID')
|
|
11
|
+
.option('--phase-code <string>', 'Phase code')
|
|
12
|
+
.option('--batch-code <string>', 'Batch code')
|
|
13
|
+
.option('--week <string>', 'Week code')
|
|
14
|
+
.option('--issue-id <string>', 'Source issue ID')
|
|
15
|
+
.option('--issue-code <string>', 'Source issue code')
|
|
16
|
+
.option('--title <string>', 'Item title')
|
|
17
|
+
.option('--module-code <string>', 'Module code')
|
|
18
|
+
.option('--item-type <string>', 'Item type')
|
|
19
|
+
.option('--fp <number>', 'Function points')
|
|
20
|
+
.option('--person-days <number>', 'Person-days')
|
|
21
|
+
.option('--priority <string>', 'Priority')
|
|
22
|
+
.option('--owner-id <string>', 'Owner ID')
|
|
23
|
+
.option('--owner-name <string>', 'Owner name')
|
|
24
|
+
.option('--acceptor-id <string>', 'Acceptor ID')
|
|
25
|
+
.option('--acceptor-name <string>', 'Acceptor name')
|
|
26
|
+
.option('--plan-start-date <string>', 'Plan start date (yyyy-MM-dd)')
|
|
27
|
+
.option('--plan-end-date <string>', 'Plan end date (yyyy-MM-dd)')
|
|
28
|
+
.option('--optimistic-lock <number>', 'Optimistic lock version')
|
|
29
|
+
.option('--dry-run', 'Print the request body without calling the API')
|
|
30
|
+
.option('--confirm', 'Confirm the write operation')
|
|
31
|
+
.option('--json', 'Output as JSON');
|
|
32
|
+
command.action(async (planId, options) => {
|
|
33
|
+
const { environment, tenant } = resolveContext(options);
|
|
34
|
+
const json = options.json === true;
|
|
35
|
+
const data = {
|
|
36
|
+
planId: requireOption(planId, '<plan-id>', json),
|
|
37
|
+
planItemId: requireOption(options.itemId, '--item-id', json),
|
|
38
|
+
};
|
|
39
|
+
const optionalFields = [
|
|
40
|
+
['phaseCode', optionalString(options.phaseCode)],
|
|
41
|
+
['batchCode', optionalString(options.batchCode)],
|
|
42
|
+
['weekCode', optionalString(options.week)],
|
|
43
|
+
['issueId', optionalString(options.issueId)],
|
|
44
|
+
['issueCode', optionalString(options.issueCode)],
|
|
45
|
+
['itemTitle', optionalString(options.title)],
|
|
46
|
+
['moduleCode', optionalString(options.moduleCode)],
|
|
47
|
+
['itemType', optionalString(options.itemType)],
|
|
48
|
+
['priority', optionalString(options.priority)],
|
|
49
|
+
['ownerId', optionalString(options.ownerId)],
|
|
50
|
+
['ownerName', optionalString(options.ownerName)],
|
|
51
|
+
['acceptorId', optionalString(options.acceptorId)],
|
|
52
|
+
['acceptorName', optionalString(options.acceptorName)],
|
|
53
|
+
['planStartDate', optionalString(options.planStartDate)],
|
|
54
|
+
['planEndDate', optionalString(options.planEndDate)],
|
|
55
|
+
];
|
|
56
|
+
for (const [key, value] of optionalFields) {
|
|
57
|
+
if (value !== undefined) {
|
|
58
|
+
data[key] = value;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
const fp = optionalNumber(options.fp);
|
|
62
|
+
if (fp !== undefined)
|
|
63
|
+
data.fp = fp;
|
|
64
|
+
const personDays = optionalNumber(options.personDays);
|
|
65
|
+
if (personDays !== undefined)
|
|
66
|
+
data.personDays = personDays;
|
|
67
|
+
const optimisticLock = optionalInteger(options.optimisticLock);
|
|
68
|
+
if (optimisticLock !== undefined)
|
|
69
|
+
data.optimisticLock = optimisticLock;
|
|
70
|
+
if (options.dryRun) {
|
|
71
|
+
printDryRun(data, json);
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
const response = await apiClient.editTeamPlanItem(environment, tenant, data);
|
|
75
|
+
handleResponse(response, json, () => {
|
|
76
|
+
console.log(chalk.green(`\n✓ Plan item ${data.planItemId} updated\n`));
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
return command;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=edit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../../../../../../src/commands/liberica/teams/plans/items/edit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../../../../../src/commands/liberica/teams/plans/items/import.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyDpC,wBAAgB,+BAA+B,IAAI,OAAO,CA6DzD"}
|