project-auto-wizard 0.15.0 → 0.15.1

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 (59) hide show
  1. package/README.ja.md +1 -1
  2. package/README.ko.md +1 -1
  3. package/README.md +2 -2
  4. package/README.zh-CN.md +1 -1
  5. package/package.json +1 -1
  6. package/payload/config/breaking-changes.json +31 -5
  7. package/payload/config/wizard-prompts.yml +0 -4
  8. package/payload/scripts/messages.py +156 -26
  9. package/payload/scripts/version_manager.py +69 -40
  10. package/payload/version.yml.template +2 -2
  11. package/payload/workflows/common/PROJECT-COMMON-AI-PR-SUMMARY.yaml +3 -0
  12. package/payload/workflows/common/PROJECT-COMMON-AUTO-CHANGELOG-CONTROL.yaml +15 -1
  13. package/payload/workflows/common/PROJECT-COMMON-README-VERSION-UPDATE.yaml +61 -12
  14. package/payload/workflows/common/PROJECT-COMMON-RELEASE-PUBLISH.yaml +46 -10
  15. package/payload/workflows/common/PROJECT-COMMON-VERSION-CONTROL.yaml +40 -11
  16. package/payload/workflows/flutter/PROJECT-FLUTTER-ANDROID-FIREBASE-CICD.yaml +24 -8
  17. package/payload/workflows/flutter/PROJECT-FLUTTER-ANDROID-PLAYSTORE-CICD.yaml +29 -10
  18. package/payload/workflows/flutter/PROJECT-FLUTTER-ANDROID-SELFHOSTED-CICD.yaml +57 -23
  19. package/payload/workflows/flutter/PROJECT-FLUTTER-ANDROID-TEST-APK.yaml +155 -72
  20. package/payload/workflows/flutter/PROJECT-FLUTTER-APP-BUILD-TRIGGER.yaml +49 -20
  21. package/payload/workflows/flutter/PROJECT-FLUTTER-CI.yaml +162 -62
  22. package/payload/workflows/flutter/PROJECT-FLUTTER-IOS-TEST-TESTFLIGHT.yaml +184 -87
  23. package/payload/workflows/flutter/PROJECT-FLUTTER-IOS-TESTFLIGHT.yaml +38 -15
  24. package/payload/workflows/go/PROJECT-GO-CI.yaml +14 -5
  25. package/payload/workflows/go/PROJECT-GO-PR-PREVIEW.yaml +375 -120
  26. package/payload/workflows/go/PROJECT-GO-SIMPLE-CICD.yaml +9 -4
  27. package/payload/workflows/python/PROJECT-PYTHON-CI.yaml +12 -4
  28. package/payload/workflows/python/PROJECT-PYTHON-PR-PREVIEW.yaml +375 -120
  29. package/payload/workflows/python/PROJECT-PYTHON-SIMPLE-CICD.yaml +9 -4
  30. package/payload/workflows/react/PROJECT-REACT-CI.yaml +38 -9
  31. package/payload/workflows/react/PROJECT-REACT-CICD.yaml +19 -5
  32. package/payload/workflows/spring/PROJECT-SPRING-CI.yml +71 -35
  33. package/payload/workflows/spring/server-deploy/PROJECT-SPRING-NONSTOP-NGINX-CICD.yaml +9 -6
  34. package/payload/workflows/spring/server-deploy/PROJECT-SPRING-NONSTOP-TRAEFIK-CICD.yaml +7 -4
  35. package/payload/workflows/spring/server-deploy/PROJECT-SPRING-PR-PREVIEW.yaml +425 -144
  36. package/payload/workflows/spring/server-deploy/PROJECT-SPRING-SIMPLE-CICD.yaml +7 -4
  37. package/src/cli/args.js +17 -7
  38. package/src/commands/doctor.js +11 -0
  39. package/src/commands/dry-run.js +9 -1
  40. package/src/commands/full.js +5 -2
  41. package/src/commands/interactive.js +4 -1
  42. package/src/commands/status.js +14 -1
  43. package/src/core/copy/simple.js +31 -0
  44. package/src/core/copy/workflows.js +2 -2
  45. package/src/core/deploy-style.js +1 -1
  46. package/src/core/detect.js +3 -2
  47. package/src/core/types.js +15 -8
  48. package/src/core/version-yml.js +52 -6
  49. package/src/i18n/catalog/en/cli.js +1 -0
  50. package/src/i18n/catalog/en/commands.js +8 -0
  51. package/src/i18n/catalog/en/core2.js +3 -0
  52. package/src/i18n/catalog/ko/cli.js +1 -0
  53. package/src/i18n/catalog/ko/commands.js +8 -0
  54. package/src/i18n/catalog/ko/core2.js +3 -0
  55. package/src/index.js +4 -1
  56. package/src/ui/env-plan.js +1 -1
  57. package/src/ui/prompts.js +7 -3
  58. package/payload/workflows/next/PROJECT-NEXT-CI.yaml +0 -241
  59. package/payload/workflows/next/PROJECT-NEXT-CICD.yaml +0 -330
@@ -60,7 +60,9 @@ jobs:
60
60
  sparse-checkout-cone-mode: false
61
61
 
62
62
  - name: Load messages
63
- run: echo "PAW_MSG=$(python3 "$GITHUB_WORKSPACE/.github/scripts/messages.py" dump app_trigger.)" >> "$GITHUB_ENV"
63
+ run: |
64
+ [ -f "$GITHUB_WORKSPACE/.github/scripts/messages.py" ] || { echo "::error::messages.py is missing; rerun \`npx project-auto-wizard --mode full --force\`"; exit 1; }
65
+ echo "PAW_MSG=$(python3 "$GITHUB_WORKSPACE/.github/scripts/messages.py" dump app_trigger.)" >> "$GITHUB_ENV"
64
66
 
65
67
  - name: Add 👀 reaction to the comment
66
68
  uses: actions/github-script@v9
@@ -265,13 +267,15 @@ jobs:
265
267
  - name: Post an error comment when the branch info is not found
266
268
  if: steps.source_info.outputs.found != 'true'
267
269
  uses: actions/github-script@v9
270
+ env:
271
+ PAW_IN_STEPS_SOURCE_INFO_OUTPUTS_ERRORMESSAGE: ${{ steps.source_info.outputs.errorMessage }}
268
272
  with:
269
273
  github-token: ${{ secrets.GITHUB_TOKEN }}
270
274
  script: |
271
275
  const M = JSON.parse(process.env.PAW_MSG);
272
276
  const msg = (k, p = {}) => M[k].replace(/\{(\w+)\}/g, (s, n) => (n in p ? p[n] : s));
273
277
  const issueNumber = context.payload.issue.number;
274
- const errorMessage = '${{ steps.source_info.outputs.errorMessage }}';
278
+ const errorMessage = process.env.PAW_IN_STEPS_SOURCE_INFO_OUTPUTS_ERRORMESSAGE;
275
279
 
276
280
  const body = msg('app_trigger.trigger_failed_body', { error: errorMessage });
277
281
 
@@ -288,13 +292,16 @@ jobs:
288
292
  id: check_branch
289
293
  if: steps.source_info.outputs.found == 'true'
290
294
  uses: actions/github-script@v9
295
+ env:
296
+ PAW_IN_GITHUB_RUN_ID: ${{ github.run_id }}
297
+ PAW_IN_STEPS_SOURCE_INFO_OUTPUTS_BRANCHNAME: ${{ steps.source_info.outputs.branchName }}
291
298
  with:
292
299
  github-token: ${{ secrets.GITHUB_TOKEN }}
293
300
  script: |
294
301
  const M = JSON.parse(process.env.PAW_MSG);
295
302
  const msg = (k, p = {}) => M[k].replace(/\{(\w+)\}/g, (s, n) => (n in p ? p[n] : s));
296
- const branchName = '${{ steps.source_info.outputs.branchName }}';
297
- const runId = '${{ github.run_id }}';
303
+ const branchName = process.env.PAW_IN_STEPS_SOURCE_INFO_OUTPUTS_BRANCHNAME;
304
+ const runId = process.env.PAW_IN_GITHUB_RUN_ID;
298
305
  const runUrl = `https://github.com/${context.repo.owner}/${context.repo.repo}/actions/runs/${runId}`;
299
306
 
300
307
  console.log(msg('app_trigger.branch_check_log', { branch: branchName }));
@@ -322,14 +329,17 @@ jobs:
322
329
  - name: Post an error comment when the branch does not exist
323
330
  if: steps.source_info.outputs.found == 'true' && steps.check_branch.outputs.exists == 'false'
324
331
  uses: actions/github-script@v9
332
+ env:
333
+ PAW_IN_GITHUB_RUN_ID: ${{ github.run_id }}
334
+ PAW_IN_STEPS_SOURCE_INFO_OUTPUTS_BRANCHNAME: ${{ steps.source_info.outputs.branchName }}
325
335
  with:
326
336
  github-token: ${{ secrets.GITHUB_TOKEN }}
327
337
  script: |
328
338
  const M = JSON.parse(process.env.PAW_MSG);
329
339
  const msg = (k, p = {}) => M[k].replace(/\{(\w+)\}/g, (s, n) => (n in p ? p[n] : s));
330
340
  const issueNumber = context.payload.issue.number;
331
- const branchName = '${{ steps.source_info.outputs.branchName }}';
332
- const runId = '${{ github.run_id }}';
341
+ const branchName = process.env.PAW_IN_STEPS_SOURCE_INFO_OUTPUTS_BRANCHNAME;
342
+ const runId = process.env.PAW_IN_GITHUB_RUN_ID;
333
343
  const runUrl = `https://github.com/${context.repo.owner}/${context.repo.repo}/actions/runs/${runId}`;
334
344
 
335
345
  const body = [
@@ -361,14 +371,18 @@ jobs:
361
371
  id: build_number_calc
362
372
  if: steps.source_info.outputs.found == 'true' && steps.check_branch.outputs.exists == 'true'
363
373
  uses: actions/github-script@v9
374
+ env:
375
+ PAW_IN_STEPS_BUILD_TYPE_OUTPUTS_BUILDTYPE: ${{ steps.build_type.outputs.buildType }}
376
+ PAW_IN_STEPS_SOURCE_INFO_OUTPUTS_SOURCENUMBER: ${{ steps.source_info.outputs.sourceNumber }}
377
+ PAW_IN_STEPS_SOURCE_INFO_OUTPUTS_SOURCETYPE: ${{ steps.source_info.outputs.sourceType }}
364
378
  with:
365
379
  github-token: ${{ secrets.GITHUB_TOKEN }}
366
380
  script: |
367
381
  const M = JSON.parse(process.env.PAW_MSG);
368
382
  const msg = (k, p = {}) => M[k].replace(/\{(\w+)\}/g, (s, n) => (n in p ? p[n] : s));
369
- const sourceNumber = parseInt('${{ steps.source_info.outputs.sourceNumber }}');
370
- const sourceType = '${{ steps.source_info.outputs.sourceType }}';
371
- const buildType = '${{ steps.build_type.outputs.buildType }}';
383
+ const sourceNumber = parseInt(process.env.PAW_IN_STEPS_SOURCE_INFO_OUTPUTS_SOURCENUMBER);
384
+ const sourceType = process.env.PAW_IN_STEPS_SOURCE_INFO_OUTPUTS_SOURCETYPE;
385
+ const buildType = process.env.PAW_IN_STEPS_BUILD_TYPE_OUTPUTS_BUILDTYPE;
372
386
 
373
387
  console.log(msg('app_trigger.count_lookup', { type: sourceType, number: sourceNumber }));
374
388
  console.log(msg('app_trigger.count_build_type', { type: buildType }));
@@ -436,16 +450,22 @@ jobs:
436
450
  steps.check_branch.outputs.exists == 'true' &&
437
451
  steps.build_type.outputs.buildAndroid == 'true'
438
452
  uses: actions/github-script@v9
453
+ env:
454
+ PAW_IN_STEPS_BUILD_NUMBER_CALC_OUTPUTS_BUILDNUMBER: ${{ steps.build_number_calc.outputs.buildNumber }}
455
+ PAW_IN_STEPS_SOURCE_INFO_OUTPUTS_BRANCHNAME: ${{ steps.source_info.outputs.branchName }}
456
+ PAW_IN_STEPS_SOURCE_INFO_OUTPUTS_RELATEDISSUENUMBER: ${{ steps.source_info.outputs.relatedIssueNumber }}
457
+ PAW_IN_STEPS_SOURCE_INFO_OUTPUTS_SOURCENUMBER: ${{ steps.source_info.outputs.sourceNumber }}
458
+ PAW_IN_STEPS_SOURCE_INFO_OUTPUTS_SOURCETYPE: ${{ steps.source_info.outputs.sourceType }}
439
459
  with:
440
460
  github-token: ${{ secrets.GITHUB_TOKEN }}
441
461
  script: |
442
462
  const M = JSON.parse(process.env.PAW_MSG);
443
463
  const msg = (k, p = {}) => M[k].replace(/\{(\w+)\}/g, (s, n) => (n in p ? p[n] : s));
444
- const sourceType = '${{ steps.source_info.outputs.sourceType }}';
445
- const sourceNumber = '${{ steps.source_info.outputs.sourceNumber }}';
446
- const branchName = '${{ steps.source_info.outputs.branchName }}';
447
- const relatedIssueNumber = '${{ steps.source_info.outputs.relatedIssueNumber }}';
448
- const buildNumber = '${{ steps.build_number_calc.outputs.buildNumber }}';
464
+ const sourceType = process.env.PAW_IN_STEPS_SOURCE_INFO_OUTPUTS_SOURCETYPE;
465
+ const sourceNumber = process.env.PAW_IN_STEPS_SOURCE_INFO_OUTPUTS_SOURCENUMBER;
466
+ const branchName = process.env.PAW_IN_STEPS_SOURCE_INFO_OUTPUTS_BRANCHNAME;
467
+ const relatedIssueNumber = process.env.PAW_IN_STEPS_SOURCE_INFO_OUTPUTS_RELATEDISSUENUMBER;
468
+ const buildNumber = process.env.PAW_IN_STEPS_BUILD_NUMBER_CALC_OUTPUTS_BUILDNUMBER;
449
469
 
450
470
  console.log(msg('app_trigger.dispatch_start', { platform: 'Android' }));
451
471
  console.log(msg('app_trigger.dispatch_source_number', { type: sourceType, number: sourceNumber }));
@@ -476,16 +496,22 @@ jobs:
476
496
  steps.check_branch.outputs.exists == 'true' &&
477
497
  steps.build_type.outputs.buildIos == 'true'
478
498
  uses: actions/github-script@v9
499
+ env:
500
+ PAW_IN_STEPS_BUILD_NUMBER_CALC_OUTPUTS_BUILDNUMBER: ${{ steps.build_number_calc.outputs.buildNumber }}
501
+ PAW_IN_STEPS_SOURCE_INFO_OUTPUTS_BRANCHNAME: ${{ steps.source_info.outputs.branchName }}
502
+ PAW_IN_STEPS_SOURCE_INFO_OUTPUTS_RELATEDISSUENUMBER: ${{ steps.source_info.outputs.relatedIssueNumber }}
503
+ PAW_IN_STEPS_SOURCE_INFO_OUTPUTS_SOURCENUMBER: ${{ steps.source_info.outputs.sourceNumber }}
504
+ PAW_IN_STEPS_SOURCE_INFO_OUTPUTS_SOURCETYPE: ${{ steps.source_info.outputs.sourceType }}
479
505
  with:
480
506
  github-token: ${{ secrets.GITHUB_TOKEN }}
481
507
  script: |
482
508
  const M = JSON.parse(process.env.PAW_MSG);
483
509
  const msg = (k, p = {}) => M[k].replace(/\{(\w+)\}/g, (s, n) => (n in p ? p[n] : s));
484
- const sourceType = '${{ steps.source_info.outputs.sourceType }}';
485
- const sourceNumber = '${{ steps.source_info.outputs.sourceNumber }}';
486
- const branchName = '${{ steps.source_info.outputs.branchName }}';
487
- const relatedIssueNumber = '${{ steps.source_info.outputs.relatedIssueNumber }}';
488
- const buildNumber = '${{ steps.build_number_calc.outputs.buildNumber }}';
510
+ const sourceType = process.env.PAW_IN_STEPS_SOURCE_INFO_OUTPUTS_SOURCETYPE;
511
+ const sourceNumber = process.env.PAW_IN_STEPS_SOURCE_INFO_OUTPUTS_SOURCENUMBER;
512
+ const branchName = process.env.PAW_IN_STEPS_SOURCE_INFO_OUTPUTS_BRANCHNAME;
513
+ const relatedIssueNumber = process.env.PAW_IN_STEPS_SOURCE_INFO_OUTPUTS_RELATEDISSUENUMBER;
514
+ const buildNumber = process.env.PAW_IN_STEPS_BUILD_NUMBER_CALC_OUTPUTS_BUILDNUMBER;
489
515
 
490
516
  console.log(msg('app_trigger.dispatch_start', { platform: 'iOS' }));
491
517
  console.log(msg('app_trigger.dispatch_source_number', { type: sourceType, number: sourceNumber }));
@@ -513,9 +539,12 @@ jobs:
513
539
  # The trigger-complete comment was removed - the per-platform progress comments (Android/iOS) take over that role
514
540
  - name: Log trigger completion
515
541
  if: steps.source_info.outputs.found == 'true' && steps.check_branch.outputs.exists == 'true'
542
+ env:
543
+ PAW_BRANCH_NAME: ${{ steps.source_info.outputs.branchName }}
516
544
  run: |
545
+ [ -f "$GITHUB_WORKSPACE/.github/scripts/messages.py" ] || { echo "::error::messages.py is missing; rerun \`npx project-auto-wizard --mode full --force\`"; exit 1; }
517
546
  m() { python3 "$GITHUB_WORKSPACE/.github/scripts/messages.py" get "$@"; }
518
547
  m app_trigger.done_log
519
548
  m app_trigger.done_build_number number="${{ steps.build_number_calc.outputs.buildNumber }}"
520
- m app_trigger.done_branch branch="${{ steps.source_info.outputs.branchName }}"
549
+ m app_trigger.done_branch branch="$PAW_BRANCH_NAME"
521
550
  m app_trigger.done_progress_note