@xbongbong/xbbcli 2.1.1 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -2
- package/ai-call-add-task.js +3 -15
- package/ai-word-list.js +3 -15
- package/bin/xbbcli.js +15 -2
- package/buyer-inquiry-detail.js +2 -14
- package/buyer-inquiry-list.js +2 -14
- package/clue-add-couser.js +2 -14
- package/clue-add.js +2 -14
- package/clue-back.js +2 -14
- package/clue-del.js +2 -14
- package/clue-delete-couser.js +2 -14
- package/clue-delete-mainuser.js +2 -14
- package/clue-detail.js +2 -14
- package/clue-distribution.js +2 -14
- package/clue-edit.js +2 -14
- package/clue-handover.js +3 -15
- package/clue-list.js +2 -14
- package/clue-thorough-delete.js +2 -14
- package/communicate-add.js +2 -14
- package/communicate-del.js +2 -14
- package/communicate-detail.js +2 -14
- package/communicate-edit.js +2 -14
- package/communicate-list.js +2 -14
- package/communicate-plan-add.js +2 -14
- package/communicate-plan-cancel.js +2 -14
- package/communicate-plan-del.js +2 -14
- package/communicate-plan-detail.js +2 -14
- package/communicate-plan-list.js +2 -14
- package/communicate-plan-single-operate.js +2 -14
- package/contact-add-couser.js +2 -14
- package/contact-add-mainuser.js +2 -14
- package/contact-add.js +2 -14
- package/contact-del.js +2 -14
- package/contact-delete-couser.js +2 -14
- package/contact-delete-mainuser.js +2 -14
- package/contact-detail.js +2 -14
- package/contact-edit.js +2 -14
- package/contact-handover.js +2 -14
- package/contact-list.js +2 -14
- package/contract-add-couser.js +2 -14
- package/contract-add-mainuser.js +2 -14
- package/contract-add.js +2 -14
- package/contract-del.js +2 -14
- package/contract-delete-couser.js +2 -14
- package/contract-delete-mainuser.js +2 -14
- package/contract-detail.js +2 -14
- package/contract-edit.js +2 -14
- package/contract-handover.js +2 -14
- package/contract-list.js +2 -14
- package/contract-outstock-add.js +2 -14
- package/contract-outstock-del.js +2 -14
- package/contract-outstock-detail.js +2 -14
- package/contract-outstock-edit.js +2 -14
- package/contract-outstock-list.js +2 -14
- package/customer-add-couser.js +2 -14
- package/customer-add.js +2 -14
- package/customer-back.js +2 -14
- package/customer-del.js +2 -14
- package/customer-delete-couser.js +2 -14
- package/customer-delete-mainuser.js +2 -14
- package/customer-detail.js +2 -14
- package/customer-distribution.js +2 -14
- package/customer-edit.js +2 -14
- package/customer-handover.js +2 -14
- package/customer-invoice-address-add.js +2 -14
- package/customer-invoice-address-edit.js +2 -14
- package/customer-invoice-address.js +2 -14
- package/customer-invoice-info-add.js +2 -14
- package/customer-invoice-info-edit.js +2 -14
- package/customer-invoice-info.js +2 -14
- package/customer-list.js +2 -14
- package/department-add.js +2 -14
- package/department-del.js +2 -14
- package/department-edit.js +2 -14
- package/department-list.js +2 -14
- package/form-data-add-couser.js +2 -14
- package/form-data-add-mainuser.js +2 -14
- package/form-data-add.js +2 -14
- package/form-data-del.js +2 -14
- package/form-data-delete-couser.js +2 -14
- package/form-data-delete-mainuser.js +2 -14
- package/form-data-detail.js +2 -14
- package/form-data-edit.js +2 -14
- package/form-data-handover.js +2 -14
- package/form-data-list.js +2 -14
- package/form-get.js +2 -14
- package/form-list.js +2 -14
- package/invoice-add.js +3 -15
- package/invoice-cancel.js +3 -15
- package/invoice-del.js +3 -15
- package/invoice-detail.js +3 -15
- package/invoice-edit.js +3 -15
- package/invoice-get-amount-detail.js +3 -15
- package/invoice-list.js +3 -15
- package/invoice-red.js +3 -15
- package/label-add.js +3 -15
- package/label-all-list.js +3 -15
- package/label-batch-add.js +3 -15
- package/label-batch-remove.js +3 -15
- package/label-del-completely.js +3 -15
- package/label-del.js +3 -15
- package/label-edit.js +3 -15
- package/label-group-add.js +3 -15
- package/label-group-del.js +3 -15
- package/label-group-list.js +3 -15
- package/label-group-update.js +3 -15
- package/label-list.js +3 -15
- package/label-reduction.js +3 -15
- package/label-repeat.js +3 -15
- package/market-activity-add.js +2 -14
- package/market-activity-del.js +2 -14
- package/market-activity-detail.js +2 -14
- package/market-activity-edit.js +2 -14
- package/market-activity-handover.js +2 -14
- package/market-activity-list.js +2 -14
- package/opportunity-add-couser.js +2 -14
- package/opportunity-add-mainuser.js +2 -14
- package/opportunity-add.js +2 -14
- package/opportunity-del.js +2 -14
- package/opportunity-delete-couser.js +2 -14
- package/opportunity-delete-mainuser.js +2 -14
- package/opportunity-detail.js +2 -14
- package/opportunity-edit.js +2 -14
- package/opportunity-handover.js +2 -14
- package/opportunity-list.js +2 -14
- package/package.json +1 -1
- package/pay-plan-add-couser.js +2 -14
- package/pay-plan-add-mainuser.js +2 -14
- package/pay-plan-add.js +2 -14
- package/pay-plan-delete-couser.js +2 -14
- package/pay-plan-delete-mainuser.js +2 -14
- package/pay-plan-handover.js +2 -14
- package/pay-sheet-add-bad.js +2 -14
- package/pay-sheet-add-couser.js +2 -14
- package/pay-sheet-add-mainuser.js +2 -14
- package/pay-sheet-add-red.js +2 -14
- package/pay-sheet-add-write-off.js +2 -14
- package/pay-sheet-del.js +2 -14
- package/pay-sheet-delete-couser.js +2 -14
- package/pay-sheet-delete-mainuser.js +2 -14
- package/pay-sheet-detail.js +2 -14
- package/pay-sheet-edit-bad.js +2 -14
- package/pay-sheet-edit-red.js +2 -14
- package/pay-sheet-edit-write-off.js +2 -14
- package/pay-sheet-get-amount-detail.js +2 -14
- package/pay-sheet-list.js +2 -14
- package/payment-add-couser.js +2 -14
- package/payment-add-mainuser.js +2 -14
- package/payment-add.js +2 -14
- package/payment-del.js +2 -14
- package/payment-delete-couser.js +2 -14
- package/payment-delete-mainuser.js +2 -14
- package/payment-detail.js +2 -14
- package/payment-edit.js +2 -14
- package/payment-handover.js +2 -14
- package/payment-list.js +2 -14
- package/payment-sheet-add-bad-debt.js +2 -14
- package/payment-sheet-add-pre.js +2 -14
- package/payment-sheet-add-red.js +2 -14
- package/payment-sheet-add-write-off.js +2 -14
- package/payment-sheet-del.js +2 -14
- package/payment-sheet-detail.js +2 -14
- package/payment-sheet-edit-bad-debt.js +2 -14
- package/payment-sheet-edit-red.js +2 -14
- package/payment-sheet-edit-write-off.js +2 -14
- package/payment-sheet-get-amount-detail.js +2 -14
- package/payment-sheet-handover.js +2 -14
- package/payment-sheet-list.js +2 -14
- package/product-add.js +2 -14
- package/product-category-add.js +2 -14
- package/product-category-del.js +2 -14
- package/product-category-list.js +2 -14
- package/product-category-update.js +2 -14
- package/product-del.js +2 -14
- package/product-detail.js +2 -14
- package/product-edit.js +2 -14
- package/product-list.js +2 -14
- package/product-online.js +2 -14
- package/quotation-add-couser.js +3 -15
- package/quotation-add-mainuser.js +3 -15
- package/quotation-add.js +3 -15
- package/quotation-del.js +3 -15
- package/quotation-delete-couser.js +3 -15
- package/quotation-delete-mainuser.js +3 -15
- package/quotation-detail.js +3 -15
- package/quotation-edit.js +3 -15
- package/quotation-handover.js +2 -14
- package/quotation-list.js +3 -15
- package/refund-add.js +2 -14
- package/refund-del.js +2 -14
- package/refund-detail.js +2 -14
- package/refund-edit.js +2 -14
- package/refund-list.js +2 -14
- package/role-list.js +2 -14
- package/sign-in-list.js +2 -14
- package/stage-get.js +2 -14
- package/stage-jump.js +2 -14
- package/supplier-add.js +2 -14
- package/token-del.js +5 -0
- package/token-generate.js +2 -14
- package/token-list.js +20 -2
- package/token-set.js +19 -3
- package/token-use.js +5 -0
- package/user-add.js +2 -14
- package/user-del.js +2 -14
- package/user-edit.js +2 -14
- package/user-handover.js +2 -14
- package/user-list.js +2 -14
- package/work-order-add.js +2 -14
- package/work-order-asset-add-couser.js +3 -15
- package/work-order-asset-add-mainuser.js +3 -15
- package/work-order-asset-add.js +3 -15
- package/work-order-asset-del-couser.js +3 -15
- package/work-order-asset-del-mainuser.js +3 -15
- package/work-order-asset-del.js +3 -15
- package/work-order-asset-detail.js +3 -15
- package/work-order-asset-edit.js +3 -15
- package/work-order-asset-handover.js +3 -15
- package/work-order-asset-list.js +3 -15
- package/work-order-del.js +2 -14
- package/work-order-detail.js +2 -14
- package/work-order-dynamic-list.js +2 -14
- package/work-order-edit.js +2 -14
- package/work-order-list.js +2 -14
- package/work-order-operate.js +2 -14
- package/work-order-template-detail.js +2 -14
- package/work-order-template-list.js +2 -14
- package/work-report-daily-add.js +2 -14
- package/work-report-daily-del.js +2 -14
- package/work-report-daily-detail.js +2 -14
- package/work-report-daily-edit.js +2 -14
- package/work-report-daily-get-work-plan.js +2 -14
- package/work-report-daily-list.js +2 -14
- package/work-report-monthly-add.js +2 -14
- package/work-report-monthly-del.js +2 -14
- package/work-report-monthly-detail.js +2 -14
- package/work-report-monthly-edit.js +2 -14
- package/work-report-monthly-list.js +2 -14
- package/work-report-weekly-add.js +2 -14
- package/work-report-weekly-del.js +2 -14
- package/work-report-weekly-detail.js +2 -14
- package/work-report-weekly-edit.js +2 -14
- package/work-report-weekly-list.js +2 -14
- package/work-task-add-couser.js +2 -14
- package/work-task-add.js +2 -14
- package/work-task-delete-couser.js +2 -14
- package/work-task-detail.js +2 -14
- package/work-task-edit.js +2 -14
- package/work-task-handover.js +2 -14
- package/workorder-add-couser.js +2 -14
- package/workorder-delete-couser.js +2 -14
- package/workorder-handover.js +2 -14
- package/workorderlist.js +2 -14
- package/workorderproductlist.js +2 -14
- package/worktimerecorddetail.js +2 -14
- package/worktimerecordlist.js +2 -14
- package/xbb-config.js +113 -0
- package/version.js +0 -18
package/role-list.js
CHANGED
|
@@ -3,6 +3,7 @@ import fs from 'node:fs';
|
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { cli, Strategy } from './xbb-registry.js';
|
|
6
|
+
import { readActiveConfig } from './xbb-config.js';
|
|
6
7
|
|
|
7
8
|
const CONFIG_FILE = path.join(os.homedir(), '.xbbcli', 'config.env');
|
|
8
9
|
const API_URL = 'https://proapi.xbongbong.com/pro/v2/api/role/list';
|
|
@@ -11,20 +12,7 @@ const MISSING_TOKEN_MESSAGE = '缺少 token;请先执行 xbbcli token-set --co
|
|
|
11
12
|
let lastPagination = null;
|
|
12
13
|
|
|
13
14
|
function readConfig() {
|
|
14
|
-
|
|
15
|
-
const parsed = JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf8'));
|
|
16
|
-
const companies = Array.isArray(parsed)
|
|
17
|
-
? parsed
|
|
18
|
-
: Array.isArray(parsed?.companies)
|
|
19
|
-
? parsed.companies
|
|
20
|
-
: null;
|
|
21
|
-
if (companies) {
|
|
22
|
-
return companies.find((item) => item && item.enable) || {};
|
|
23
|
-
}
|
|
24
|
-
return parsed || {};
|
|
25
|
-
} catch {
|
|
26
|
-
return {};
|
|
27
|
-
}
|
|
15
|
+
return readActiveConfig();
|
|
28
16
|
}
|
|
29
17
|
|
|
30
18
|
function getRuntimeConfig() {
|
package/sign-in-list.js
CHANGED
|
@@ -3,6 +3,7 @@ import fs from 'node:fs';
|
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { cli, Strategy } from './xbb-registry.js';
|
|
6
|
+
import { readActiveConfig } from './xbb-config.js';
|
|
6
7
|
|
|
7
8
|
const CONFIG_FILE = path.join(os.homedir(), '.xbbcli', 'config.env');
|
|
8
9
|
const API_URL = 'https://proapi.xbongbong.com/pro/v2/api/signIn/list';
|
|
@@ -11,20 +12,7 @@ const MISSING_TOKEN_MESSAGE = '缺少 token;请先执行 xbbcli token-set --co
|
|
|
11
12
|
let lastPagination = null;
|
|
12
13
|
|
|
13
14
|
function readConfig() {
|
|
14
|
-
|
|
15
|
-
const parsed = JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf8'));
|
|
16
|
-
const companies = Array.isArray(parsed)
|
|
17
|
-
? parsed
|
|
18
|
-
: Array.isArray(parsed?.companies)
|
|
19
|
-
? parsed.companies
|
|
20
|
-
: null;
|
|
21
|
-
if (companies) {
|
|
22
|
-
return companies.find((item) => item && item.enable) || {};
|
|
23
|
-
}
|
|
24
|
-
return parsed || {};
|
|
25
|
-
} catch {
|
|
26
|
-
return {};
|
|
27
|
-
}
|
|
15
|
+
return readActiveConfig();
|
|
28
16
|
}
|
|
29
17
|
|
|
30
18
|
function getRuntimeConfig() {
|
package/stage-get.js
CHANGED
|
@@ -3,6 +3,7 @@ import fs from 'node:fs';
|
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { cli, Strategy } from './xbb-registry.js';
|
|
6
|
+
import { readActiveConfig } from './xbb-config.js';
|
|
6
7
|
|
|
7
8
|
const CONFIG_FILE = path.join(os.homedir(), '.xbbcli', 'config.env');
|
|
8
9
|
const API_URL = 'https://proapi.xbongbong.com/pro/v2/api/stage/get';
|
|
@@ -10,20 +11,7 @@ const DEFAULT_BASE_URL = 'https://proapi.xbongbong.com';
|
|
|
10
11
|
const MISSING_TOKEN_MESSAGE = '缺少 token;请先执行 xbbcli token-set --corpid <CORPID> --token <TOKEN> --userId <USERID>';
|
|
11
12
|
|
|
12
13
|
function readConfig() {
|
|
13
|
-
|
|
14
|
-
const parsed = JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf8'));
|
|
15
|
-
const companies = Array.isArray(parsed)
|
|
16
|
-
? parsed
|
|
17
|
-
: Array.isArray(parsed?.companies)
|
|
18
|
-
? parsed.companies
|
|
19
|
-
: null;
|
|
20
|
-
if (companies) {
|
|
21
|
-
return companies.find((item) => item && item.enable) || {};
|
|
22
|
-
}
|
|
23
|
-
return parsed || {};
|
|
24
|
-
} catch {
|
|
25
|
-
return {};
|
|
26
|
-
}
|
|
14
|
+
return readActiveConfig();
|
|
27
15
|
}
|
|
28
16
|
|
|
29
17
|
function getRuntimeConfig() {
|
package/stage-jump.js
CHANGED
|
@@ -3,6 +3,7 @@ import fs from 'node:fs';
|
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { cli, Strategy } from './xbb-registry.js';
|
|
6
|
+
import { readActiveConfig } from './xbb-config.js';
|
|
6
7
|
|
|
7
8
|
const CONFIG_FILE = path.join(os.homedir(), '.xbbcli', 'config.env');
|
|
8
9
|
const API_URL = 'https://proapi.xbongbong.com/pro/v2/api/stage/jump';
|
|
@@ -10,20 +11,7 @@ const DEFAULT_BASE_URL = 'https://proapi.xbongbong.com';
|
|
|
10
11
|
const MISSING_TOKEN_MESSAGE = '缺少 token;请先执行 xbbcli token-set --corpid <CORPID> --token <TOKEN> --userId <USERID>';
|
|
11
12
|
|
|
12
13
|
function readConfig() {
|
|
13
|
-
|
|
14
|
-
const parsed = JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf8'));
|
|
15
|
-
const companies = Array.isArray(parsed)
|
|
16
|
-
? parsed
|
|
17
|
-
: Array.isArray(parsed?.companies)
|
|
18
|
-
? parsed.companies
|
|
19
|
-
: null;
|
|
20
|
-
if (companies) {
|
|
21
|
-
return companies.find((item) => item && item.enable) || {};
|
|
22
|
-
}
|
|
23
|
-
return parsed || {};
|
|
24
|
-
} catch {
|
|
25
|
-
return {};
|
|
26
|
-
}
|
|
14
|
+
return readActiveConfig();
|
|
27
15
|
}
|
|
28
16
|
|
|
29
17
|
function getRuntimeConfig() {
|
package/supplier-add.js
CHANGED
|
@@ -3,6 +3,7 @@ import os from 'node:os';
|
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import crypto from 'node:crypto';
|
|
5
5
|
import { cli, Strategy } from './xbb-registry.js';
|
|
6
|
+
import { readActiveConfig } from './xbb-config.js';
|
|
6
7
|
|
|
7
8
|
const CONFIG_DIR = path.join(os.homedir(), '.xbbcli');
|
|
8
9
|
const CONFIG_FILE = path.join(CONFIG_DIR, 'config.env');
|
|
@@ -10,20 +11,7 @@ const API_URL = 'https://proapi.xbongbong.com/pro/v2/api/supplier/add';
|
|
|
10
11
|
const DEFAULT_BASE_URL = 'https://proapi.xbongbong.com';
|
|
11
12
|
|
|
12
13
|
function readConfig() {
|
|
13
|
-
|
|
14
|
-
const parsed = JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf8'));
|
|
15
|
-
const companies = Array.isArray(parsed)
|
|
16
|
-
? parsed
|
|
17
|
-
: Array.isArray(parsed?.companies)
|
|
18
|
-
? parsed.companies
|
|
19
|
-
: null;
|
|
20
|
-
if (companies) {
|
|
21
|
-
return companies.find((item) => item && item.enable) || {};
|
|
22
|
-
}
|
|
23
|
-
return parsed || {};
|
|
24
|
-
} catch {
|
|
25
|
-
return {};
|
|
26
|
-
}
|
|
14
|
+
return readActiveConfig();
|
|
27
15
|
}
|
|
28
16
|
|
|
29
17
|
function getRuntimeConfig() {
|
package/token-del.js
CHANGED
|
@@ -2,6 +2,7 @@ import fs from 'node:fs';
|
|
|
2
2
|
import os from 'node:os';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { cli, Strategy } from './xbb-registry.js';
|
|
5
|
+
import { isEnvActive, isEnvOnly, getEnvVarNames } from './xbb-config.js';
|
|
5
6
|
|
|
6
7
|
const CONFIG_DIR = path.join(os.homedir(), '.xbbcli');
|
|
7
8
|
const CONFIG_FILE = path.join(CONFIG_DIR, 'config.env');
|
|
@@ -66,6 +67,10 @@ async function delCompany(kwargs) {
|
|
|
66
67
|
return createResult('error', '缺少 --corpid', '', '', '');
|
|
67
68
|
}
|
|
68
69
|
|
|
70
|
+
if (isEnvOnly() || isEnvActive()) {
|
|
71
|
+
return createResult('error', `当前为环境变量模式(${getEnvVarNames().join(', ')}),不支持删除公司配置;如需多公司请改用 config.env`, corpid, '', '');
|
|
72
|
+
}
|
|
73
|
+
|
|
69
74
|
const companies = readCompanies();
|
|
70
75
|
if (!companies.length) {
|
|
71
76
|
return createResult('error', '缺少本地配置;请先执行 xbbcli token-set --corpid <CORPID> --token <TOKEN> --userId <USERID>', corpid, '', 0);
|
package/token-generate.js
CHANGED
|
@@ -3,6 +3,7 @@ import fs from 'node:fs';
|
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { cli, Strategy } from './xbb-registry.js';
|
|
6
|
+
import { readActiveConfig } from './xbb-config.js';
|
|
6
7
|
|
|
7
8
|
const CONFIG_FILE = path.join(os.homedir(), '.xbbcli', 'config.env');
|
|
8
9
|
const API_URL = 'https://proapi.xbongbong.com/pro/v2/api/user/generateToken';
|
|
@@ -10,20 +11,7 @@ const DEFAULT_BASE_URL = 'https://proapi.xbongbong.com';
|
|
|
10
11
|
const MISSING_TOKEN_MESSAGE = '缺少 token;请先执行 xbbcli token-set --corpid <CORPID> --token <TOKEN> --userId <USERID>';
|
|
11
12
|
|
|
12
13
|
function readConfig() {
|
|
13
|
-
|
|
14
|
-
const parsed = JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf8'));
|
|
15
|
-
const companies = Array.isArray(parsed)
|
|
16
|
-
? parsed
|
|
17
|
-
: Array.isArray(parsed?.companies)
|
|
18
|
-
? parsed.companies
|
|
19
|
-
: null;
|
|
20
|
-
if (companies) {
|
|
21
|
-
return companies.find((item) => item && item.enable) || {};
|
|
22
|
-
}
|
|
23
|
-
return parsed || {};
|
|
24
|
-
} catch {
|
|
25
|
-
return {};
|
|
26
|
-
}
|
|
14
|
+
return readActiveConfig();
|
|
27
15
|
}
|
|
28
16
|
|
|
29
17
|
function resolveBaseUrl(corpid) {
|
package/token-list.js
CHANGED
|
@@ -2,6 +2,7 @@ import fs from 'node:fs';
|
|
|
2
2
|
import os from 'node:os';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { cli, Strategy } from './xbb-registry.js';
|
|
5
|
+
import { readEnvConfig, hasEnvConfig, isEnvOnly } from './xbb-config.js';
|
|
5
6
|
|
|
6
7
|
const CONFIG_DIR = path.join(os.homedir(), '.xbbcli');
|
|
7
8
|
const CONFIG_FILE = path.join(CONFIG_DIR, 'config.env');
|
|
@@ -50,7 +51,7 @@ function maskToken(token) {
|
|
|
50
51
|
return `${value.slice(0, 8)}****${value.slice(-4)}`;
|
|
51
52
|
}
|
|
52
53
|
function makeErrorRow(code, msg) {
|
|
53
|
-
return [{ enable: '', corpid: '', corpName: '', userName: '', userId: '', baseurl: '', token: '', code, msg }];
|
|
54
|
+
return [{ enable: '', corpid: '', corpName: '', userName: '', userId: '', baseurl: '', token: '', code, msg, source: '' }];
|
|
54
55
|
}
|
|
55
56
|
|
|
56
57
|
cli({
|
|
@@ -64,9 +65,24 @@ cli({
|
|
|
64
65
|
args: [
|
|
65
66
|
{ name: 'showToken', type: 'bool', default: false, help: '显示完整 token;默认只显示脱敏预览' },
|
|
66
67
|
],
|
|
67
|
-
columns: ['enable', 'corpid', 'userId', 'baseurl', 'token', 'corpName', 'userName', 'code', 'msg'],
|
|
68
|
+
columns: ['enable', 'corpid', 'userId', 'baseurl', 'token', 'corpName', 'userName', 'code', 'msg', 'source'],
|
|
68
69
|
func: async (kwargs) => {
|
|
69
70
|
const companies = readCompanies();
|
|
71
|
+
const envConfig = readEnvConfig();
|
|
72
|
+
if (isEnvOnly() || (!companies.some((item) => item && item.enable === true) && hasEnvConfig(envConfig))) {
|
|
73
|
+
return [{
|
|
74
|
+
enable: 'true',
|
|
75
|
+
corpid: String(envConfig.corpid || ''),
|
|
76
|
+
userId: String(envConfig.userId || ''),
|
|
77
|
+
baseurl: String(envConfig.baseurl || ''),
|
|
78
|
+
token: Boolean(kwargs.showToken) ? String(envConfig.token || '') : maskToken(envConfig.token),
|
|
79
|
+
corpName: String(envConfig.corpName || ''),
|
|
80
|
+
userName: String(envConfig.userName || ''),
|
|
81
|
+
code: '',
|
|
82
|
+
msg: '来源为环境变量 XBB_*(环境变量模式不支持多公司切换)',
|
|
83
|
+
source: 'env',
|
|
84
|
+
}];
|
|
85
|
+
}
|
|
70
86
|
if (!companies.length) {
|
|
71
87
|
return makeErrorRow('NO_CONFIG', '缺少本地配置;请先执行 xbbcli token-set --corpid <CORPID> --token <TOKEN> --userId <USERID>');
|
|
72
88
|
}
|
|
@@ -82,6 +98,7 @@ cli({
|
|
|
82
98
|
userName: String(item.userName || ''),
|
|
83
99
|
code: '',
|
|
84
100
|
msg: '',
|
|
101
|
+
source: 'config',
|
|
85
102
|
}));
|
|
86
103
|
if (enabledCount !== 1) {
|
|
87
104
|
rows.push({
|
|
@@ -92,6 +109,7 @@ cli({
|
|
|
92
109
|
token: '',
|
|
93
110
|
corpName: '',
|
|
94
111
|
userName: '',
|
|
112
|
+
source: 'config',
|
|
95
113
|
code: 'INVALID_ENABLE',
|
|
96
114
|
msg: `配置中启用(enable=true)的公司数量为 ${enabledCount},请用 xbbcli token-use --corpid <CORPID> 修正`,
|
|
97
115
|
});
|
package/token-set.js
CHANGED
|
@@ -2,6 +2,7 @@ import fs from 'node:fs';
|
|
|
2
2
|
import os from 'node:os';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { cli, Strategy, getRegistry } from './xbb-registry.js';
|
|
5
|
+
import { persistEnvVars } from './xbb-config.js';
|
|
5
6
|
|
|
6
7
|
const CONFIG_DIR = path.join(os.homedir(), '.xbbcli');
|
|
7
8
|
const CONFIG_FILE = path.join(CONFIG_DIR, 'config.env');
|
|
@@ -264,7 +265,7 @@ function writeCommandMap(corpid) {
|
|
|
264
265
|
return commandMapFile;
|
|
265
266
|
}
|
|
266
267
|
|
|
267
|
-
function createResult(status, message, corpid, baseurl, userId, formlistFile = '', commandMapFile = '', enable = '', companyCount = '', departmentUserFile = '', corpName = '', userName = '') {
|
|
268
|
+
function createResult(status, message, corpid, baseurl, userId, formlistFile = '', commandMapFile = '', enable = '', companyCount = '', departmentUserFile = '', corpName = '', userName = '', envStored = '', envFile = '') {
|
|
268
269
|
return [{
|
|
269
270
|
status,
|
|
270
271
|
message,
|
|
@@ -279,6 +280,8 @@ function createResult(status, message, corpid, baseurl, userId, formlistFile = '
|
|
|
279
280
|
departmentUserFile,
|
|
280
281
|
corpName,
|
|
281
282
|
userName,
|
|
283
|
+
envStored,
|
|
284
|
+
envFile,
|
|
282
285
|
}];
|
|
283
286
|
}
|
|
284
287
|
|
|
@@ -353,7 +356,19 @@ async function setToken(kwargs) {
|
|
|
353
356
|
const commandMapFile = writeCommandMap(corpid);
|
|
354
357
|
const { file: departmentUserFile, corpName, userName } = await writeDepartmentUserFile(corpid, userId);
|
|
355
358
|
writeCompanyProfile(corpid, { corpName, userName });
|
|
356
|
-
|
|
359
|
+
let envStored = 'skipped';
|
|
360
|
+
let envFile = '';
|
|
361
|
+
if (!kwargs.noEnv) {
|
|
362
|
+
try {
|
|
363
|
+
const envResult = persistEnvVars({ corpid, token: personalToken, baseurl, userId, corpName, userName });
|
|
364
|
+
envStored = envResult.stored;
|
|
365
|
+
envFile = envResult.file;
|
|
366
|
+
} catch (error) {
|
|
367
|
+
envStored = 'failed';
|
|
368
|
+
envFile = String(error.message || error);
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
return createResult('ok', '已保存 corpid、token、baseurl、userId,并同步表单模板缓存、命令映射文件与部门/员工缓存', corpid, baseurl, userId, formlistFile, commandMapFile, true, companies.length, departmentUserFile, corpName, userName, envStored, envFile);
|
|
357
372
|
} catch (error) {
|
|
358
373
|
return createResult(
|
|
359
374
|
'partial',
|
|
@@ -381,7 +396,8 @@ cli({
|
|
|
381
396
|
{ name: 'corpid', type: 'str', help: '公司id(必填)' },
|
|
382
397
|
{ name: 'token', type: 'str', help: '要保存的 API token' },
|
|
383
398
|
{ name: 'userId', type: 'str', help: '操作人id(必填)' },
|
|
399
|
+
{ name: 'noEnv', type: 'bool', default: false, help: '不写入环境变量,仅保存到 config.env' },
|
|
384
400
|
],
|
|
385
|
-
columns: ['status', 'message', 'configFile', 'corpid', 'baseurl', 'userId', 'enable', 'companyCount', 'formlistFile', 'commandMapFile', 'departmentUserFile', 'corpName', 'userName'],
|
|
401
|
+
columns: ['status', 'message', 'configFile', 'corpid', 'baseurl', 'userId', 'enable', 'companyCount', 'formlistFile', 'commandMapFile', 'departmentUserFile', 'corpName', 'userName', 'envStored', 'envFile'],
|
|
386
402
|
func: setToken,
|
|
387
403
|
});
|
package/token-use.js
CHANGED
|
@@ -2,6 +2,7 @@ import fs from 'node:fs';
|
|
|
2
2
|
import os from 'node:os';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { cli, Strategy } from './xbb-registry.js';
|
|
5
|
+
import { isEnvActive, isEnvOnly, getEnvVarNames } from './xbb-config.js';
|
|
5
6
|
|
|
6
7
|
const CONFIG_DIR = path.join(os.homedir(), '.xbbcli');
|
|
7
8
|
const CONFIG_FILE = path.join(CONFIG_DIR, 'config.env');
|
|
@@ -66,6 +67,10 @@ async function useCompany(kwargs) {
|
|
|
66
67
|
return createResult('error', '缺少 --corpid', '', '', '');
|
|
67
68
|
}
|
|
68
69
|
|
|
70
|
+
if (isEnvOnly() || isEnvActive()) {
|
|
71
|
+
return createResult('error', `当前为环境变量模式(${getEnvVarNames().join(', ')}),不支持切换公司;如需多公司请改用 config.env`, corpid, '', '');
|
|
72
|
+
}
|
|
73
|
+
|
|
69
74
|
const companies = readCompanies();
|
|
70
75
|
if (!companies.length) {
|
|
71
76
|
return createResult('error', '缺少本地配置;请先执行 xbbcli token-set --corpid <CORPID> --token <TOKEN> --userId <USERID>', corpid, '', 0);
|
package/user-add.js
CHANGED
|
@@ -3,6 +3,7 @@ import fs from 'node:fs';
|
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { cli, Strategy } from './xbb-registry.js';
|
|
6
|
+
import { readActiveConfig } from './xbb-config.js';
|
|
6
7
|
|
|
7
8
|
const CONFIG_FILE = path.join(os.homedir(), '.xbbcli', 'config.env');
|
|
8
9
|
const API_URL = 'https://proapi.xbongbong.com/pro/v2/api/user/add';
|
|
@@ -10,20 +11,7 @@ const DEFAULT_BASE_URL = 'https://proapi.xbongbong.com';
|
|
|
10
11
|
const MISSING_TOKEN_MESSAGE = '缺少 token;请先执行 xbbcli token-set --corpid <CORPID> --token <TOKEN> --userId <USERID>';
|
|
11
12
|
|
|
12
13
|
function readConfig() {
|
|
13
|
-
|
|
14
|
-
const parsed = JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf8'));
|
|
15
|
-
const companies = Array.isArray(parsed)
|
|
16
|
-
? parsed
|
|
17
|
-
: Array.isArray(parsed?.companies)
|
|
18
|
-
? parsed.companies
|
|
19
|
-
: null;
|
|
20
|
-
if (companies) {
|
|
21
|
-
return companies.find((item) => item && item.enable) || {};
|
|
22
|
-
}
|
|
23
|
-
return parsed || {};
|
|
24
|
-
} catch {
|
|
25
|
-
return {};
|
|
26
|
-
}
|
|
14
|
+
return readActiveConfig();
|
|
27
15
|
}
|
|
28
16
|
|
|
29
17
|
function getRuntimeConfig() {
|
package/user-del.js
CHANGED
|
@@ -3,6 +3,7 @@ import fs from 'node:fs';
|
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { cli, Strategy } from './xbb-registry.js';
|
|
6
|
+
import { readActiveConfig } from './xbb-config.js';
|
|
6
7
|
|
|
7
8
|
const CONFIG_FILE = path.join(os.homedir(), '.xbbcli', 'config.env');
|
|
8
9
|
const API_URL = 'https://proapi.xbongbong.com/pro/v2/api/user/del';
|
|
@@ -10,20 +11,7 @@ const DEFAULT_BASE_URL = 'https://proapi.xbongbong.com';
|
|
|
10
11
|
const MISSING_TOKEN_MESSAGE = '缺少 token;请先执行 xbbcli token-set --corpid <CORPID> --token <TOKEN> --userId <USERID>';
|
|
11
12
|
|
|
12
13
|
function readConfig() {
|
|
13
|
-
|
|
14
|
-
const parsed = JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf8'));
|
|
15
|
-
const companies = Array.isArray(parsed)
|
|
16
|
-
? parsed
|
|
17
|
-
: Array.isArray(parsed?.companies)
|
|
18
|
-
? parsed.companies
|
|
19
|
-
: null;
|
|
20
|
-
if (companies) {
|
|
21
|
-
return companies.find((item) => item && item.enable) || {};
|
|
22
|
-
}
|
|
23
|
-
return parsed || {};
|
|
24
|
-
} catch {
|
|
25
|
-
return {};
|
|
26
|
-
}
|
|
14
|
+
return readActiveConfig();
|
|
27
15
|
}
|
|
28
16
|
|
|
29
17
|
function getRuntimeConfig() {
|
package/user-edit.js
CHANGED
|
@@ -3,6 +3,7 @@ import fs from 'node:fs';
|
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { cli, Strategy } from './xbb-registry.js';
|
|
6
|
+
import { readActiveConfig } from './xbb-config.js';
|
|
6
7
|
|
|
7
8
|
const CONFIG_FILE = path.join(os.homedir(), '.xbbcli', 'config.env');
|
|
8
9
|
const API_URL = 'https://proapi.xbongbong.com/pro/v2/api/user/edit';
|
|
@@ -10,20 +11,7 @@ const DEFAULT_BASE_URL = 'https://proapi.xbongbong.com';
|
|
|
10
11
|
const MISSING_TOKEN_MESSAGE = '缺少 token;请先执行 xbbcli token-set --corpid <CORPID> --token <TOKEN> --userId <USERID>';
|
|
11
12
|
|
|
12
13
|
function readConfig() {
|
|
13
|
-
|
|
14
|
-
const parsed = JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf8'));
|
|
15
|
-
const companies = Array.isArray(parsed)
|
|
16
|
-
? parsed
|
|
17
|
-
: Array.isArray(parsed?.companies)
|
|
18
|
-
? parsed.companies
|
|
19
|
-
: null;
|
|
20
|
-
if (companies) {
|
|
21
|
-
return companies.find((item) => item && item.enable) || {};
|
|
22
|
-
}
|
|
23
|
-
return parsed || {};
|
|
24
|
-
} catch {
|
|
25
|
-
return {};
|
|
26
|
-
}
|
|
14
|
+
return readActiveConfig();
|
|
27
15
|
}
|
|
28
16
|
|
|
29
17
|
function getRuntimeConfig() {
|
package/user-handover.js
CHANGED
|
@@ -3,6 +3,7 @@ import fs from 'node:fs';
|
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { cli, Strategy } from './xbb-registry.js';
|
|
6
|
+
import { readActiveConfig } from './xbb-config.js';
|
|
6
7
|
|
|
7
8
|
const CONFIG_FILE = path.join(os.homedir(), '.xbbcli', 'config.env');
|
|
8
9
|
const API_URL = 'https://proapi.xbongbong.com/pro/v2/api/user/handover';
|
|
@@ -10,20 +11,7 @@ const DEFAULT_BASE_URL = 'https://proapi.xbongbong.com';
|
|
|
10
11
|
const MISSING_TOKEN_MESSAGE = '缺少 token;请先执行 xbbcli token-set --corpid <CORPID> --token <TOKEN> --userId <USERID>';
|
|
11
12
|
|
|
12
13
|
function readConfig() {
|
|
13
|
-
|
|
14
|
-
const parsed = JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf8'));
|
|
15
|
-
const companies = Array.isArray(parsed)
|
|
16
|
-
? parsed
|
|
17
|
-
: Array.isArray(parsed?.companies)
|
|
18
|
-
? parsed.companies
|
|
19
|
-
: null;
|
|
20
|
-
if (companies) {
|
|
21
|
-
return companies.find((item) => item && item.enable) || {};
|
|
22
|
-
}
|
|
23
|
-
return parsed || {};
|
|
24
|
-
} catch {
|
|
25
|
-
return {};
|
|
26
|
-
}
|
|
14
|
+
return readActiveConfig();
|
|
27
15
|
}
|
|
28
16
|
|
|
29
17
|
function getRuntimeConfig() {
|
package/user-list.js
CHANGED
|
@@ -3,6 +3,7 @@ import os from 'node:os';
|
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import crypto from 'node:crypto';
|
|
5
5
|
import { cli, Strategy } from './xbb-registry.js';
|
|
6
|
+
import { readActiveConfig } from './xbb-config.js';
|
|
6
7
|
|
|
7
8
|
const CONFIG_DIR = path.join(os.homedir(), '.xbbcli');
|
|
8
9
|
const CONFIG_FILE = path.join(CONFIG_DIR, 'config.env');
|
|
@@ -11,20 +12,7 @@ const USER_LIST_API_PATH = '/pro/v2/api/user/list';
|
|
|
11
12
|
let lastPagination = null;
|
|
12
13
|
|
|
13
14
|
function readConfig() {
|
|
14
|
-
|
|
15
|
-
const parsed = JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf8'));
|
|
16
|
-
const companies = Array.isArray(parsed)
|
|
17
|
-
? parsed
|
|
18
|
-
: Array.isArray(parsed?.companies)
|
|
19
|
-
? parsed.companies
|
|
20
|
-
: null;
|
|
21
|
-
if (companies) {
|
|
22
|
-
return companies.find((item) => item && item.enable) || {};
|
|
23
|
-
}
|
|
24
|
-
return parsed || {};
|
|
25
|
-
} catch {
|
|
26
|
-
return {};
|
|
27
|
-
}
|
|
15
|
+
return readActiveConfig();
|
|
28
16
|
}
|
|
29
17
|
|
|
30
18
|
function getRuntimeConfig() {
|
package/work-order-add.js
CHANGED
|
@@ -3,6 +3,7 @@ import fs from 'node:fs';
|
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { cli, Strategy } from './xbb-registry.js';
|
|
6
|
+
import { readActiveConfig } from './xbb-config.js';
|
|
6
7
|
|
|
7
8
|
const CONFIG_FILE = path.join(os.homedir(), '.xbbcli', 'config.env');
|
|
8
9
|
const WORK_ORDER_ADD_API_URL = 'https://proapi.xbongbong.com/pro/v2/api/workOrderV2/add';
|
|
@@ -10,20 +11,7 @@ const DEFAULT_BASE_URL = 'https://proapi.xbongbong.com';
|
|
|
10
11
|
const MISSING_TOKEN_MESSAGE = '缺少 token;请先执行 xbbcli token-set --corpid <CORPID> --token <TOKEN> --userId <USERID>';
|
|
11
12
|
|
|
12
13
|
function readConfig() {
|
|
13
|
-
|
|
14
|
-
const parsed = JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf8'));
|
|
15
|
-
const companies = Array.isArray(parsed)
|
|
16
|
-
? parsed
|
|
17
|
-
: Array.isArray(parsed?.companies)
|
|
18
|
-
? parsed.companies
|
|
19
|
-
: null;
|
|
20
|
-
if (companies) {
|
|
21
|
-
return companies.find((item) => item && item.enable) || {};
|
|
22
|
-
}
|
|
23
|
-
return parsed || {};
|
|
24
|
-
} catch {
|
|
25
|
-
return {};
|
|
26
|
-
}
|
|
14
|
+
return readActiveConfig();
|
|
27
15
|
}
|
|
28
16
|
|
|
29
17
|
function getRuntimeConfig() {
|
|
@@ -2,7 +2,8 @@ import crypto from 'node:crypto';
|
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
|
-
import { cli, Strategy } from './xbb-registry.js';
|
|
5
|
+
import { cli, Strategy } from './xbb-registry.js';
|
|
6
|
+
import { readActiveConfig } from './xbb-config.js';
|
|
6
7
|
|
|
7
8
|
const CONFIG_FILE = path.join(os.homedir(), '.opencli', 'xbb', 'config.env');
|
|
8
9
|
const API_URL = 'https://proapi.xbongbong.com/pro/v2/api/workOrderV2/asset/addCoUser';
|
|
@@ -10,20 +11,7 @@ const DEFAULT_BASE_URL = 'https://proapi.xbongbong.com';
|
|
|
10
11
|
const MISSING_TOKEN_MESSAGE = '缺少 token;请先执行 opencli xbb token-set --corpid <CORPID> --token <TOKEN> --userId <USERID>';
|
|
11
12
|
|
|
12
13
|
function readConfig() {
|
|
13
|
-
|
|
14
|
-
const parsed = JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf8'));
|
|
15
|
-
const companies = Array.isArray(parsed)
|
|
16
|
-
? parsed
|
|
17
|
-
: Array.isArray(parsed?.companies)
|
|
18
|
-
? parsed.companies
|
|
19
|
-
: null;
|
|
20
|
-
if (companies) {
|
|
21
|
-
return companies.find((item) => item && item.enable) || {};
|
|
22
|
-
}
|
|
23
|
-
return parsed || {};
|
|
24
|
-
} catch {
|
|
25
|
-
return {};
|
|
26
|
-
}
|
|
14
|
+
return readActiveConfig();
|
|
27
15
|
}
|
|
28
16
|
|
|
29
17
|
function getRuntimeConfig() {
|
|
@@ -2,7 +2,8 @@ import crypto from 'node:crypto';
|
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
|
-
import { cli, Strategy } from './xbb-registry.js';
|
|
5
|
+
import { cli, Strategy } from './xbb-registry.js';
|
|
6
|
+
import { readActiveConfig } from './xbb-config.js';
|
|
6
7
|
|
|
7
8
|
const CONFIG_FILE = path.join(os.homedir(), '.opencli', 'xbb', 'config.env');
|
|
8
9
|
const API_URL = 'https://proapi.xbongbong.com/pro/v2/api/workOrderV2/asset/addMinUser';
|
|
@@ -10,20 +11,7 @@ const DEFAULT_BASE_URL = 'https://proapi.xbongbong.com';
|
|
|
10
11
|
const MISSING_TOKEN_MESSAGE = '缺少 token;请先执行 opencli xbb token-set --corpid <CORPID> --token <TOKEN> --userId <USERID>';
|
|
11
12
|
|
|
12
13
|
function readConfig() {
|
|
13
|
-
|
|
14
|
-
const parsed = JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf8'));
|
|
15
|
-
const companies = Array.isArray(parsed)
|
|
16
|
-
? parsed
|
|
17
|
-
: Array.isArray(parsed?.companies)
|
|
18
|
-
? parsed.companies
|
|
19
|
-
: null;
|
|
20
|
-
if (companies) {
|
|
21
|
-
return companies.find((item) => item && item.enable) || {};
|
|
22
|
-
}
|
|
23
|
-
return parsed || {};
|
|
24
|
-
} catch {
|
|
25
|
-
return {};
|
|
26
|
-
}
|
|
14
|
+
return readActiveConfig();
|
|
27
15
|
}
|
|
28
16
|
|
|
29
17
|
function getRuntimeConfig() {
|
package/work-order-asset-add.js
CHANGED
|
@@ -2,7 +2,8 @@ import crypto from 'node:crypto';
|
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
|
-
import { cli, Strategy } from './xbb-registry.js';
|
|
5
|
+
import { cli, Strategy } from './xbb-registry.js';
|
|
6
|
+
import { readActiveConfig } from './xbb-config.js';
|
|
6
7
|
|
|
7
8
|
const CONFIG_FILE = path.join(os.homedir(), '.opencli', 'xbb', 'config.env');
|
|
8
9
|
const API_URL = 'https://proapi.xbongbong.com/pro/v2/api/workOrderV2/asset/add';
|
|
@@ -10,20 +11,7 @@ const DEFAULT_BASE_URL = 'https://proapi.xbongbong.com';
|
|
|
10
11
|
const MISSING_TOKEN_MESSAGE = '缺少 token;请先执行 opencli xbb token-set --corpid <CORPID> --token <TOKEN> --userId <USERID>';
|
|
11
12
|
|
|
12
13
|
function readConfig() {
|
|
13
|
-
|
|
14
|
-
const parsed = JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf8'));
|
|
15
|
-
const companies = Array.isArray(parsed)
|
|
16
|
-
? parsed
|
|
17
|
-
: Array.isArray(parsed?.companies)
|
|
18
|
-
? parsed.companies
|
|
19
|
-
: null;
|
|
20
|
-
if (companies) {
|
|
21
|
-
return companies.find((item) => item && item.enable) || {};
|
|
22
|
-
}
|
|
23
|
-
return parsed || {};
|
|
24
|
-
} catch {
|
|
25
|
-
return {};
|
|
26
|
-
}
|
|
14
|
+
return readActiveConfig();
|
|
27
15
|
}
|
|
28
16
|
|
|
29
17
|
function getRuntimeConfig() {
|
|
@@ -2,7 +2,8 @@ import crypto from 'node:crypto';
|
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
|
-
import { cli, Strategy } from './xbb-registry.js';
|
|
5
|
+
import { cli, Strategy } from './xbb-registry.js';
|
|
6
|
+
import { readActiveConfig } from './xbb-config.js';
|
|
6
7
|
|
|
7
8
|
const CONFIG_FILE = path.join(os.homedir(), '.opencli', 'xbb', 'config.env');
|
|
8
9
|
const API_URL = 'https://proapi.xbongbong.com/pro/v2/api/workOrderV2/asset/delCoUser';
|
|
@@ -10,20 +11,7 @@ const DEFAULT_BASE_URL = 'https://proapi.xbongbong.com';
|
|
|
10
11
|
const MISSING_TOKEN_MESSAGE = '缺少 token;请先执行 opencli xbb token-set --corpid <CORPID> --token <TOKEN> --userId <USERID>';
|
|
11
12
|
|
|
12
13
|
function readConfig() {
|
|
13
|
-
|
|
14
|
-
const parsed = JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf8'));
|
|
15
|
-
const companies = Array.isArray(parsed)
|
|
16
|
-
? parsed
|
|
17
|
-
: Array.isArray(parsed?.companies)
|
|
18
|
-
? parsed.companies
|
|
19
|
-
: null;
|
|
20
|
-
if (companies) {
|
|
21
|
-
return companies.find((item) => item && item.enable) || {};
|
|
22
|
-
}
|
|
23
|
-
return parsed || {};
|
|
24
|
-
} catch {
|
|
25
|
-
return {};
|
|
26
|
-
}
|
|
14
|
+
return readActiveConfig();
|
|
27
15
|
}
|
|
28
16
|
|
|
29
17
|
function getRuntimeConfig() {
|