@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.
Files changed (2) hide show
  1. package/lib/cli.js +171 -100
  2. 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.511af9";
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
- const PATCH_ID$3 = 'vite/add-validate@0.0.14';
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 VALIDATE_LINE = 'validate = ["bash", "./scripts/validate.sh"]';
6157
-
6158
- const REQUIRED_SCRIPTS = {
6159
- 'ts-check': 'tsc -p tsconfig.json',
6160
- 'lint:build': 'eslint . --quiet',
6161
- validate: "pnpm run --parallel '/^(ts-check|lint:build)$/'",
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 getTemplateValidateScriptPath = () =>
6169
- path.join(getTemplatesDir(), 'vite', 'scripts', 'validate.sh');
6170
-
6171
- const getProjectValidateScriptPath = (projectFolder) =>
6172
- path.join(projectFolder, VALIDATE_SCRIPT_FILE);
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 readTemplateValidateScriptContent = async () =>
6175
- fs$1.readFile(getTemplateValidateScriptPath(), 'utf-8');
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(REQUIRED_SCRIPTS)) {
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 (projectFolder) => {
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 runLinePattern = /^(run\s*=\s*\[.*\])\s*$/m;
6197
- const match = content.match(runLinePattern);
6198
- if (!match) {
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
- const runLine = match[1];
6203
- const nextContent = content.replace(
6204
- runLinePattern,
6205
- `${runLine}\n${VALIDATE_LINE}`,
6206
- );
6250
+ if (devEnd === -1) {
6251
+ devEnd = lines.length;
6252
+ }
6207
6253
 
6208
- await fs$1.writeFile(cozePath, nextContent, 'utf-8');
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 = getProjectValidateScriptPath(projectFolder);
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, 'scripts');
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 templateContent = await readTemplateValidateScriptContent();
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 missingScripts = getMissingScripts(packageJson.scripts);
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 patchViteAddValidate = {
6259
- id: PATCH_ID$3,
6260
- template: 'vite',
6261
- disabled: byFlag('coding.arch.patch_vite_validate'),
6262
- operations: [
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
- const cozeUpdated = await addValidateToCoze(context.projectFolder);
6299
- if (!cozeUpdated) {
6300
- return {
6301
- applied: false,
6302
- patchId: PATCH_ID$3,
6303
- message:
6304
- 'Failed to add validate to .coze (run line not found), skipping',
6305
- };
6306
- }
6307
- logger.info('Patched .coze: added validate command');
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
- const scriptCreated = await createValidateScript(context.projectFolder);
6310
- if (scriptCreated) {
6311
- logger.info('Created scripts/validate.sh');
6312
- } else {
6313
- logger.info('scripts/validate.sh already exists, skipping');
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
- const scriptsUpdated = await addMissingScriptsToPackageJson(
6317
- context.projectFolder,
6318
- );
6319
- if (scriptsUpdated) {
6320
- logger.info('Patched package.json: added missing scripts');
6321
- } else {
6322
- logger.info('package.json scripts already complete, skipping');
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
- return {
6326
- applied: true,
6327
- patchId: PATCH_ID$3,
6328
- message: 'Added validate support to vite project',
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 = (
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coze-arch/cli",
3
- "version": "0.0.15-alpha.511af9",
3
+ "version": "0.0.15-alpha.73e572",
4
4
  "private": false,
5
5
  "description": "coze coding devtools cli",
6
6
  "license": "MIT",