@asiainfo-sdd/multica-cli-test 0.3.14 → 0.3.16
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/lib/server-config.js +51 -1
- package/package.json +5 -2
package/lib/server-config.js
CHANGED
|
@@ -7,6 +7,12 @@
|
|
|
7
7
|
// - server_url/app_url 两个部署级 URL【覆盖式】更新: 与本次安装源不一致时
|
|
8
8
|
// 直接覆盖并打印 新值 ← 旧值(升级环境后旧地址上的 token 验证/daemon 连接
|
|
9
9
|
// 必然失败,覆盖是唯一正确动作;自定义地址用户可从日志看到旧值并改回)
|
|
10
|
+
// - 自更新三键(auto_update / release_api_base_url / release_download_base_url)
|
|
11
|
+
// 【只填空不覆盖】: daemon 拉取线默认指向 GitHub 且自托管默认关,安装时
|
|
12
|
+
// 把源指到本下载源并开启自动更新;用户显式关闭(auto_update:false)或自
|
|
13
|
+
// 定义源一律尊重,不因重装被翻转。release 源取值与二进制下载同源
|
|
14
|
+
// (MULTICA_RELEASE_API_BASE_URL / MULTICA_RELEASE_DOWNLOAD_BASE_URL env >
|
|
15
|
+
// MULTICA_DOWNLOAD_BASE env > dist-config download_base)。
|
|
10
16
|
// - 其余字段(token/workspace_id/各超时/backends 等)一律不动
|
|
11
17
|
// - 目标文件是 multica CLI 的标准配置(daemon 只认这里的 token),
|
|
12
18
|
// 多 profile 场景(--profile)不在此处理,留给用户手动 config set
|
|
@@ -18,6 +24,13 @@ const path = require('path');
|
|
|
18
24
|
|
|
19
25
|
const CONFIG_KEYS = ['server_url', 'app_url'];
|
|
20
26
|
|
|
27
|
+
// 只填空的自更新键(env 覆盖 > 下载源推导)。
|
|
28
|
+
const RELEASE_API_KEYS = {
|
|
29
|
+
auto_update: null, // 布尔,恒填 true(仅当用户未设置时)
|
|
30
|
+
release_api_base_url: ['MULTICA_RELEASE_API_BASE_URL', 'MULTICA_DOWNLOAD_BASE'],
|
|
31
|
+
release_download_base_url: ['MULTICA_RELEASE_DOWNLOAD_BASE_URL', 'MULTICA_DOWNLOAD_BASE'],
|
|
32
|
+
};
|
|
33
|
+
|
|
21
34
|
function multicaConfigPath() {
|
|
22
35
|
return path.join(os.homedir(), '.multica', 'config.json');
|
|
23
36
|
}
|
|
@@ -54,12 +67,26 @@ function resolveDesired(manifest) {
|
|
|
54
67
|
return desired;
|
|
55
68
|
}
|
|
56
69
|
|
|
70
|
+
// 自更新源基址:专用 env > 下载源 env > dist-config download_base(与二进制
|
|
71
|
+
// 下载同源;release 元数据/资产就摆在同一前缀下)。
|
|
72
|
+
function resolveReleaseBase() {
|
|
73
|
+
const distConfig = require('./dist-config.json');
|
|
74
|
+
return (
|
|
75
|
+
process.env.MULTICA_DOWNLOAD_BASE ||
|
|
76
|
+
(typeof distConfig.download_base === 'string' && distConfig.download_base.trim()) ||
|
|
77
|
+
''
|
|
78
|
+
).replace(/\/+$/, '');
|
|
79
|
+
}
|
|
80
|
+
|
|
57
81
|
// 返回 {written: [{key, value}], updated: [{key, from, to}]} 供上层打印;
|
|
58
82
|
// 无可写内容或文件损坏时返回 null(不产生任何变更)。
|
|
59
83
|
// written = 原来为空、本次填入;updated = 原有不同值、本次覆盖。
|
|
84
|
+
// 自更新三键只在原值为空时填入(fillOnly),不参与 updated。
|
|
60
85
|
function applyServerConfig(manifest) {
|
|
61
86
|
const desired = resolveDesired(manifest);
|
|
62
|
-
|
|
87
|
+
const releaseBase = resolveReleaseBase();
|
|
88
|
+
const wantsRelease = Boolean(desired.server_url || desired.app_url || releaseBase);
|
|
89
|
+
if (!wantsRelease) return null;
|
|
63
90
|
|
|
64
91
|
let userConfig;
|
|
65
92
|
let existed;
|
|
@@ -86,6 +113,29 @@ function applyServerConfig(manifest) {
|
|
|
86
113
|
}
|
|
87
114
|
}
|
|
88
115
|
|
|
116
|
+
// 自更新键:只填空(用户已表态的值一律尊重)。
|
|
117
|
+
if (userConfig.auto_update === undefined) {
|
|
118
|
+
userConfig.auto_update = true;
|
|
119
|
+
written.push({ key: 'auto_update', value: true });
|
|
120
|
+
changed = true;
|
|
121
|
+
}
|
|
122
|
+
for (const [key, envNames] of Object.entries(RELEASE_API_KEYS)) {
|
|
123
|
+
if (key === 'auto_update' || userConfig[key]) continue;
|
|
124
|
+
let value = '';
|
|
125
|
+
for (const envName of envNames) {
|
|
126
|
+
if (process.env[envName] && process.env[envName].trim()) {
|
|
127
|
+
value = process.env[envName].trim().replace(/\/+$/, '');
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (!value) value = releaseBase;
|
|
132
|
+
if (value) {
|
|
133
|
+
userConfig[key] = value;
|
|
134
|
+
written.push({ key, value });
|
|
135
|
+
changed = true;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
89
139
|
if (!changed) return { written, updated };
|
|
90
140
|
|
|
91
141
|
const file = multicaConfigPath();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@asiainfo-sdd/multica-cli-test",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.16",
|
|
4
4
|
"description": "数字工厂 daemon 客户端安装帮助包(测试环境):连接测试环境服务器与测试环境二进制下载源",
|
|
5
5
|
"bin": {
|
|
6
6
|
"multica": "bin/multica.js",
|
|
@@ -21,7 +21,10 @@
|
|
|
21
21
|
"multica": {
|
|
22
22
|
"configKeysWrittenAtInstall": [
|
|
23
23
|
"server_url",
|
|
24
|
-
"app_url"
|
|
24
|
+
"app_url",
|
|
25
|
+
"auto_update",
|
|
26
|
+
"release_api_base_url",
|
|
27
|
+
"release_download_base_url"
|
|
25
28
|
],
|
|
26
29
|
"notes": "安装时只填空写入部署级配置(env MULTICA_SERVER_URL/MULTICA_APP_URL > manifest 顶层 > lib/dist-config.json);不写 token、不覆盖已有值"
|
|
27
30
|
}
|