react-native-update-cli 1.43.4 → 1.43.5
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/versions.js +34 -29
- package/package.json +1 -1
- package/src/versions.ts +106 -51
package/lib/versions.js
CHANGED
|
@@ -19,15 +19,19 @@ async function showVersion(appId, offset) {
|
|
|
19
19
|
const { data, count } = await (0, _api.get)(`/app/${appId}/version/list`);
|
|
20
20
|
console.log(`Offset ${offset}`);
|
|
21
21
|
for (const version of data){
|
|
22
|
-
|
|
23
|
-
const pkgCount = version.packages.length;
|
|
24
|
-
|
|
25
|
-
packageInfo += `...and ${pkgCount - 3} more`;
|
|
26
|
-
}
|
|
22
|
+
var _version_packages;
|
|
23
|
+
const pkgCount = ((_version_packages = version.packages) == null ? void 0 : _version_packages.length) || 0;
|
|
24
|
+
let packageInfo = '';
|
|
27
25
|
if (pkgCount === 0) {
|
|
28
26
|
packageInfo = 'no package';
|
|
29
27
|
} else {
|
|
30
|
-
|
|
28
|
+
var _version_packages1;
|
|
29
|
+
packageInfo = (_version_packages1 = version.packages) == null ? void 0 : _version_packages1.slice(0, 3).map((pkg)=>pkg.name).join(', ');
|
|
30
|
+
if (pkgCount > 3) {
|
|
31
|
+
packageInfo += `...and ${pkgCount - 3} more`;
|
|
32
|
+
} else {
|
|
33
|
+
packageInfo = `[${packageInfo}]`;
|
|
34
|
+
}
|
|
31
35
|
}
|
|
32
36
|
console.log(`${version.id}) ${version.hash.slice(0, 8)} ${version.name} ${packageInfo}`);
|
|
33
37
|
}
|
|
@@ -70,7 +74,8 @@ async function chooseVersion(appId) {
|
|
|
70
74
|
break;
|
|
71
75
|
default:
|
|
72
76
|
{
|
|
73
|
-
const
|
|
77
|
+
const versionId = Number.parseInt(cmd, 10);
|
|
78
|
+
const v = data.find((version)=>version.id === String(versionId));
|
|
74
79
|
if (v) {
|
|
75
80
|
return v;
|
|
76
81
|
}
|
|
@@ -122,18 +127,16 @@ const commands = {
|
|
|
122
127
|
const { appId } = await (0, _app.getSelectedApp)(platform);
|
|
123
128
|
let versionId = options.versionId || (await chooseVersion(appId)).id;
|
|
124
129
|
if (versionId === 'null') {
|
|
125
|
-
versionId =
|
|
130
|
+
versionId = undefined;
|
|
126
131
|
}
|
|
127
132
|
let pkgId;
|
|
128
133
|
let pkgVersion = options.packageVersion;
|
|
129
134
|
let minPkgVersion = options.minPackageVersion;
|
|
130
135
|
let maxPkgVersion = options.maxPackageVersion;
|
|
131
|
-
let rollout =
|
|
132
|
-
if (rollout
|
|
133
|
-
rollout = null;
|
|
134
|
-
} else {
|
|
136
|
+
let rollout = undefined;
|
|
137
|
+
if (options.rollout !== undefined) {
|
|
135
138
|
try {
|
|
136
|
-
rollout = Number.parseInt(rollout);
|
|
139
|
+
rollout = Number.parseInt(options.rollout);
|
|
137
140
|
} catch (e) {
|
|
138
141
|
throw new Error('rollout 必须是 1-100 的整数');
|
|
139
142
|
}
|
|
@@ -144,11 +147,11 @@ const commands = {
|
|
|
144
147
|
if (minPkgVersion) {
|
|
145
148
|
minPkgVersion = String(minPkgVersion).trim();
|
|
146
149
|
const { data } = await (0, _api.get)(`/app/${appId}/package/list?limit=1000`);
|
|
147
|
-
const pkgs = data.filter((
|
|
150
|
+
const pkgs = data.filter((pkg)=>(0, _compareversions.compare)(pkg.name, minPkgVersion, '>='));
|
|
148
151
|
if (pkgs.length === 0) {
|
|
149
152
|
throw new Error(`未查询到 >= ${minPkgVersion} 的原生版本`);
|
|
150
153
|
}
|
|
151
|
-
if (rollout) {
|
|
154
|
+
if (rollout !== undefined) {
|
|
152
155
|
const rolloutConfig = {};
|
|
153
156
|
for (const pkg of pkgs){
|
|
154
157
|
rolloutConfig[pkg.name] = rollout;
|
|
@@ -158,7 +161,7 @@ const commands = {
|
|
|
158
161
|
rollout: rolloutConfig
|
|
159
162
|
}
|
|
160
163
|
});
|
|
161
|
-
console.log(`已在原生版本 ${pkgs.map((
|
|
164
|
+
console.log(`已在原生版本 ${pkgs.map((pkg)=>pkg.name).join(', ')} 上设置灰度发布 ${rollout}% 热更版本 ${versionId}`);
|
|
162
165
|
}
|
|
163
166
|
for (const pkg of pkgs){
|
|
164
167
|
await (0, _api.put)(`/app/${appId}/package/${pkg.id}`, {
|
|
@@ -172,11 +175,11 @@ const commands = {
|
|
|
172
175
|
if (maxPkgVersion) {
|
|
173
176
|
maxPkgVersion = String(maxPkgVersion).trim();
|
|
174
177
|
const { data } = await (0, _api.get)(`/app/${appId}/package/list?limit=1000`);
|
|
175
|
-
const pkgs = data.filter((
|
|
178
|
+
const pkgs = data.filter((pkg)=>(0, _compareversions.compare)(pkg.name, maxPkgVersion, '<='));
|
|
176
179
|
if (pkgs.length === 0) {
|
|
177
180
|
throw new Error(`未查询到 <= ${maxPkgVersion} 的原生版本`);
|
|
178
181
|
}
|
|
179
|
-
if (rollout) {
|
|
182
|
+
if (rollout !== undefined) {
|
|
180
183
|
const rolloutConfig = {};
|
|
181
184
|
for (const pkg of pkgs){
|
|
182
185
|
rolloutConfig[pkg.name] = rollout;
|
|
@@ -186,7 +189,7 @@ const commands = {
|
|
|
186
189
|
rollout: rolloutConfig
|
|
187
190
|
}
|
|
188
191
|
});
|
|
189
|
-
console.log(`已在原生版本 ${pkgs.map((
|
|
192
|
+
console.log(`已在原生版本 ${pkgs.map((pkg)=>pkg.name).join(', ')} 上设置灰度发布 ${rollout}% 热更版本 ${versionId}`);
|
|
190
193
|
}
|
|
191
194
|
for (const pkg of pkgs){
|
|
192
195
|
await (0, _api.put)(`/app/${appId}/package/${pkg.id}`, {
|
|
@@ -200,7 +203,7 @@ const commands = {
|
|
|
200
203
|
const { data } = await (0, _api.get)(`/app/${appId}/package/list?limit=1000`);
|
|
201
204
|
if (pkgVersion) {
|
|
202
205
|
pkgVersion = pkgVersion.trim();
|
|
203
|
-
const pkg = data.find((
|
|
206
|
+
const pkg = data.find((pkg)=>pkg.name === pkgVersion);
|
|
204
207
|
if (pkg) {
|
|
205
208
|
pkgId = pkg.id;
|
|
206
209
|
} else {
|
|
@@ -214,12 +217,12 @@ const commands = {
|
|
|
214
217
|
throw new Error('请提供 packageId 或 packageVersion 参数');
|
|
215
218
|
}
|
|
216
219
|
if (!pkgVersion) {
|
|
217
|
-
const pkg = data.find((
|
|
220
|
+
const pkg = data.find((pkg)=>String(pkg.id) === String(pkgId));
|
|
218
221
|
if (pkg) {
|
|
219
222
|
pkgVersion = pkg.name;
|
|
220
223
|
}
|
|
221
224
|
}
|
|
222
|
-
if (rollout) {
|
|
225
|
+
if (rollout !== undefined && pkgVersion) {
|
|
223
226
|
await (0, _api.put)(`/app/${appId}/version/${versionId}`, {
|
|
224
227
|
config: {
|
|
225
228
|
rollout: {
|
|
@@ -229,19 +232,21 @@ const commands = {
|
|
|
229
232
|
});
|
|
230
233
|
console.log(`已将在原生版本 ${pkgVersion} (id: ${pkgId}) 上设置灰度发布 ${rollout}% 热更版本 ${versionId} `);
|
|
231
234
|
}
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
235
|
+
if (versionId !== undefined) {
|
|
236
|
+
await (0, _api.put)(`/app/${appId}/package/${pkgId}`, {
|
|
237
|
+
versionId
|
|
238
|
+
});
|
|
239
|
+
console.log(`已将热更版本 ${versionId} 绑定到原生版本 ${pkgVersion} (id: ${pkgId})`);
|
|
240
|
+
}
|
|
236
241
|
},
|
|
237
242
|
updateVersionInfo: async ({ args, options })=>{
|
|
238
243
|
const platform = (0, _app.checkPlatform)(options.platform || await (0, _utils.question)('平台(ios/android/harmony):'));
|
|
239
244
|
const { appId } = await (0, _app.getSelectedApp)(platform);
|
|
240
245
|
const versionId = options.versionId || (await chooseVersion(appId)).id;
|
|
241
246
|
const updateParams = {};
|
|
242
|
-
options.name
|
|
243
|
-
options.description
|
|
244
|
-
options.metaInfo
|
|
247
|
+
if (options.name) updateParams.name = options.name;
|
|
248
|
+
if (options.description) updateParams.description = options.description;
|
|
249
|
+
if (options.metaInfo) updateParams.metaInfo = options.metaInfo;
|
|
245
250
|
await (0, _api.put)(`/app/${appId}/version/${versionId}`, updateParams);
|
|
246
251
|
console.log('操作成功');
|
|
247
252
|
}
|
package/package.json
CHANGED
package/src/versions.ts
CHANGED
|
@@ -6,24 +6,51 @@ import { choosePackage } from './package';
|
|
|
6
6
|
import { compare } from 'compare-versions';
|
|
7
7
|
import { depVersions } from './utils/dep-versions';
|
|
8
8
|
import { getCommitInfo } from './utils/git';
|
|
9
|
-
import { Platform } from 'types';
|
|
9
|
+
import type { Platform } from 'types';
|
|
10
|
+
|
|
11
|
+
interface Package {
|
|
12
|
+
id: string;
|
|
13
|
+
name: string;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
interface Version {
|
|
17
|
+
id: string;
|
|
18
|
+
hash: string;
|
|
19
|
+
name: string;
|
|
20
|
+
packages?: Package[];
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
interface CommandOptions {
|
|
24
|
+
name?: string;
|
|
25
|
+
description?: string;
|
|
26
|
+
metaInfo?: string;
|
|
27
|
+
platform?: Platform;
|
|
28
|
+
versionId?: string;
|
|
29
|
+
packageId?: string;
|
|
30
|
+
packageVersion?: string;
|
|
31
|
+
minPackageVersion?: string;
|
|
32
|
+
maxPackageVersion?: string;
|
|
33
|
+
rollout?: string;
|
|
34
|
+
}
|
|
10
35
|
|
|
11
36
|
async function showVersion(appId: string, offset: number) {
|
|
12
37
|
const { data, count } = await get(`/app/${appId}/version/list`);
|
|
13
38
|
console.log(`Offset ${offset}`);
|
|
14
39
|
for (const version of data) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
.map((v) => v.name)
|
|
18
|
-
.join(', ');
|
|
19
|
-
const pkgCount = version.packages.length;
|
|
20
|
-
if (pkgCount > 3) {
|
|
21
|
-
packageInfo += `...and ${pkgCount - 3} more`;
|
|
22
|
-
}
|
|
40
|
+
const pkgCount = version.packages?.length || 0;
|
|
41
|
+
let packageInfo = '';
|
|
23
42
|
if (pkgCount === 0) {
|
|
24
43
|
packageInfo = 'no package';
|
|
25
44
|
} else {
|
|
26
|
-
packageInfo =
|
|
45
|
+
packageInfo = version.packages
|
|
46
|
+
?.slice(0, 3)
|
|
47
|
+
.map((pkg: Package) => pkg.name)
|
|
48
|
+
.join(', ');
|
|
49
|
+
if (pkgCount > 3) {
|
|
50
|
+
packageInfo += `...and ${pkgCount - 3} more`;
|
|
51
|
+
} else {
|
|
52
|
+
packageInfo = `[${packageInfo}]`;
|
|
53
|
+
}
|
|
27
54
|
}
|
|
28
55
|
console.log(
|
|
29
56
|
`${version.id}) ${version.hash.slice(0, 8)} ${
|
|
@@ -73,7 +100,10 @@ async function chooseVersion(appId: string) {
|
|
|
73
100
|
offset = 0;
|
|
74
101
|
break;
|
|
75
102
|
default: {
|
|
76
|
-
const
|
|
103
|
+
const versionId = Number.parseInt(cmd, 10);
|
|
104
|
+
const v = data.find(
|
|
105
|
+
(version: Version) => version.id === String(versionId),
|
|
106
|
+
);
|
|
77
107
|
if (v) {
|
|
78
108
|
return v;
|
|
79
109
|
}
|
|
@@ -83,12 +113,13 @@ async function chooseVersion(appId: string) {
|
|
|
83
113
|
}
|
|
84
114
|
|
|
85
115
|
export const commands = {
|
|
86
|
-
publish: async function ({
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
116
|
+
publish: async function ({
|
|
117
|
+
args,
|
|
118
|
+
options,
|
|
119
|
+
}: {
|
|
120
|
+
args: string[];
|
|
121
|
+
options: CommandOptions;
|
|
122
|
+
}) {
|
|
92
123
|
const fn = args[0];
|
|
93
124
|
const { name, description, metaInfo } = options;
|
|
94
125
|
|
|
@@ -99,7 +130,8 @@ export const commands = {
|
|
|
99
130
|
}
|
|
100
131
|
|
|
101
132
|
const platform = checkPlatform(
|
|
102
|
-
options.platform ||
|
|
133
|
+
options.platform ||
|
|
134
|
+
((await question('平台(ios/android/harmony):')) as Platform),
|
|
103
135
|
);
|
|
104
136
|
const { appId } = await getSelectedApp(platform);
|
|
105
137
|
|
|
@@ -125,33 +157,40 @@ export const commands = {
|
|
|
125
157
|
}
|
|
126
158
|
return versionName;
|
|
127
159
|
},
|
|
128
|
-
versions: async ({ options }) => {
|
|
160
|
+
versions: async ({ options }: { options: CommandOptions }) => {
|
|
129
161
|
const platform = checkPlatform(
|
|
130
|
-
options.platform ||
|
|
162
|
+
options.platform ||
|
|
163
|
+
((await question('平台(ios/android/harmony):')) as Platform),
|
|
131
164
|
);
|
|
132
165
|
const { appId } = await getSelectedApp(platform);
|
|
133
166
|
await listVersions(appId);
|
|
134
167
|
},
|
|
135
|
-
update: async ({
|
|
168
|
+
update: async ({
|
|
169
|
+
args,
|
|
170
|
+
options,
|
|
171
|
+
}: {
|
|
172
|
+
args: string[];
|
|
173
|
+
options: CommandOptions;
|
|
174
|
+
}) => {
|
|
136
175
|
const platform = checkPlatform(
|
|
137
|
-
options.platform ||
|
|
176
|
+
options.platform ||
|
|
177
|
+
((await question('平台(ios/android/harmony):')) as Platform),
|
|
138
178
|
);
|
|
139
179
|
const { appId } = await getSelectedApp(platform);
|
|
140
180
|
let versionId = options.versionId || (await chooseVersion(appId)).id;
|
|
141
181
|
if (versionId === 'null') {
|
|
142
|
-
versionId =
|
|
182
|
+
versionId = undefined;
|
|
143
183
|
}
|
|
144
184
|
|
|
145
185
|
let pkgId: string | undefined;
|
|
146
186
|
let pkgVersion = options.packageVersion;
|
|
147
187
|
let minPkgVersion = options.minPackageVersion;
|
|
148
188
|
let maxPkgVersion = options.maxPackageVersion;
|
|
149
|
-
let rollout =
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
} else {
|
|
189
|
+
let rollout: number | undefined = undefined;
|
|
190
|
+
|
|
191
|
+
if (options.rollout !== undefined) {
|
|
153
192
|
try {
|
|
154
|
-
rollout = Number.parseInt(rollout);
|
|
193
|
+
rollout = Number.parseInt(options.rollout);
|
|
155
194
|
} catch (e) {
|
|
156
195
|
throw new Error('rollout 必须是 1-100 的整数');
|
|
157
196
|
}
|
|
@@ -159,15 +198,18 @@ export const commands = {
|
|
|
159
198
|
throw new Error('rollout 必须是 1-100 的整数');
|
|
160
199
|
}
|
|
161
200
|
}
|
|
201
|
+
|
|
162
202
|
if (minPkgVersion) {
|
|
163
203
|
minPkgVersion = String(minPkgVersion).trim();
|
|
164
204
|
const { data } = await get(`/app/${appId}/package/list?limit=1000`);
|
|
165
|
-
const pkgs = data.filter((
|
|
205
|
+
const pkgs = data.filter((pkg: Package) =>
|
|
206
|
+
compare(pkg.name, minPkgVersion, '>='),
|
|
207
|
+
);
|
|
166
208
|
if (pkgs.length === 0) {
|
|
167
209
|
throw new Error(`未查询到 >= ${minPkgVersion} 的原生版本`);
|
|
168
210
|
}
|
|
169
|
-
if (rollout) {
|
|
170
|
-
const rolloutConfig = {};
|
|
211
|
+
if (rollout !== undefined) {
|
|
212
|
+
const rolloutConfig: Record<string, number> = {};
|
|
171
213
|
for (const pkg of pkgs) {
|
|
172
214
|
rolloutConfig[pkg.name] = rollout;
|
|
173
215
|
}
|
|
@@ -178,7 +220,7 @@ export const commands = {
|
|
|
178
220
|
});
|
|
179
221
|
console.log(
|
|
180
222
|
`已在原生版本 ${pkgs
|
|
181
|
-
.map((
|
|
223
|
+
.map((pkg: Package) => pkg.name)
|
|
182
224
|
.join(', ')} 上设置灰度发布 ${rollout}% 热更版本 ${versionId}`,
|
|
183
225
|
);
|
|
184
226
|
}
|
|
@@ -196,12 +238,14 @@ export const commands = {
|
|
|
196
238
|
if (maxPkgVersion) {
|
|
197
239
|
maxPkgVersion = String(maxPkgVersion).trim();
|
|
198
240
|
const { data } = await get(`/app/${appId}/package/list?limit=1000`);
|
|
199
|
-
const pkgs = data.filter((
|
|
241
|
+
const pkgs = data.filter((pkg: Package) =>
|
|
242
|
+
compare(pkg.name, maxPkgVersion, '<='),
|
|
243
|
+
);
|
|
200
244
|
if (pkgs.length === 0) {
|
|
201
245
|
throw new Error(`未查询到 <= ${maxPkgVersion} 的原生版本`);
|
|
202
246
|
}
|
|
203
|
-
if (rollout) {
|
|
204
|
-
const rolloutConfig = {};
|
|
247
|
+
if (rollout !== undefined) {
|
|
248
|
+
const rolloutConfig: Record<string, number> = {};
|
|
205
249
|
for (const pkg of pkgs) {
|
|
206
250
|
rolloutConfig[pkg.name] = rollout;
|
|
207
251
|
}
|
|
@@ -212,7 +256,7 @@ export const commands = {
|
|
|
212
256
|
});
|
|
213
257
|
console.log(
|
|
214
258
|
`已在原生版本 ${pkgs
|
|
215
|
-
.map((
|
|
259
|
+
.map((pkg: Package) => pkg.name)
|
|
216
260
|
.join(', ')} 上设置灰度发布 ${rollout}% 热更版本 ${versionId}`,
|
|
217
261
|
);
|
|
218
262
|
}
|
|
@@ -231,7 +275,7 @@ export const commands = {
|
|
|
231
275
|
const { data } = await get(`/app/${appId}/package/list?limit=1000`);
|
|
232
276
|
if (pkgVersion) {
|
|
233
277
|
pkgVersion = pkgVersion.trim();
|
|
234
|
-
const pkg = data.find((
|
|
278
|
+
const pkg = data.find((pkg: Package) => pkg.name === pkgVersion);
|
|
235
279
|
if (pkg) {
|
|
236
280
|
pkgId = pkg.id;
|
|
237
281
|
} else {
|
|
@@ -247,13 +291,13 @@ export const commands = {
|
|
|
247
291
|
}
|
|
248
292
|
|
|
249
293
|
if (!pkgVersion) {
|
|
250
|
-
const pkg = data.find((
|
|
294
|
+
const pkg = data.find((pkg: Package) => String(pkg.id) === String(pkgId));
|
|
251
295
|
if (pkg) {
|
|
252
296
|
pkgVersion = pkg.name;
|
|
253
297
|
}
|
|
254
298
|
}
|
|
255
299
|
|
|
256
|
-
if (rollout) {
|
|
300
|
+
if (rollout !== undefined && pkgVersion) {
|
|
257
301
|
await put(`/app/${appId}/version/${versionId}`, {
|
|
258
302
|
config: {
|
|
259
303
|
rollout: {
|
|
@@ -265,24 +309,35 @@ export const commands = {
|
|
|
265
309
|
`已将在原生版本 ${pkgVersion} (id: ${pkgId}) 上设置灰度发布 ${rollout}% 热更版本 ${versionId} `,
|
|
266
310
|
);
|
|
267
311
|
}
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
312
|
+
|
|
313
|
+
if (versionId !== undefined) {
|
|
314
|
+
await put(`/app/${appId}/package/${pkgId}`, {
|
|
315
|
+
versionId,
|
|
316
|
+
});
|
|
317
|
+
console.log(
|
|
318
|
+
`已将热更版本 ${versionId} 绑定到原生版本 ${pkgVersion} (id: ${pkgId})`,
|
|
319
|
+
);
|
|
320
|
+
}
|
|
274
321
|
},
|
|
275
|
-
updateVersionInfo: async ({
|
|
322
|
+
updateVersionInfo: async ({
|
|
323
|
+
args,
|
|
324
|
+
options,
|
|
325
|
+
}: {
|
|
326
|
+
args: string[];
|
|
327
|
+
options: CommandOptions;
|
|
328
|
+
}) => {
|
|
276
329
|
const platform = checkPlatform(
|
|
277
|
-
options.platform ||
|
|
330
|
+
options.platform ||
|
|
331
|
+
((await question('平台(ios/android/harmony):')) as Platform),
|
|
278
332
|
);
|
|
279
333
|
const { appId } = await getSelectedApp(platform);
|
|
280
334
|
const versionId = options.versionId || (await chooseVersion(appId)).id;
|
|
281
335
|
|
|
282
|
-
const updateParams = {};
|
|
283
|
-
options.name
|
|
284
|
-
options.description
|
|
285
|
-
options.metaInfo
|
|
336
|
+
const updateParams: Record<string, string> = {};
|
|
337
|
+
if (options.name) updateParams.name = options.name;
|
|
338
|
+
if (options.description) updateParams.description = options.description;
|
|
339
|
+
if (options.metaInfo) updateParams.metaInfo = options.metaInfo;
|
|
340
|
+
|
|
286
341
|
await put(`/app/${appId}/version/${versionId}`, updateParams);
|
|
287
342
|
console.log('操作成功');
|
|
288
343
|
},
|