@coze-arch/cli 0.0.15-alpha.511af9 → 0.0.15-alpha.73e572
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/cli.js +171 -100
- package/package.json +1 -1
package/lib/cli.js
CHANGED
|
@@ -2107,7 +2107,7 @@ const EventBuilder = {
|
|
|
2107
2107
|
};
|
|
2108
2108
|
|
|
2109
2109
|
var name = "@coze-arch/cli";
|
|
2110
|
-
var version = "0.0.15-alpha.
|
|
2110
|
+
var version = "0.0.15-alpha.73e572";
|
|
2111
2111
|
var description = "coze coding devtools cli";
|
|
2112
2112
|
var license = "MIT";
|
|
2113
2113
|
var author = "fanwenjie.fe@bytedance.com";
|
|
@@ -6148,40 +6148,72 @@ const byFlag = (flag) => {
|
|
|
6148
6148
|
};
|
|
6149
6149
|
|
|
6150
6150
|
function _optionalChain$4(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
6151
|
-
|
|
6151
|
+
|
|
6152
|
+
|
|
6152
6153
|
const COZE_FILE = '.coze';
|
|
6153
|
-
const VALIDATE_SCRIPT_FILE = 'scripts/validate.sh';
|
|
6154
6154
|
const PACKAGE_JSON_FILE$1 = 'package.json';
|
|
6155
6155
|
|
|
6156
|
-
const
|
|
6157
|
-
|
|
6158
|
-
|
|
6159
|
-
'
|
|
6160
|
-
'lint:build'
|
|
6161
|
-
|
|
6156
|
+
const VALIDATE_RELATED_SCRIPTS = {
|
|
6157
|
+
nextjs: ['validate', 'ts-check', 'lint:build'],
|
|
6158
|
+
vite: ['validate', 'ts-check', 'lint:build'],
|
|
6159
|
+
'nuxt-vue': ['validate', 'ts-check', 'lint:build'],
|
|
6160
|
+
taro: ['validate', 'lint:build', 'tsc'],
|
|
6161
|
+
expo: ['validate', 'lint:client', 'lint:server'],
|
|
6162
6162
|
};
|
|
6163
6163
|
|
|
6164
6164
|
|
|
6165
6165
|
|
|
6166
6166
|
|
|
6167
6167
|
|
|
6168
|
-
const
|
|
6169
|
-
|
|
6170
|
-
|
|
6171
|
-
|
|
6172
|
-
|
|
6168
|
+
const FG_KEY_MAP = {
|
|
6169
|
+
nextjs: 'coding.arch.patch_nextjs_validate',
|
|
6170
|
+
vite: 'coding.arch.patch_vite_validate',
|
|
6171
|
+
'nuxt-vue': 'coding.arch.patch_nuxt_vue_validate',
|
|
6172
|
+
taro: 'coding.arch.patch_taro_validate',
|
|
6173
|
+
expo: 'coding.arch.patch_expo_validate',
|
|
6174
|
+
};
|
|
6173
6175
|
|
|
6174
|
-
const
|
|
6175
|
-
|
|
6176
|
+
const VALIDATE_SCRIPT_MAP = {
|
|
6177
|
+
nextjs: 'scripts/validate.sh',
|
|
6178
|
+
vite: 'scripts/validate.sh',
|
|
6179
|
+
'nuxt-vue': 'scripts/validate.sh',
|
|
6180
|
+
taro: '.cozeproj/scripts/validate.sh',
|
|
6181
|
+
expo: '.cozeproj/scripts/validate.sh',
|
|
6182
|
+
};
|
|
6176
6183
|
|
|
6177
6184
|
const hasValidateInCoze = (context) =>
|
|
6178
6185
|
_optionalChain$4([context, 'access', _ => _.cozeConfig, 'optionalAccess', _2 => _2.dev, 'optionalAccess', _3 => _3.validate]) !== undefined;
|
|
6179
6186
|
|
|
6187
|
+
const getTemplateScripts = async (
|
|
6188
|
+
template,
|
|
6189
|
+
) => {
|
|
6190
|
+
const templatePackageJsonPath = path.join(
|
|
6191
|
+
getTemplatesDir(),
|
|
6192
|
+
template,
|
|
6193
|
+
PACKAGE_JSON_FILE$1,
|
|
6194
|
+
);
|
|
6195
|
+
const content = await fs$1.readFile(templatePackageJsonPath, 'utf-8');
|
|
6196
|
+
const templatePackageJson = safeJsonParse(content, null);
|
|
6197
|
+
if (!_optionalChain$4([templatePackageJson, 'optionalAccess', _4 => _4.scripts])) {
|
|
6198
|
+
return {};
|
|
6199
|
+
}
|
|
6200
|
+
|
|
6201
|
+
const relatedKeys = VALIDATE_RELATED_SCRIPTS[template];
|
|
6202
|
+
const result = {};
|
|
6203
|
+
for (const key of relatedKeys) {
|
|
6204
|
+
if (templatePackageJson.scripts[key] !== undefined) {
|
|
6205
|
+
result[key] = templatePackageJson.scripts[key];
|
|
6206
|
+
}
|
|
6207
|
+
}
|
|
6208
|
+
return result;
|
|
6209
|
+
};
|
|
6210
|
+
|
|
6180
6211
|
const getMissingScripts = (
|
|
6181
6212
|
scripts,
|
|
6213
|
+
templateScripts,
|
|
6182
6214
|
) => {
|
|
6183
6215
|
const missing = {};
|
|
6184
|
-
for (const [key, value] of Object.entries(
|
|
6216
|
+
for (const [key, value] of Object.entries(templateScripts)) {
|
|
6185
6217
|
if (!scripts || scripts[key] === undefined) {
|
|
6186
6218
|
missing[key] = value;
|
|
6187
6219
|
}
|
|
@@ -6189,46 +6221,69 @@ const getMissingScripts = (
|
|
|
6189
6221
|
return missing;
|
|
6190
6222
|
};
|
|
6191
6223
|
|
|
6192
|
-
const addValidateToCoze = async (
|
|
6224
|
+
const addValidateToCoze = async (
|
|
6225
|
+
projectFolder,
|
|
6226
|
+
validateScriptPath,
|
|
6227
|
+
) => {
|
|
6193
6228
|
const cozePath = path.join(projectFolder, COZE_FILE);
|
|
6194
6229
|
const content = await fs$1.readFile(cozePath, 'utf-8');
|
|
6195
6230
|
|
|
6196
|
-
const
|
|
6197
|
-
|
|
6198
|
-
|
|
6231
|
+
const validateLine = `validate = ["bash", "${validateScriptPath}"]`;
|
|
6232
|
+
|
|
6233
|
+
const lines = content.split('\n');
|
|
6234
|
+
let devStart = -1;
|
|
6235
|
+
let devEnd = -1;
|
|
6236
|
+
|
|
6237
|
+
for (let i = 0; i < lines.length; i++) {
|
|
6238
|
+
if (lines[i].trim() === '[dev]') {
|
|
6239
|
+
devStart = i;
|
|
6240
|
+
} else if (devStart !== -1 && lines[i].startsWith('[')) {
|
|
6241
|
+
devEnd = i;
|
|
6242
|
+
break;
|
|
6243
|
+
}
|
|
6244
|
+
}
|
|
6245
|
+
|
|
6246
|
+
if (devStart === -1) {
|
|
6199
6247
|
return false;
|
|
6200
6248
|
}
|
|
6201
6249
|
|
|
6202
|
-
|
|
6203
|
-
|
|
6204
|
-
|
|
6205
|
-
`${runLine}\n${VALIDATE_LINE}`,
|
|
6206
|
-
);
|
|
6250
|
+
if (devEnd === -1) {
|
|
6251
|
+
devEnd = lines.length;
|
|
6252
|
+
}
|
|
6207
6253
|
|
|
6208
|
-
|
|
6254
|
+
lines.splice(devEnd, 0, validateLine);
|
|
6255
|
+
await fs$1.writeFile(cozePath, lines.join('\n'), 'utf-8');
|
|
6209
6256
|
return true;
|
|
6210
6257
|
};
|
|
6211
6258
|
|
|
6212
6259
|
const createValidateScript = async (
|
|
6213
6260
|
projectFolder,
|
|
6261
|
+
template,
|
|
6262
|
+
validateScriptFile,
|
|
6214
6263
|
) => {
|
|
6215
|
-
const targetPath =
|
|
6264
|
+
const targetPath = path.join(projectFolder, validateScriptFile);
|
|
6216
6265
|
if (await isFileExists(targetPath)) {
|
|
6217
6266
|
return false;
|
|
6218
6267
|
}
|
|
6219
6268
|
|
|
6220
|
-
const scriptsDir = path.join(projectFolder, '
|
|
6269
|
+
const scriptsDir = path.join(projectFolder, validateScriptFile.split('/').slice(0, -1).join('/'));
|
|
6221
6270
|
if (!(await isFileExists(scriptsDir))) {
|
|
6222
6271
|
await fs$1.mkdir(scriptsDir, { recursive: true });
|
|
6223
6272
|
}
|
|
6224
6273
|
|
|
6225
|
-
const
|
|
6274
|
+
const templateScriptPath = path.join(
|
|
6275
|
+
getTemplatesDir(),
|
|
6276
|
+
template,
|
|
6277
|
+
validateScriptFile,
|
|
6278
|
+
);
|
|
6279
|
+
const templateContent = await fs$1.readFile(templateScriptPath, 'utf-8');
|
|
6226
6280
|
await fs$1.writeFile(targetPath, templateContent, 'utf-8');
|
|
6227
6281
|
return true;
|
|
6228
6282
|
};
|
|
6229
6283
|
|
|
6230
6284
|
const addMissingScriptsToPackageJson = async (
|
|
6231
6285
|
projectFolder,
|
|
6286
|
+
template,
|
|
6232
6287
|
) => {
|
|
6233
6288
|
const packageJsonPath = path.join(projectFolder, PACKAGE_JSON_FILE$1);
|
|
6234
6289
|
if (!(await isFileExists(packageJsonPath))) {
|
|
@@ -6241,7 +6296,8 @@ const addMissingScriptsToPackageJson = async (
|
|
|
6241
6296
|
return false;
|
|
6242
6297
|
}
|
|
6243
6298
|
|
|
6244
|
-
const
|
|
6299
|
+
const templateScripts = await getTemplateScripts(template);
|
|
6300
|
+
const missingScripts = getMissingScripts(packageJson.scripts, templateScripts);
|
|
6245
6301
|
if (Object.keys(missingScripts).length === 0) {
|
|
6246
6302
|
return false;
|
|
6247
6303
|
}
|
|
@@ -6255,81 +6311,92 @@ const addMissingScriptsToPackageJson = async (
|
|
|
6255
6311
|
return true;
|
|
6256
6312
|
};
|
|
6257
6313
|
|
|
6258
|
-
const
|
|
6259
|
-
|
|
6260
|
-
template
|
|
6261
|
-
|
|
6262
|
-
|
|
6263
|
-
{
|
|
6264
|
-
kind: 'file-patch',
|
|
6265
|
-
file: COZE_FILE,
|
|
6266
|
-
description: '在 [dev] 下添加 validate 命令',
|
|
6267
|
-
},
|
|
6268
|
-
{
|
|
6269
|
-
kind: 'create-file',
|
|
6270
|
-
file: VALIDATE_SCRIPT_FILE,
|
|
6271
|
-
description: '创建 validate 脚本',
|
|
6272
|
-
},
|
|
6273
|
-
{
|
|
6274
|
-
kind: 'file-patch',
|
|
6275
|
-
file: PACKAGE_JSON_FILE$1,
|
|
6276
|
-
description: '补齐 validate/ts-check/lint:build 脚本',
|
|
6277
|
-
},
|
|
6278
|
-
],
|
|
6279
|
-
shouldApply: context =>
|
|
6280
|
-
context.template === 'vite' && !hasValidateInCoze(context),
|
|
6281
|
-
apply: async (context) => {
|
|
6282
|
-
if (context.template !== 'vite') {
|
|
6283
|
-
return {
|
|
6284
|
-
applied: false,
|
|
6285
|
-
patchId: PATCH_ID$3,
|
|
6286
|
-
message: 'Only applies to vite projects, skipping',
|
|
6287
|
-
};
|
|
6288
|
-
}
|
|
6289
|
-
|
|
6290
|
-
if (hasValidateInCoze(context)) {
|
|
6291
|
-
return {
|
|
6292
|
-
applied: false,
|
|
6293
|
-
patchId: PATCH_ID$3,
|
|
6294
|
-
message: '.coze already has validate config, skipping',
|
|
6295
|
-
};
|
|
6296
|
-
}
|
|
6314
|
+
const createAddValidatePatch = (template) => {
|
|
6315
|
+
const patchId = `${template}/add-validate@0.0.1`;
|
|
6316
|
+
const validateScriptFile = VALIDATE_SCRIPT_MAP[template];
|
|
6317
|
+
const validateScriptPath = template === 'taro' || template === 'expo'
|
|
6318
|
+
? validateScriptFile
|
|
6319
|
+
: `./${validateScriptFile}`;
|
|
6297
6320
|
|
|
6298
|
-
|
|
6299
|
-
|
|
6300
|
-
|
|
6301
|
-
|
|
6302
|
-
|
|
6303
|
-
|
|
6304
|
-
|
|
6305
|
-
|
|
6306
|
-
|
|
6307
|
-
|
|
6321
|
+
return {
|
|
6322
|
+
id: patchId,
|
|
6323
|
+
template,
|
|
6324
|
+
disabled: byFlag(FG_KEY_MAP[template]),
|
|
6325
|
+
operations: [
|
|
6326
|
+
{
|
|
6327
|
+
kind: 'file-patch',
|
|
6328
|
+
file: COZE_FILE,
|
|
6329
|
+
description: '在 [dev] 下添加 validate 命令',
|
|
6330
|
+
},
|
|
6331
|
+
{
|
|
6332
|
+
kind: 'create-file',
|
|
6333
|
+
file: validateScriptFile,
|
|
6334
|
+
description: '创建 validate 脚本',
|
|
6335
|
+
},
|
|
6336
|
+
{
|
|
6337
|
+
kind: 'file-patch',
|
|
6338
|
+
file: PACKAGE_JSON_FILE$1,
|
|
6339
|
+
description: '补齐 validate/ts-check/lint:build 脚本',
|
|
6340
|
+
},
|
|
6341
|
+
],
|
|
6342
|
+
shouldApply: context => !hasValidateInCoze(context),
|
|
6343
|
+
apply: async (context) => {
|
|
6344
|
+
const cozeUpdated = await addValidateToCoze(
|
|
6345
|
+
context.projectFolder,
|
|
6346
|
+
validateScriptPath,
|
|
6347
|
+
);
|
|
6348
|
+
if (!cozeUpdated) {
|
|
6349
|
+
return {
|
|
6350
|
+
applied: false,
|
|
6351
|
+
patchId,
|
|
6352
|
+
message:
|
|
6353
|
+
'Failed to add validate to .coze ([dev] section not found), skipping',
|
|
6354
|
+
};
|
|
6355
|
+
}
|
|
6356
|
+
if (context.cozeConfig) {
|
|
6357
|
+
context.cozeConfig.dev = {
|
|
6358
|
+
...context.cozeConfig.dev,
|
|
6359
|
+
validate: ['bash', validateScriptPath],
|
|
6360
|
+
};
|
|
6361
|
+
}
|
|
6362
|
+
logger.info('Patched .coze: added validate command');
|
|
6308
6363
|
|
|
6309
|
-
|
|
6310
|
-
|
|
6311
|
-
|
|
6312
|
-
|
|
6313
|
-
|
|
6314
|
-
|
|
6364
|
+
const scriptCreated = await createValidateScript(
|
|
6365
|
+
context.projectFolder,
|
|
6366
|
+
template,
|
|
6367
|
+
validateScriptFile,
|
|
6368
|
+
);
|
|
6369
|
+
if (scriptCreated) {
|
|
6370
|
+
logger.info(`Created ${validateScriptFile}`);
|
|
6371
|
+
} else {
|
|
6372
|
+
logger.info(`${validateScriptFile} already exists, skipping`);
|
|
6373
|
+
}
|
|
6315
6374
|
|
|
6316
|
-
|
|
6317
|
-
|
|
6318
|
-
|
|
6319
|
-
|
|
6320
|
-
|
|
6321
|
-
|
|
6322
|
-
|
|
6323
|
-
|
|
6375
|
+
const scriptsUpdated = await addMissingScriptsToPackageJson(
|
|
6376
|
+
context.projectFolder,
|
|
6377
|
+
template,
|
|
6378
|
+
);
|
|
6379
|
+
if (scriptsUpdated) {
|
|
6380
|
+
logger.info('Patched package.json: added missing scripts');
|
|
6381
|
+
} else {
|
|
6382
|
+
logger.info('package.json scripts already complete, skipping');
|
|
6383
|
+
}
|
|
6324
6384
|
|
|
6325
|
-
|
|
6326
|
-
|
|
6327
|
-
|
|
6328
|
-
|
|
6329
|
-
|
|
6330
|
-
|
|
6385
|
+
return {
|
|
6386
|
+
applied: true,
|
|
6387
|
+
patchId,
|
|
6388
|
+
message: `Added validate support to ${template} project`,
|
|
6389
|
+
};
|
|
6390
|
+
},
|
|
6391
|
+
};
|
|
6331
6392
|
};
|
|
6332
6393
|
|
|
6394
|
+
const patchNextjsAddValidate = createAddValidatePatch('nextjs');
|
|
6395
|
+
const patchViteAddValidate = createAddValidatePatch('vite');
|
|
6396
|
+
const patchNuxtVueAddValidate = createAddValidatePatch('nuxt-vue');
|
|
6397
|
+
const patchTaroAddValidate = createAddValidatePatch('taro');
|
|
6398
|
+
const patchExpoAddValidate = createAddValidatePatch('expo');
|
|
6399
|
+
|
|
6333
6400
|
function _optionalChain$3(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
6334
6401
|
const PATCH_ID$2 = 'taro/update-pack-script-for-tt-build@0.0.13';
|
|
6335
6402
|
const PACKAGE_JSON_FILE = 'package.json';
|
|
@@ -6756,7 +6823,11 @@ const patches = [
|
|
|
6756
6823
|
patchNextOutputTracingRoot,
|
|
6757
6824
|
patchTaroAgentsMd,
|
|
6758
6825
|
patchTaroPackScript,
|
|
6826
|
+
patchNextjsAddValidate,
|
|
6759
6827
|
patchViteAddValidate,
|
|
6828
|
+
patchNuxtVueAddValidate,
|
|
6829
|
+
patchTaroAddValidate,
|
|
6830
|
+
patchExpoAddValidate,
|
|
6760
6831
|
] ;
|
|
6761
6832
|
|
|
6762
6833
|
const getTemplatePatches = (
|