@newpeak/barista-cli 0.1.11 → 0.1.13
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/dict-types/get.d.ts.map +1 -1
- package/dist/commands/liberica/dict-types/get.js +9 -1
- package/dist/commands/liberica/dict-types/get.js.map +1 -1
- package/dist/commands/liberica/dict-types/index.d.ts.map +1 -1
- package/dist/commands/liberica/dict-types/index.js +2 -0
- package/dist/commands/liberica/dict-types/index.js.map +1 -1
- package/dist/commands/liberica/dict-types/list.d.ts.map +1 -1
- package/dist/commands/liberica/dict-types/list.js +19 -1
- package/dist/commands/liberica/dict-types/list.js.map +1 -1
- package/dist/commands/liberica/dict-types/tenant-items.d.ts +3 -0
- package/dist/commands/liberica/dict-types/tenant-items.d.ts.map +1 -0
- package/dist/commands/liberica/dict-types/tenant-items.js +275 -0
- package/dist/commands/liberica/dict-types/tenant-items.js.map +1 -0
- package/dist/commands/liberica/dicts/get.d.ts.map +1 -1
- package/dist/commands/liberica/dicts/get.js +9 -1
- package/dist/commands/liberica/dicts/get.js.map +1 -1
- package/dist/commands/liberica/dicts/list.d.ts.map +1 -1
- package/dist/commands/liberica/dicts/list.js +9 -1
- package/dist/commands/liberica/dicts/list.js.map +1 -1
- package/dist/core/api/client.d.ts +7 -7
- package/dist/core/api/client.d.ts.map +1 -1
- package/dist/core/api/client.js +15 -12
- package/dist/core/api/client.js.map +1 -1
- package/dist/core/config/manager.d.ts.map +1 -1
- package/dist/core/config/manager.js +1 -0
- package/dist/core/config/manager.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/types/dict.d.ts +2 -0
- package/dist/types/dict.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/package.json +7 -3
- package/docs/ARCHITECTURE.md +0 -184
- package/docs/COMMANDS.md +0 -352
- package/docs/COMMAND_DESIGN_SPEC.md +0 -840
- package/docs/INTEGRATION_NOTES.md +0 -270
- package/docs/commands/REFERENCE.md +0 -323
- package/docs/commands/arabica/auth/index.md +0 -296
- package/docs/commands/liberica/auth/index.md +0 -133
- package/docs/commands/liberica/calendar/DESIGN.md +0 -333
- package/docs/commands/liberica/client-contacts/create.md +0 -152
- package/docs/commands/liberica/client-contacts/delete.md +0 -123
- package/docs/commands/liberica/client-contacts/get.md +0 -133
- package/docs/commands/liberica/client-contacts/list.md +0 -143
- package/docs/commands/liberica/client-contacts/update.md +0 -158
- package/docs/commands/liberica/context/index.md +0 -60
- package/docs/commands/liberica/currency/create.md +0 -145
- package/docs/commands/liberica/currency/delete.md +0 -121
- package/docs/commands/liberica/currency/disable.md +0 -119
- package/docs/commands/liberica/currency/enable.md +0 -115
- package/docs/commands/liberica/currency/get.md +0 -118
- package/docs/commands/liberica/currency/list.md +0 -149
- package/docs/commands/liberica/currency/update.md +0 -141
- package/docs/commands/liberica/employees/create.md +0 -185
- package/docs/commands/liberica/employees/disable.md +0 -138
- package/docs/commands/liberica/employees/enable.md +0 -137
- package/docs/commands/liberica/employees/get.md +0 -153
- package/docs/commands/liberica/employees/list.md +0 -168
- package/docs/commands/liberica/employees/update.md +0 -180
- package/docs/commands/liberica/locations/create.md +0 -195
- package/docs/commands/liberica/locations/list.md +0 -171
- package/docs/commands/liberica/materials/create.md +0 -293
- package/docs/commands/liberica/materials/delete.md +0 -240
- package/docs/commands/liberica/materials/disable.md +0 -150
- package/docs/commands/liberica/materials/enable.md +0 -146
- package/docs/commands/liberica/materials/get.md +0 -188
- package/docs/commands/liberica/materials/list.md +0 -198
- package/docs/commands/liberica/materials/update.md +0 -250
- package/docs/commands/liberica/orgs/list.md +0 -62
- package/docs/commands/liberica/positions/list.md +0 -61
- package/docs/commands/liberica/roles/list.md +0 -67
- package/docs/commands/liberica/stock/ledger.md +0 -209
- package/docs/commands/liberica/stock/list.md +0 -165
- package/docs/commands/liberica/supplier-contacts/create.md +0 -152
- package/docs/commands/liberica/supplier-contacts/delete.md +0 -123
- package/docs/commands/liberica/supplier-contacts/get.md +0 -133
- package/docs/commands/liberica/supplier-contacts/list.md +0 -143
- package/docs/commands/liberica/supplier-contacts/update.md +0 -158
- package/docs/commands/liberica/teams/issues/close.md +0 -161
- package/docs/commands/liberica/teams/issues/create.md +0 -212
- package/docs/commands/liberica/teams/issues/delete.md +0 -179
- package/docs/commands/liberica/teams/issues/get.md +0 -167
- package/docs/commands/liberica/teams/issues/list.md +0 -182
- package/docs/commands/liberica/teams/issues/tests-design.md +0 -341
- package/docs/commands/liberica/teams/issues/update.md +0 -202
- package/docs/commands/liberica/teams/projects/create.md +0 -174
- package/docs/commands/liberica/teams/projects/delete.md +0 -180
- package/docs/commands/liberica/teams/projects/get.md +0 -150
- package/docs/commands/liberica/teams/projects/list.md +0 -179
- package/docs/commands/liberica/teams/projects/update.md +0 -175
- package/docs/commands/liberica/teams/tasks/create.md +0 -163
- package/docs/commands/liberica/teams/tasks/delete.md +0 -109
- package/docs/commands/liberica/teams/tasks/get.md +0 -121
- package/docs/commands/liberica/teams/tasks/list.md +0 -148
- package/docs/commands/liberica/teams/tasks/update.md +0 -158
- package/docs/commands/liberica/teams/work-logs/create.md +0 -151
- package/docs/commands/liberica/teams/work-logs/delete.md +0 -130
- package/docs/commands/liberica/teams/work-logs/get.md +0 -131
- package/docs/commands/liberica/teams/work-logs/list.md +0 -153
- package/docs/commands/liberica/teams/work-logs/update.md +0 -150
- package/docs/commands/liberica/transfer-in-forms/batch-delete.md +0 -157
- package/docs/commands/liberica/transfer-in-forms/batch-review.md +0 -157
- package/docs/commands/liberica/transfer-in-forms/batch-unreview.md +0 -157
- package/docs/commands/liberica/transfer-in-forms/create.md +0 -220
- package/docs/commands/liberica/transfer-in-forms/get.md +0 -221
- package/docs/commands/liberica/transfer-in-forms/list.md +0 -242
- package/docs/commands/liberica/transfer-in-forms/update.md +0 -185
- package/docs/commands/liberica/transfer-out-forms/batch-delete.md +0 -187
- package/docs/commands/liberica/transfer-out-forms/batch-review.md +0 -157
- package/docs/commands/liberica/transfer-out-forms/batch-unreview.md +0 -157
- package/docs/commands/liberica/transfer-out-forms/create.md +0 -280
- package/docs/commands/liberica/transfer-out-forms/get.md +0 -211
- package/docs/commands/liberica/transfer-out-forms/list.md +0 -233
- package/docs/commands/liberica/transfer-out-forms/update.md +0 -286
- package/docs/commands/liberica/uoms/create.md +0 -136
- package/docs/commands/liberica/uoms/delete.md +0 -119
- package/docs/commands/liberica/uoms/disable.md +0 -117
- package/docs/commands/liberica/uoms/enable.md +0 -115
- package/docs/commands/liberica/uoms/get.md +0 -119
- package/docs/commands/liberica/uoms/list.md +0 -155
- package/docs/commands/liberica/uoms/update.md +0 -148
- package/docs/commands/liberica/users/create.md +0 -170
- package/docs/commands/liberica/users/get.md +0 -151
- package/docs/commands/liberica/users/list.md +0 -175
- package/docs/commands/liberica/warehouses/create.md +0 -222
- package/docs/commands/liberica/warehouses/list.md +0 -184
- package/src/commands/arabica/auth/index.ts +0 -277
- package/src/commands/arabica/auth/login.ts +0 -5
- package/src/commands/arabica/auth/logout.ts +0 -5
- package/src/commands/arabica/auth/register.ts +0 -5
- package/src/commands/arabica/auth/status.ts +0 -5
- package/src/commands/arabica/index.ts +0 -23
- package/src/commands/auth.ts +0 -107
- package/src/commands/context.ts +0 -60
- package/src/commands/liberica/auth/index.ts +0 -176
- package/src/commands/liberica/calendar/index.ts +0 -13
- package/src/commands/liberica/calendar/list.ts +0 -214
- package/src/commands/liberica/calendar/set.ts +0 -130
- package/src/commands/liberica/client-contacts/create.ts +0 -115
- package/src/commands/liberica/client-contacts/delete.ts +0 -140
- package/src/commands/liberica/client-contacts/get.ts +0 -103
- package/src/commands/liberica/client-contacts/index.ts +0 -19
- package/src/commands/liberica/client-contacts/list.ts +0 -118
- package/src/commands/liberica/client-contacts/update.ts +0 -137
- package/src/commands/liberica/clients/create.ts +0 -122
- package/src/commands/liberica/clients/delete.ts +0 -125
- package/src/commands/liberica/clients/get.ts +0 -88
- package/src/commands/liberica/clients/index.ts +0 -19
- package/src/commands/liberica/clients/list.ts +0 -123
- package/src/commands/liberica/clients/update.ts +0 -103
- package/src/commands/liberica/context/index.ts +0 -43
- package/src/commands/liberica/currency/create.ts +0 -183
- package/src/commands/liberica/currency/delete.ts +0 -124
- package/src/commands/liberica/currency/disable.ts +0 -147
- package/src/commands/liberica/currency/enable.ts +0 -128
- package/src/commands/liberica/currency/get.ts +0 -91
- package/src/commands/liberica/currency/index.ts +0 -23
- package/src/commands/liberica/currency/list.ts +0 -140
- package/src/commands/liberica/currency/update.ts +0 -129
- package/src/commands/liberica/dict-types/get.ts +0 -74
- package/src/commands/liberica/dict-types/index.ts +0 -15
- package/src/commands/liberica/dict-types/list.ts +0 -118
- package/src/commands/liberica/dict-types/update.ts +0 -134
- package/src/commands/liberica/dicts/create.ts +0 -175
- package/src/commands/liberica/dicts/delete.ts +0 -107
- package/src/commands/liberica/dicts/get.ts +0 -80
- package/src/commands/liberica/dicts/index.ts +0 -19
- package/src/commands/liberica/dicts/list.ts +0 -114
- package/src/commands/liberica/dicts/update.ts +0 -116
- package/src/commands/liberica/employees/create.ts +0 -275
- package/src/commands/liberica/employees/delete.ts +0 -122
- package/src/commands/liberica/employees/disable.ts +0 -97
- package/src/commands/liberica/employees/enable.ts +0 -97
- package/src/commands/liberica/employees/get.ts +0 -115
- package/src/commands/liberica/employees/index.ts +0 -23
- package/src/commands/liberica/employees/list.ts +0 -131
- package/src/commands/liberica/employees/update.ts +0 -157
- package/src/commands/liberica/index.ts +0 -81
- package/src/commands/liberica/materials/create.ts +0 -199
- package/src/commands/liberica/materials/delete.ts +0 -105
- package/src/commands/liberica/materials/disable.ts +0 -148
- package/src/commands/liberica/materials/enable.ts +0 -129
- package/src/commands/liberica/materials/get.ts +0 -83
- package/src/commands/liberica/materials/index.ts +0 -23
- package/src/commands/liberica/materials/list.ts +0 -142
- package/src/commands/liberica/materials/update.ts +0 -125
- package/src/commands/liberica/mould/get.ts +0 -111
- package/src/commands/liberica/mould/index.ts +0 -17
- package/src/commands/liberica/mould/list.ts +0 -157
- package/src/commands/liberica/mould/set-status.ts +0 -99
- package/src/commands/liberica/mould/stock-in.ts +0 -165
- package/src/commands/liberica/operations/active.ts +0 -153
- package/src/commands/liberica/operations/batch-delete.ts +0 -131
- package/src/commands/liberica/operations/copy.ts +0 -138
- package/src/commands/liberica/operations/create.ts +0 -223
- package/src/commands/liberica/operations/deactive.ts +0 -152
- package/src/commands/liberica/operations/delete.ts +0 -128
- package/src/commands/liberica/operations/design.md +0 -587
- package/src/commands/liberica/operations/get.ts +0 -112
- package/src/commands/liberica/operations/index.ts +0 -27
- package/src/commands/liberica/operations/list.ts +0 -180
- package/src/commands/liberica/operations/update.ts +0 -218
- package/src/commands/liberica/orgs/index.ts +0 -34
- package/src/commands/liberica/positions/index.ts +0 -30
- package/src/commands/liberica/roles/index.ts +0 -59
- package/src/commands/liberica/stock/index.ts +0 -13
- package/src/commands/liberica/stock/ledger.ts +0 -159
- package/src/commands/liberica/stock/list.ts +0 -128
- package/src/commands/liberica/supplier-contacts/create.ts +0 -120
- package/src/commands/liberica/supplier-contacts/delete.ts +0 -88
- package/src/commands/liberica/supplier-contacts/get.ts +0 -94
- package/src/commands/liberica/supplier-contacts/index.ts +0 -19
- package/src/commands/liberica/supplier-contacts/list.ts +0 -130
- package/src/commands/liberica/supplier-contacts/update.ts +0 -127
- package/src/commands/liberica/suppliers/create.ts +0 -149
- package/src/commands/liberica/suppliers/delete.ts +0 -102
- package/src/commands/liberica/suppliers/disable.ts +0 -145
- package/src/commands/liberica/suppliers/enable.ts +0 -126
- package/src/commands/liberica/suppliers/get.ts +0 -86
- package/src/commands/liberica/suppliers/index.ts +0 -23
- package/src/commands/liberica/suppliers/list.ts +0 -134
- package/src/commands/liberica/suppliers/update.ts +0 -128
- package/src/commands/liberica/teams/index.ts +0 -17
- package/src/commands/liberica/teams/issues/close.ts +0 -104
- package/src/commands/liberica/teams/issues/create.ts +0 -254
- package/src/commands/liberica/teams/issues/delete.ts +0 -58
- package/src/commands/liberica/teams/issues/get.ts +0 -78
- package/src/commands/liberica/teams/issues/index.ts +0 -21
- package/src/commands/liberica/teams/issues/list.ts +0 -144
- package/src/commands/liberica/teams/issues/update.ts +0 -141
- package/src/commands/liberica/teams/projects/create.ts +0 -159
- package/src/commands/liberica/teams/projects/delete.ts +0 -58
- package/src/commands/liberica/teams/projects/get.ts +0 -87
- package/src/commands/liberica/teams/projects/index.ts +0 -19
- package/src/commands/liberica/teams/projects/list.ts +0 -147
- package/src/commands/liberica/teams/projects/update.ts +0 -117
- package/src/commands/liberica/teams/tasks/create.ts +0 -102
- package/src/commands/liberica/teams/tasks/delete.ts +0 -92
- package/src/commands/liberica/teams/tasks/get.ts +0 -64
- package/src/commands/liberica/teams/tasks/index.ts +0 -19
- package/src/commands/liberica/teams/tasks/list.ts +0 -102
- package/src/commands/liberica/teams/tasks/update.ts +0 -122
- package/src/commands/liberica/teams/work-logs/create.ts +0 -204
- package/src/commands/liberica/teams/work-logs/delete.ts +0 -58
- package/src/commands/liberica/teams/work-logs/get.ts +0 -87
- package/src/commands/liberica/teams/work-logs/index.ts +0 -19
- package/src/commands/liberica/teams/work-logs/list.ts +0 -141
- package/src/commands/liberica/teams/work-logs/update.ts +0 -120
- package/src/commands/liberica/transfer-in-forms/batch-delete.ts +0 -152
- package/src/commands/liberica/transfer-in-forms/batch-review.ts +0 -151
- package/src/commands/liberica/transfer-in-forms/batch-unreview.ts +0 -152
- package/src/commands/liberica/transfer-in-forms/create.ts +0 -179
- package/src/commands/liberica/transfer-in-forms/get.ts +0 -107
- package/src/commands/liberica/transfer-in-forms/index.ts +0 -23
- package/src/commands/liberica/transfer-in-forms/list.ts +0 -97
- package/src/commands/liberica/transfer-in-forms/update.ts +0 -213
- package/src/commands/liberica/transfer-out-forms/batch-delete.ts +0 -83
- package/src/commands/liberica/transfer-out-forms/batch-review.ts +0 -148
- package/src/commands/liberica/transfer-out-forms/batch-unreview.ts +0 -56
- package/src/commands/liberica/transfer-out-forms/create.ts +0 -194
- package/src/commands/liberica/transfer-out-forms/get.ts +0 -114
- package/src/commands/liberica/transfer-out-forms/index.ts +0 -23
- package/src/commands/liberica/transfer-out-forms/list.ts +0 -125
- package/src/commands/liberica/transfer-out-forms/update.ts +0 -197
- package/src/commands/liberica/uoms/create.ts +0 -134
- package/src/commands/liberica/uoms/delete.ts +0 -105
- package/src/commands/liberica/uoms/disable.ts +0 -148
- package/src/commands/liberica/uoms/enable.ts +0 -129
- package/src/commands/liberica/uoms/get.ts +0 -83
- package/src/commands/liberica/uoms/index.ts +0 -23
- package/src/commands/liberica/uoms/list.ts +0 -129
- package/src/commands/liberica/uoms/update.ts +0 -124
- package/src/commands/liberica/users/create.ts +0 -133
- package/src/commands/liberica/users/delete.ts +0 -49
- package/src/commands/liberica/users/disable.ts +0 -41
- package/src/commands/liberica/users/enable.ts +0 -30
- package/src/commands/liberica/users/get.ts +0 -46
- package/src/commands/liberica/users/index.ts +0 -27
- package/src/commands/liberica/users/list.ts +0 -68
- package/src/commands/liberica/users/me.ts +0 -42
- package/src/commands/liberica/users/reset-password.ts +0 -42
- package/src/commands/liberica/users/update.ts +0 -48
- package/src/commands/liberica/warehouses/create.ts +0 -204
- package/src/commands/liberica/warehouses/delete.ts +0 -112
- package/src/commands/liberica/warehouses/disable.ts +0 -174
- package/src/commands/liberica/warehouses/enable.ts +0 -174
- package/src/commands/liberica/warehouses/get.ts +0 -101
- package/src/commands/liberica/warehouses/index.ts +0 -25
- package/src/commands/liberica/warehouses/list.ts +0 -136
- package/src/commands/liberica/warehouses/locations/create.ts +0 -209
- package/src/commands/liberica/warehouses/locations/delete.ts +0 -116
- package/src/commands/liberica/warehouses/locations/disable.ts +0 -174
- package/src/commands/liberica/warehouses/locations/enable.ts +0 -174
- package/src/commands/liberica/warehouses/locations/get.ts +0 -84
- package/src/commands/liberica/warehouses/locations/index.ts +0 -23
- package/src/commands/liberica/warehouses/locations/list.ts +0 -140
- package/src/commands/liberica/warehouses/locations/update.ts +0 -135
- package/src/commands/liberica/warehouses/update.ts +0 -142
- package/src/core/api/client.ts +0 -4443
- package/src/core/auth/token-manager.ts +0 -183
- package/src/core/config/manager.ts +0 -164
- package/src/index.ts +0 -35
- package/src/types/calendar.ts +0 -36
- package/src/types/client-contact.ts +0 -78
- package/src/types/client.ts +0 -115
- package/src/types/currency.ts +0 -90
- package/src/types/dict.ts +0 -121
- package/src/types/employee.ts +0 -102
- package/src/types/index.ts +0 -93
- package/src/types/location.ts +0 -66
- package/src/types/material.ts +0 -61
- package/src/types/mould-stock-in.ts +0 -82
- package/src/types/mould.ts +0 -74
- package/src/types/operation.ts +0 -72
- package/src/types/org.ts +0 -25
- package/src/types/position.ts +0 -24
- package/src/types/stock.ts +0 -161
- package/src/types/supplier-contact.ts +0 -78
- package/src/types/supplier.ts +0 -66
- package/src/types/team-issue.ts +0 -94
- package/src/types/team-project.ts +0 -74
- package/src/types/team-task.ts +0 -98
- package/src/types/team-work-log.ts +0 -87
- package/src/types/transfer-in-form.ts +0 -265
- package/src/types/transfer-out-form.ts +0 -290
- package/src/types/uom.ts +0 -60
- package/src/types/user.ts +0 -64
- package/src/types/warehouse.ts +0 -82
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import chalk from 'chalk';
|
|
3
|
-
import inquirer from 'inquirer';
|
|
4
|
-
import { configManager } from '../../../core/config/manager.js';
|
|
5
|
-
import { apiClient } from '../../../core/api/client.js';
|
|
6
|
-
import { Environment } from '../../../types/index.js';
|
|
7
|
-
import { Supplier } from '../../../types/supplier.js';
|
|
8
|
-
|
|
9
|
-
export function createSupplierEnableCommand(): Command {
|
|
10
|
-
const enableCommand = new Command('enable');
|
|
11
|
-
enableCommand
|
|
12
|
-
.description('Enable (activate) a supplier')
|
|
13
|
-
.argument('<supplierId>', 'Supplier ID')
|
|
14
|
-
.option('--json', 'Output as JSON')
|
|
15
|
-
.action(async (supplierId: string, options: Record<string, unknown>) => {
|
|
16
|
-
const context = configManager.getCurrentContext();
|
|
17
|
-
const environment = context.environment as Environment;
|
|
18
|
-
const tenant = context.tenant;
|
|
19
|
-
const jsonOutput = options.json === true;
|
|
20
|
-
|
|
21
|
-
if (!supplierId || supplierId.trim() === '') {
|
|
22
|
-
const errMsg = 'Invalid supplier ID';
|
|
23
|
-
if (jsonOutput) {
|
|
24
|
-
console.log(JSON.stringify({ success: false, error: { code: 'INVALID_ID', message: errMsg } }));
|
|
25
|
-
} else {
|
|
26
|
-
console.error(chalk.red(`\n✗ ${errMsg}\n`));
|
|
27
|
-
}
|
|
28
|
-
process.exit(1);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
if (!jsonOutput) {
|
|
32
|
-
console.log(chalk.bold(`\n✓ Enable Supplier (${environment})\n`));
|
|
33
|
-
console.log(chalk.gray(` Supplier ID: ${supplierId}`));
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
// Get supplier details for confirmation
|
|
37
|
-
let supplier: Supplier | undefined;
|
|
38
|
-
try {
|
|
39
|
-
const supplierResponse = await apiClient.getSupplier(environment, tenant, supplierId);
|
|
40
|
-
if (!supplierResponse.success || !supplierResponse.data || !('supplierId' in supplierResponse.data)) {
|
|
41
|
-
const errMsg = `Supplier not found: ${supplierId}`;
|
|
42
|
-
if (jsonOutput) {
|
|
43
|
-
console.log(JSON.stringify({ success: false, error: { code: 'NOT_FOUND', message: errMsg } }));
|
|
44
|
-
} else {
|
|
45
|
-
console.error(chalk.red(`\n✗ ${errMsg}\n`));
|
|
46
|
-
}
|
|
47
|
-
process.exit(1);
|
|
48
|
-
}
|
|
49
|
-
supplier = supplierResponse.data as Supplier;
|
|
50
|
-
} catch (error) {
|
|
51
|
-
const errMsg = error instanceof Error ? error.message : 'Unknown error';
|
|
52
|
-
if (jsonOutput) {
|
|
53
|
-
console.log(JSON.stringify({ success: false, error: { code: 'FETCH_ERROR', message: `Failed to fetch supplier: ${errMsg}` } }));
|
|
54
|
-
} else {
|
|
55
|
-
console.error(chalk.red(`\n✗ Failed to fetch supplier: ${errMsg}\n`));
|
|
56
|
-
}
|
|
57
|
-
process.exit(1);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
// Check if already enabled
|
|
61
|
-
if (supplier.statusFlag === 1) {
|
|
62
|
-
const errMsg = `Supplier "${supplier.supplierName}" is already enabled`;
|
|
63
|
-
if (jsonOutput) {
|
|
64
|
-
console.log(JSON.stringify({ success: false, error: { code: 'ALREADY_ENABLED', message: errMsg } }));
|
|
65
|
-
} else {
|
|
66
|
-
console.error(chalk.yellow(`\n⚠ ${errMsg}\n`));
|
|
67
|
-
}
|
|
68
|
-
process.exit(1);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
if (!jsonOutput) {
|
|
72
|
-
console.log(chalk.gray(` Name: ${supplier.supplierName}`));
|
|
73
|
-
console.log(chalk.gray(` Code: ${supplier.supplierCode}`));
|
|
74
|
-
|
|
75
|
-
const { confirm } = await inquirer.prompt([
|
|
76
|
-
{
|
|
77
|
-
type: 'confirm',
|
|
78
|
-
name: 'confirm',
|
|
79
|
-
message: `Enable supplier "${supplier.supplierName}"?`,
|
|
80
|
-
default: false,
|
|
81
|
-
},
|
|
82
|
-
]);
|
|
83
|
-
|
|
84
|
-
if (!confirm) {
|
|
85
|
-
console.log(chalk.gray('\n Operation cancelled.\n'));
|
|
86
|
-
process.exit(0);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
// Execute enable
|
|
91
|
-
try {
|
|
92
|
-
const response = await apiClient.enableSupplier(environment, tenant, supplierId);
|
|
93
|
-
|
|
94
|
-
if (response.success) {
|
|
95
|
-
if (jsonOutput) {
|
|
96
|
-
console.log(JSON.stringify({ success: true, supplierId, name: supplier?.supplierName }));
|
|
97
|
-
} else {
|
|
98
|
-
console.log(chalk.green(`\n✓ Supplier ${supplier?.supplierName || supplierId} enabled\n`));
|
|
99
|
-
}
|
|
100
|
-
} else {
|
|
101
|
-
const errorMsg = response.error?.message || 'Unknown error';
|
|
102
|
-
const errorCode = response.error?.code || 'ENABLE_ERROR';
|
|
103
|
-
if (jsonOutput) {
|
|
104
|
-
console.log(JSON.stringify({ success: false, error: { code: errorCode, message: errorMsg } }));
|
|
105
|
-
} else {
|
|
106
|
-
console.error(chalk.red(`\n✗ Failed to enable supplier: ${errorMsg}`));
|
|
107
|
-
if (response.error?.code) {
|
|
108
|
-
console.error(chalk.gray(` Error code: ${response.error.code}`));
|
|
109
|
-
}
|
|
110
|
-
console.error();
|
|
111
|
-
}
|
|
112
|
-
process.exit(1);
|
|
113
|
-
}
|
|
114
|
-
} catch (error) {
|
|
115
|
-
const errMsg = error instanceof Error ? error.message : 'Unknown error';
|
|
116
|
-
if (jsonOutput) {
|
|
117
|
-
console.log(JSON.stringify({ success: false, error: { code: 'ERROR', message: errMsg } }));
|
|
118
|
-
} else {
|
|
119
|
-
console.error(chalk.red(`\n✗ Error: ${errMsg}\n`));
|
|
120
|
-
}
|
|
121
|
-
process.exit(1);
|
|
122
|
-
}
|
|
123
|
-
});
|
|
124
|
-
|
|
125
|
-
return enableCommand;
|
|
126
|
-
}
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import chalk from 'chalk';
|
|
3
|
-
import { configManager } from '../../../core/config/manager.js';
|
|
4
|
-
import { apiClient } from '../../../core/api/client.js';
|
|
5
|
-
import { Environment } from '../../../types/index.js';
|
|
6
|
-
import { Supplier } from '../../../types/supplier.js';
|
|
7
|
-
|
|
8
|
-
export function createSupplierGetCommand(): Command {
|
|
9
|
-
const getCommand = new Command('get');
|
|
10
|
-
getCommand.description('Get supplier details by ID');
|
|
11
|
-
getCommand.arguments('<supplierId>');
|
|
12
|
-
getCommand.option('--json', 'Output as JSON');
|
|
13
|
-
|
|
14
|
-
getCommand.action(async (supplierId: string, options: Record<string, unknown>) => {
|
|
15
|
-
const context = configManager.getCurrentContext();
|
|
16
|
-
const environment = (options.env as Environment) || context.environment;
|
|
17
|
-
const tenant = (options.tenant as string) || context.tenant;
|
|
18
|
-
|
|
19
|
-
if (!supplierId) {
|
|
20
|
-
console.error(chalk.red('\n✗ Supplier ID is required\n'));
|
|
21
|
-
process.exit(1);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
if (!supplierId || supplierId.trim() === '') {
|
|
25
|
-
console.error(chalk.red('\n✗ Invalid supplier ID.\n'));
|
|
26
|
-
process.exit(1);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
try {
|
|
30
|
-
const response = await apiClient.getSupplier(environment, tenant, supplierId);
|
|
31
|
-
|
|
32
|
-
if (!response.success) {
|
|
33
|
-
const errorCode = response.error?.code || 'UNKNOWN_ERROR';
|
|
34
|
-
const errorMessage = response.error?.message || 'Unknown error';
|
|
35
|
-
|
|
36
|
-
// Handle "supplier not found" case
|
|
37
|
-
if (errorCode === '01001150001' || errorMessage.includes('不存在')) {
|
|
38
|
-
console.error(chalk.red(`\n✗ Supplier not found: ${supplierId}\n`));
|
|
39
|
-
} else {
|
|
40
|
-
console.error(chalk.red(`\n✗ Error: ${errorMessage} (${errorCode})\n`));
|
|
41
|
-
}
|
|
42
|
-
process.exit(1);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
const supplier = response.data as Supplier | null;
|
|
46
|
-
|
|
47
|
-
if (!supplier) {
|
|
48
|
-
console.error(chalk.red('\n✗ Supplier not found\n'));
|
|
49
|
-
process.exit(1);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
if (options.json) {
|
|
53
|
-
console.log(JSON.stringify({
|
|
54
|
-
success: true,
|
|
55
|
-
data: supplier,
|
|
56
|
-
}, null, 2));
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
// Table output
|
|
61
|
-
console.log(chalk.bold('\n🏢 Supplier Details\n'));
|
|
62
|
-
console.log(` ${chalk.gray('ID:')} ${supplier.supplierId}`);
|
|
63
|
-
console.log(` ${chalk.gray('Code:')} ${supplier.supplierCode}`);
|
|
64
|
-
console.log(` ${chalk.gray('Name:')} ${supplier.supplierName}`);
|
|
65
|
-
if (supplier.supplierType) {
|
|
66
|
-
console.log(` ${chalk.gray('Type:')} ${supplier.supplierType}`);
|
|
67
|
-
}
|
|
68
|
-
console.log(` ${chalk.gray('Status:')} ${supplier.statusFlag === 1 ? 'Enable' : 'Disable'}`);
|
|
69
|
-
if (supplier.contactPerson) {
|
|
70
|
-
console.log(` ${chalk.gray('Contact:')} ${supplier.contactPerson}`);
|
|
71
|
-
}
|
|
72
|
-
if (supplier.contactPhone) {
|
|
73
|
-
console.log(` ${chalk.gray('Phone:')} ${supplier.contactPhone}`);
|
|
74
|
-
}
|
|
75
|
-
if (supplier.address) {
|
|
76
|
-
console.log(` ${chalk.gray('Address:')} ${supplier.address}`);
|
|
77
|
-
}
|
|
78
|
-
console.log();
|
|
79
|
-
} catch (error) {
|
|
80
|
-
console.error(chalk.red(`\n✗ Unexpected error: ${error instanceof Error ? error.message : 'Unknown error'}\n`));
|
|
81
|
-
process.exit(1);
|
|
82
|
-
}
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
return getCommand;
|
|
86
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import { createSupplierCreateCommand } from './create.js';
|
|
3
|
-
import { createSupplierListCommand } from './list.js';
|
|
4
|
-
import { createSupplierGetCommand } from './get.js';
|
|
5
|
-
import { createSupplierDisableCommand } from './disable.js';
|
|
6
|
-
import { createSupplierEnableCommand } from './enable.js';
|
|
7
|
-
import { createSupplierUpdateCommand } from './update.js';
|
|
8
|
-
import { createSupplierDeleteCommand } from './delete.js';
|
|
9
|
-
|
|
10
|
-
export function createSuppliersCommand(): Command {
|
|
11
|
-
const suppliersCommand = new Command('suppliers');
|
|
12
|
-
suppliersCommand.description('Manage suppliers');
|
|
13
|
-
|
|
14
|
-
suppliersCommand.addCommand(createSupplierCreateCommand());
|
|
15
|
-
suppliersCommand.addCommand(createSupplierListCommand());
|
|
16
|
-
suppliersCommand.addCommand(createSupplierGetCommand());
|
|
17
|
-
suppliersCommand.addCommand(createSupplierDisableCommand());
|
|
18
|
-
suppliersCommand.addCommand(createSupplierEnableCommand());
|
|
19
|
-
suppliersCommand.addCommand(createSupplierUpdateCommand());
|
|
20
|
-
suppliersCommand.addCommand(createSupplierDeleteCommand());
|
|
21
|
-
|
|
22
|
-
return suppliersCommand;
|
|
23
|
-
}
|
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import chalk from 'chalk';
|
|
3
|
-
import Table from 'cli-table3';
|
|
4
|
-
import { configManager } from '../../../core/config/manager.js';
|
|
5
|
-
import { apiClient } from '../../../core/api/client.js';
|
|
6
|
-
import { SupplierListResponse, StatusFlag } from '../../../types/supplier.js';
|
|
7
|
-
import { Environment } from '../../../types/index.js';
|
|
8
|
-
|
|
9
|
-
export function createSupplierListCommand(): Command {
|
|
10
|
-
const listCommand = new Command('list');
|
|
11
|
-
listCommand.description('List suppliers with pagination');
|
|
12
|
-
|
|
13
|
-
listCommand
|
|
14
|
-
.option('-p, --page <number>', 'Page number', '1')
|
|
15
|
-
.option('-s, --size <number>', 'Page size', '20')
|
|
16
|
-
.option('--status <number>', 'Status filter (1=enable, 2=disable)')
|
|
17
|
-
.option('--keyword <string>', 'Keyword search (supplierName and supplierCode)')
|
|
18
|
-
.option('--json', 'Output as JSON')
|
|
19
|
-
.action(async (options) => {
|
|
20
|
-
const context = configManager.getCurrentContext();
|
|
21
|
-
const environment = (options.env as Environment) || context.environment;
|
|
22
|
-
const tenant = options.tenant || context.tenant;
|
|
23
|
-
|
|
24
|
-
const page = parseInt(options.page as string, 10) - 1; // API uses 0-based pagination
|
|
25
|
-
const size = parseInt(options.size as string, 10);
|
|
26
|
-
|
|
27
|
-
const params: {
|
|
28
|
-
pageNo: number;
|
|
29
|
-
pageSize: number;
|
|
30
|
-
status?: StatusFlag;
|
|
31
|
-
supplierCode?: string;
|
|
32
|
-
supplierName?: string;
|
|
33
|
-
} = { pageNo: page, pageSize: size };
|
|
34
|
-
|
|
35
|
-
if (options.status !== undefined) {
|
|
36
|
-
const statusNum = parseInt(options.status as string, 10);
|
|
37
|
-
if (statusNum === 1 || statusNum === 2) {
|
|
38
|
-
params.status = statusNum as StatusFlag;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
// Keyword searches both supplierName and supplierCode
|
|
43
|
-
if (options.keyword !== undefined) {
|
|
44
|
-
const keyword = options.keyword as string;
|
|
45
|
-
params.supplierCode = keyword;
|
|
46
|
-
params.supplierName = keyword;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
const response = await apiClient.listSuppliers(environment, tenant, params);
|
|
50
|
-
|
|
51
|
-
if (!response.success) {
|
|
52
|
-
console.error(chalk.red(`\n✗ Failed to list suppliers: ${response.error?.message || 'Unknown error'}`));
|
|
53
|
-
if (response.error?.code) {
|
|
54
|
-
console.error(chalk.gray(` Error code: ${response.error.code}`));
|
|
55
|
-
}
|
|
56
|
-
console.error();
|
|
57
|
-
process.exit(1);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
const data = response.data as SupplierListResponse | null;
|
|
61
|
-
|
|
62
|
-
if (!data) {
|
|
63
|
-
if (options.json) {
|
|
64
|
-
console.log(JSON.stringify({ success: true, data: { items: [], pagination: { pageNo: 0, pageSize: 20, totalRows: 0 } } }, null, 2));
|
|
65
|
-
} else {
|
|
66
|
-
console.log(chalk.bold('\n📋 Supplier List\n'));
|
|
67
|
-
console.log(chalk.gray(' No suppliers found\n'));
|
|
68
|
-
}
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
if (options.json) {
|
|
73
|
-
console.log(
|
|
74
|
-
JSON.stringify(
|
|
75
|
-
{
|
|
76
|
-
success: true,
|
|
77
|
-
data: {
|
|
78
|
-
items: data.rows || [],
|
|
79
|
-
pagination: {
|
|
80
|
-
pageNo: data.pageNo,
|
|
81
|
-
pageSize: data.pageSize,
|
|
82
|
-
totalRows: data.totalRows,
|
|
83
|
-
},
|
|
84
|
-
},
|
|
85
|
-
},
|
|
86
|
-
null,
|
|
87
|
-
2
|
|
88
|
-
)
|
|
89
|
-
);
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
const records = data.rows || [];
|
|
94
|
-
|
|
95
|
-
if (records.length === 0) {
|
|
96
|
-
console.log(chalk.bold('\n📋 Supplier List\n'));
|
|
97
|
-
console.log(chalk.gray(' No suppliers found\n'));
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
console.log(chalk.bold('\n📋 Supplier List\n'));
|
|
102
|
-
|
|
103
|
-
const table = new Table({
|
|
104
|
-
head: [chalk.bold('ID'), chalk.bold('Code'), chalk.bold('Name'), chalk.bold('Type'), chalk.bold('Status')],
|
|
105
|
-
colWidths: [12, 15, 25, 15, 10],
|
|
106
|
-
style: {
|
|
107
|
-
head: [],
|
|
108
|
-
border: [],
|
|
109
|
-
},
|
|
110
|
-
});
|
|
111
|
-
|
|
112
|
-
for (const supplier of records) {
|
|
113
|
-
const statusText = supplier.statusFlag === 1 ? chalk.green('Enable') : chalk.red('Disable');
|
|
114
|
-
table.push([
|
|
115
|
-
supplier.supplierId,
|
|
116
|
-
supplier.supplierCode || '-',
|
|
117
|
-
supplier.supplierName || '-',
|
|
118
|
-
supplier.supplierType || '-',
|
|
119
|
-
statusText,
|
|
120
|
-
]);
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
console.log(table.toString());
|
|
124
|
-
console.log();
|
|
125
|
-
console.log(
|
|
126
|
-
chalk.gray(
|
|
127
|
-
` Total: ${data.totalRows} | Page: ${data.pageNo} / ${Math.ceil(data.totalRows / data.pageSize) || 1} | Size: ${data.pageSize}`
|
|
128
|
-
)
|
|
129
|
-
);
|
|
130
|
-
console.log();
|
|
131
|
-
});
|
|
132
|
-
|
|
133
|
-
return listCommand;
|
|
134
|
-
}
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import chalk from 'chalk';
|
|
3
|
-
import { configManager } from '../../../core/config/manager.js';
|
|
4
|
-
import { apiClient } from '../../../core/api/client.js';
|
|
5
|
-
import { Environment } from '../../../types/index.js';
|
|
6
|
-
import { Supplier, UpdateSupplierRequest } from '../../../types/supplier.js';
|
|
7
|
-
|
|
8
|
-
export function createSupplierUpdateCommand(): Command {
|
|
9
|
-
const updateCommand = new Command('update');
|
|
10
|
-
updateCommand
|
|
11
|
-
.description('Update supplier information')
|
|
12
|
-
.argument('<supplierId>', 'Supplier ID')
|
|
13
|
-
.option('-n, --name <name>', 'Supplier name')
|
|
14
|
-
.option('-t, --type <type>', 'Supplier type')
|
|
15
|
-
.option('--contact <contact>', 'Contact person')
|
|
16
|
-
.option('-p, --phone <phone>', 'Phone number')
|
|
17
|
-
.option('-a, --address <address>', 'Address')
|
|
18
|
-
.option('--dry-run', 'Preview changes without making API call')
|
|
19
|
-
.option('--json', 'Output result as JSON')
|
|
20
|
-
.action(async (supplierId: string, options: Record<string, unknown>) => {
|
|
21
|
-
const context = configManager.getCurrentContext();
|
|
22
|
-
const environment = context.environment as Environment;
|
|
23
|
-
const tenant = context.tenant;
|
|
24
|
-
|
|
25
|
-
const fields: Partial<UpdateSupplierRequest> = {};
|
|
26
|
-
if (options.name) fields.supplierName = options.name as string;
|
|
27
|
-
if (options.type) fields.supplierType = options.type as string;
|
|
28
|
-
if (options.contact) fields.contactPerson = options.contact as string;
|
|
29
|
-
if (options.phone) fields.contactPhone = options.phone as string;
|
|
30
|
-
if (options.address) fields.address = options.address as string;
|
|
31
|
-
|
|
32
|
-
const providedFields = Object.keys(fields).filter(
|
|
33
|
-
(k) => fields[k as keyof UpdateSupplierRequest] !== undefined
|
|
34
|
-
);
|
|
35
|
-
if (providedFields.length === 0) {
|
|
36
|
-
console.error(
|
|
37
|
-
chalk.red('\n✗ No fields to update. Provide at least one of: --name, --type, --contact, --phone, --address\n')
|
|
38
|
-
);
|
|
39
|
-
process.exit(1);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
if (options.phone && !/^\+?[\d\s\-()]+$/.test(options.phone as string)) {
|
|
43
|
-
console.error(chalk.red('\n✗ Invalid phone number format\n'));
|
|
44
|
-
process.exit(1);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
if (options.dryRun) {
|
|
48
|
-
console.log(chalk.bold(`\n🏭 Update Supplier — Dry Run (${environment})\n`));
|
|
49
|
-
console.log(chalk.gray(` Supplier ID: ${supplierId}`));
|
|
50
|
-
console.log(chalk.gray('\n Changes to be applied:'));
|
|
51
|
-
for (const field of providedFields) {
|
|
52
|
-
const label = field.replace(/([A-Z])/g, (m) => ` ${m.toLowerCase()}`).trim();
|
|
53
|
-
console.log(chalk.cyan(` ${label}: "${fields[field as keyof UpdateSupplierRequest]}"`));
|
|
54
|
-
}
|
|
55
|
-
console.log();
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
let currentSupplier: Supplier | undefined;
|
|
60
|
-
try {
|
|
61
|
-
const supplierResponse = await apiClient.getSupplier(environment, tenant, supplierId);
|
|
62
|
-
if (!supplierResponse.success || !supplierResponse.data) {
|
|
63
|
-
console.error(chalk.red(`\n✗ Supplier not found: ${supplierId}`));
|
|
64
|
-
if (supplierResponse.error?.message) {
|
|
65
|
-
console.error(chalk.gray(` ${supplierResponse.error.message}`));
|
|
66
|
-
}
|
|
67
|
-
if (supplierResponse.error?.code) {
|
|
68
|
-
console.error(chalk.gray(` Error code: ${supplierResponse.error.code}`));
|
|
69
|
-
}
|
|
70
|
-
console.error();
|
|
71
|
-
process.exit(1);
|
|
72
|
-
}
|
|
73
|
-
currentSupplier = supplierResponse.data as Supplier;
|
|
74
|
-
} catch (error) {
|
|
75
|
-
console.error(chalk.red(`\n✗ Failed to fetch supplier: ${error instanceof Error ? error.message : 'Unknown error'}\n`));
|
|
76
|
-
process.exit(1);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
console.log(chalk.bold(`\n🏭 Update Supplier (${environment})\n`));
|
|
80
|
-
console.log(chalk.gray(` Supplier ID: ${supplierId}`));
|
|
81
|
-
console.log(chalk.gray(` Current Name: ${currentSupplier.supplierName}`));
|
|
82
|
-
console.log(chalk.gray('\n Changes:'));
|
|
83
|
-
for (const field of providedFields) {
|
|
84
|
-
const label = field.replace(/([A-Z])/g, (m) => ` ${m.toLowerCase()}`).trim();
|
|
85
|
-
const currentVal = (currentSupplier as unknown as Record<string, unknown>)[field] ?? '(not set)';
|
|
86
|
-
const newVal = fields[field as keyof UpdateSupplierRequest];
|
|
87
|
-
console.log(chalk.cyan(` ${label}: "${currentVal}" → "${newVal}"`));
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
const updateData: UpdateSupplierRequest = { supplierId, ...fields };
|
|
91
|
-
try {
|
|
92
|
-
const response = await apiClient.updateSupplier(environment, tenant, updateData);
|
|
93
|
-
|
|
94
|
-
if (response.success) {
|
|
95
|
-
if (options.json) {
|
|
96
|
-
console.log(JSON.stringify({ success: true, data: response.data }, null, 2));
|
|
97
|
-
} else {
|
|
98
|
-
console.log(chalk.green(`\n✓ Supplier updated successfully\n`));
|
|
99
|
-
}
|
|
100
|
-
} else {
|
|
101
|
-
if (options.json) {
|
|
102
|
-
console.log(JSON.stringify({ success: false, error: response.error }, null, 2));
|
|
103
|
-
} else {
|
|
104
|
-
console.error(chalk.red(`\n✗ Update failed: ${response.error?.message || 'Unknown error'}`));
|
|
105
|
-
if (response.error?.code) {
|
|
106
|
-
console.error(chalk.gray(` Error code: ${response.error.code}`));
|
|
107
|
-
}
|
|
108
|
-
console.error();
|
|
109
|
-
}
|
|
110
|
-
process.exit(1);
|
|
111
|
-
}
|
|
112
|
-
} catch (error) {
|
|
113
|
-
if (options.json) {
|
|
114
|
-
console.log(
|
|
115
|
-
JSON.stringify({
|
|
116
|
-
success: false,
|
|
117
|
-
error: { message: error instanceof Error ? error.message : 'Unknown error' },
|
|
118
|
-
})
|
|
119
|
-
);
|
|
120
|
-
} else {
|
|
121
|
-
console.error(chalk.red(`\n✗ Error: ${error instanceof Error ? error.message : 'Unknown error'}\n`));
|
|
122
|
-
}
|
|
123
|
-
process.exit(1);
|
|
124
|
-
}
|
|
125
|
-
});
|
|
126
|
-
|
|
127
|
-
return updateCommand;
|
|
128
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import { createTeamIssuesCommand } from './issues/index.js';
|
|
3
|
-
import { createTeamProjectsCommand } from './projects/index.js';
|
|
4
|
-
import { createTeamTasksCommand } from './tasks/index.js';
|
|
5
|
-
import { createTeamWorkLogsCommand } from './work-logs/index.js';
|
|
6
|
-
|
|
7
|
-
export function createTeamsCommand(): Command {
|
|
8
|
-
const teamsCommand = new Command('teams');
|
|
9
|
-
teamsCommand.description('Manage teams and issues');
|
|
10
|
-
|
|
11
|
-
teamsCommand.addCommand(createTeamIssuesCommand());
|
|
12
|
-
teamsCommand.addCommand(createTeamProjectsCommand());
|
|
13
|
-
teamsCommand.addCommand(createTeamTasksCommand());
|
|
14
|
-
teamsCommand.addCommand(createTeamWorkLogsCommand());
|
|
15
|
-
|
|
16
|
-
return teamsCommand;
|
|
17
|
-
}
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import { Command, Option } from 'commander';
|
|
2
|
-
import chalk from 'chalk';
|
|
3
|
-
import { configManager } from '../../../../core/config/manager.js';
|
|
4
|
-
import { apiClient } from '../../../../core/api/client.js';
|
|
5
|
-
import { Environment } from '../../../../types/index.js';
|
|
6
|
-
import { UpdateTeamIssueRequest } from '../../../../types/team-issue.js';
|
|
7
|
-
|
|
8
|
-
export function createTeamIssueCloseCommand(): Command {
|
|
9
|
-
const closeCommand = new Command('close');
|
|
10
|
-
closeCommand
|
|
11
|
-
.description('Close a team issue (sets status to CLOSED)')
|
|
12
|
-
.argument('<issue-id>', 'Issue ID')
|
|
13
|
-
.addOption(new Option('--env <string>').hideHelp())
|
|
14
|
-
.addOption(new Option('--tenant <string>').hideHelp())
|
|
15
|
-
.option('--json', 'Output as JSON');
|
|
16
|
-
|
|
17
|
-
closeCommand.action(async (issueId: string, options: Record<string, unknown>) => {
|
|
18
|
-
const context = configManager.getCurrentContext();
|
|
19
|
-
const environment = context.environment as Environment;
|
|
20
|
-
const tenant = context.tenant;
|
|
21
|
-
|
|
22
|
-
if (!issueId || issueId.trim() === '') {
|
|
23
|
-
console.error(chalk.red('\n✗ Issue ID is required\n'));
|
|
24
|
-
process.exit(1);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
// Fetch the issue first to get all required fields
|
|
28
|
-
let existingIssue: Record<string, unknown> | null = null;
|
|
29
|
-
try {
|
|
30
|
-
const getResponse = await apiClient.getTeamIssue(environment, tenant, issueId);
|
|
31
|
-
if (!getResponse.success || !getResponse.data) {
|
|
32
|
-
if (options.json) {
|
|
33
|
-
console.log(JSON.stringify({ success: false, error: getResponse.error }, null, 2));
|
|
34
|
-
} else {
|
|
35
|
-
console.error(chalk.red(`\n✗ Issue not found: ${getResponse.error?.message || 'Unknown error'}\n`));
|
|
36
|
-
}
|
|
37
|
-
process.exit(1);
|
|
38
|
-
}
|
|
39
|
-
existingIssue = getResponse.data as unknown as Record<string, unknown>;
|
|
40
|
-
} catch (error) {
|
|
41
|
-
if (options.json) {
|
|
42
|
-
console.log(JSON.stringify({ success: false, error: { message: error instanceof Error ? error.message : 'Unknown error' } }, null, 2));
|
|
43
|
-
} else {
|
|
44
|
-
console.error(chalk.red(`\n✗ Error fetching issue: ${error instanceof Error ? error.message : 'Unknown error'}\n`));
|
|
45
|
-
}
|
|
46
|
-
process.exit(1);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
const request: UpdateTeamIssueRequest = {
|
|
50
|
-
teamIssueId: issueId,
|
|
51
|
-
issueTitle: existingIssue.issueTitle as string,
|
|
52
|
-
issueDesc: existingIssue.issueDesc as string,
|
|
53
|
-
issueType: existingIssue.issueType as 'BUG' | 'REQUIREMENT' | 'QUESTION',
|
|
54
|
-
projectId: existingIssue.projectId as string,
|
|
55
|
-
projectCode: existingIssue.projectCode as string,
|
|
56
|
-
projectName: existingIssue.projectName as string,
|
|
57
|
-
reporterName: existingIssue.reporterName as string,
|
|
58
|
-
reporterEmail: existingIssue.reporterEmail as string,
|
|
59
|
-
priority: existingIssue.priority as 'LOW' | 'MEDIUM' | 'HIGH' | 'URGENT',
|
|
60
|
-
teamIssueStatus: 'CLOSED',
|
|
61
|
-
assignTo: existingIssue.assignTo as string[],
|
|
62
|
-
tags: existingIssue.tags as string[] | undefined,
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
try {
|
|
66
|
-
const response = await apiClient.updateTeamIssue(environment, tenant, request);
|
|
67
|
-
|
|
68
|
-
if (response.success) {
|
|
69
|
-
if (options.json) {
|
|
70
|
-
console.log(JSON.stringify({ success: true, data: response.data }, null, 2));
|
|
71
|
-
} else {
|
|
72
|
-
console.log(chalk.green(`\n✓ Issue ${issueId} closed successfully\n`));
|
|
73
|
-
}
|
|
74
|
-
} else {
|
|
75
|
-
if (options.json) {
|
|
76
|
-
console.log(JSON.stringify({ success: false, error: response.error }, null, 2));
|
|
77
|
-
} else {
|
|
78
|
-
console.error(chalk.red(`\n✗ Close failed: ${response.error?.message || 'Unknown error'}`));
|
|
79
|
-
if (response.error?.code) {
|
|
80
|
-
console.error(chalk.gray(` Error code: ${response.error.code}`));
|
|
81
|
-
}
|
|
82
|
-
console.error();
|
|
83
|
-
}
|
|
84
|
-
process.exit(1);
|
|
85
|
-
}
|
|
86
|
-
} catch (error) {
|
|
87
|
-
if (options.json) {
|
|
88
|
-
console.log(
|
|
89
|
-
JSON.stringify({
|
|
90
|
-
success: false,
|
|
91
|
-
error: { message: error instanceof Error ? error.message : 'Unknown error' },
|
|
92
|
-
})
|
|
93
|
-
);
|
|
94
|
-
} else {
|
|
95
|
-
console.error(
|
|
96
|
-
chalk.red(`\n✗ Error: ${error instanceof Error ? error.message : 'Unknown error'}\n`)
|
|
97
|
-
);
|
|
98
|
-
}
|
|
99
|
-
process.exit(1);
|
|
100
|
-
}
|
|
101
|
-
});
|
|
102
|
-
|
|
103
|
-
return closeCommand;
|
|
104
|
-
}
|