@planu/cli 0.97.2 → 0.99.0

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 (122) hide show
  1. package/dist/config/license-plans.json +8 -3
  2. package/dist/config/mobile-ci-templates/android-github-actions.yml +149 -0
  3. package/dist/config/mobile-ci-templates/ios-github-actions.yml +120 -0
  4. package/dist/engine/api-validation/graphql-schema-validator.d.ts +3 -0
  5. package/dist/engine/api-validation/graphql-schema-validator.d.ts.map +1 -0
  6. package/dist/engine/api-validation/graphql-schema-validator.js +134 -0
  7. package/dist/engine/api-validation/graphql-schema-validator.js.map +1 -0
  8. package/dist/engine/api-validation/index.d.ts +3 -0
  9. package/dist/engine/api-validation/index.d.ts.map +1 -0
  10. package/dist/engine/api-validation/index.js +4 -0
  11. package/dist/engine/api-validation/index.js.map +1 -0
  12. package/dist/engine/api-validation/openapi-impl-validator.d.ts +3 -0
  13. package/dist/engine/api-validation/openapi-impl-validator.d.ts.map +1 -0
  14. package/dist/engine/api-validation/openapi-impl-validator.js +205 -0
  15. package/dist/engine/api-validation/openapi-impl-validator.js.map +1 -0
  16. package/dist/engine/ci-generator/android-jobs.d.ts +17 -0
  17. package/dist/engine/ci-generator/android-jobs.d.ts.map +1 -0
  18. package/dist/engine/ci-generator/android-jobs.js +168 -0
  19. package/dist/engine/ci-generator/android-jobs.js.map +1 -0
  20. package/dist/engine/ci-generator/ios-jobs.d.ts +17 -0
  21. package/dist/engine/ci-generator/ios-jobs.d.ts.map +1 -0
  22. package/dist/engine/ci-generator/ios-jobs.js +151 -0
  23. package/dist/engine/ci-generator/ios-jobs.js.map +1 -0
  24. package/dist/engine/ci-generator/yaml-builder.d.ts +10 -1
  25. package/dist/engine/ci-generator/yaml-builder.d.ts.map +1 -1
  26. package/dist/engine/ci-generator/yaml-builder.js +46 -1
  27. package/dist/engine/ci-generator/yaml-builder.js.map +1 -1
  28. package/dist/engine/coverage-gap-analyzer.d.ts +6 -0
  29. package/dist/engine/coverage-gap-analyzer.d.ts.map +1 -0
  30. package/dist/engine/coverage-gap-analyzer.js +177 -0
  31. package/dist/engine/coverage-gap-analyzer.js.map +1 -0
  32. package/dist/engine/dashboard/templates-kanban.d.ts.map +1 -1
  33. package/dist/engine/dashboard/templates-kanban.js +22 -0
  34. package/dist/engine/dashboard/templates-kanban.js.map +1 -1
  35. package/dist/engine/dashboard/templates-layout.d.ts.map +1 -1
  36. package/dist/engine/dashboard/templates-layout.js +59 -7
  37. package/dist/engine/dashboard/templates-layout.js.map +1 -1
  38. package/dist/engine/mutation-config-generator.d.ts +6 -0
  39. package/dist/engine/mutation-config-generator.d.ts.map +1 -0
  40. package/dist/engine/mutation-config-generator.js +111 -0
  41. package/dist/engine/mutation-config-generator.js.map +1 -0
  42. package/dist/engine/product-intelligence/index.d.ts +7 -0
  43. package/dist/engine/product-intelligence/index.d.ts.map +1 -0
  44. package/dist/engine/product-intelligence/index.js +211 -0
  45. package/dist/engine/product-intelligence/index.js.map +1 -0
  46. package/dist/engine/tdd-scaffold-generator.d.ts +7 -0
  47. package/dist/engine/tdd-scaffold-generator.d.ts.map +1 -0
  48. package/dist/engine/tdd-scaffold-generator.js +252 -0
  49. package/dist/engine/tdd-scaffold-generator.js.map +1 -0
  50. package/dist/engine/telemetry/error-reporter.d.ts +9 -2
  51. package/dist/engine/telemetry/error-reporter.d.ts.map +1 -1
  52. package/dist/engine/telemetry/error-reporter.js +31 -4
  53. package/dist/engine/telemetry/error-reporter.js.map +1 -1
  54. package/dist/engine/version-resolver.d.ts +10 -0
  55. package/dist/engine/version-resolver.d.ts.map +1 -0
  56. package/dist/engine/version-resolver.js +144 -0
  57. package/dist/engine/version-resolver.js.map +1 -0
  58. package/dist/engine/web-fetcher/stack-advisor.d.ts.map +1 -1
  59. package/dist/engine/web-fetcher/stack-advisor.js +32 -4
  60. package/dist/engine/web-fetcher/stack-advisor.js.map +1 -1
  61. package/dist/index.js +9 -11
  62. package/dist/index.js.map +1 -1
  63. package/dist/tools/checkpoint-handler.d.ts.map +1 -1
  64. package/dist/tools/checkpoint-handler.js +24 -1
  65. package/dist/tools/checkpoint-handler.js.map +1 -1
  66. package/dist/tools/dashboard.d.ts.map +1 -1
  67. package/dist/tools/dashboard.js +2 -0
  68. package/dist/tools/dashboard.js.map +1 -1
  69. package/dist/tools/product-insights-handler.d.ts +11 -0
  70. package/dist/tools/product-insights-handler.d.ts.map +1 -0
  71. package/dist/tools/product-insights-handler.js +102 -0
  72. package/dist/tools/product-insights-handler.js.map +1 -0
  73. package/dist/tools/register-product-insights-tools.d.ts +3 -0
  74. package/dist/tools/register-product-insights-tools.d.ts.map +1 -0
  75. package/dist/tools/register-product-insights-tools.js +22 -0
  76. package/dist/tools/register-product-insights-tools.js.map +1 -0
  77. package/dist/tools/register-spec-322-tools.d.ts +3 -0
  78. package/dist/tools/register-spec-322-tools.d.ts.map +1 -0
  79. package/dist/tools/register-spec-322-tools.js +41 -0
  80. package/dist/tools/register-spec-322-tools.js.map +1 -0
  81. package/dist/tools/register-spec-323-tools.d.ts +3 -0
  82. package/dist/tools/register-spec-323-tools.d.ts.map +1 -0
  83. package/dist/tools/register-spec-323-tools.js +57 -0
  84. package/dist/tools/register-spec-323-tools.js.map +1 -0
  85. package/dist/tools/safe-handler.d.ts.map +1 -1
  86. package/dist/tools/safe-handler.js +19 -1
  87. package/dist/tools/safe-handler.js.map +1 -1
  88. package/dist/tools/tdd-scaffold-handler.d.ts +5 -0
  89. package/dist/tools/tdd-scaffold-handler.d.ts.map +1 -0
  90. package/dist/tools/tdd-scaffold-handler.js +92 -0
  91. package/dist/tools/tdd-scaffold-handler.js.map +1 -0
  92. package/dist/tools/validate-api-contract-handler.d.ts +3 -0
  93. package/dist/tools/validate-api-contract-handler.d.ts.map +1 -0
  94. package/dist/tools/validate-api-contract-handler.js +74 -0
  95. package/dist/tools/validate-api-contract-handler.js.map +1 -0
  96. package/dist/tools/validate.d.ts.map +1 -1
  97. package/dist/tools/validate.js +24 -2
  98. package/dist/tools/validate.js.map +1 -1
  99. package/dist/types/api-contract.d.ts +58 -0
  100. package/dist/types/api-contract.d.ts.map +1 -1
  101. package/dist/types/ci.d.ts +8 -0
  102. package/dist/types/ci.d.ts.map +1 -1
  103. package/dist/types/index.d.ts +2 -0
  104. package/dist/types/index.d.ts.map +1 -1
  105. package/dist/types/index.js +2 -0
  106. package/dist/types/index.js.map +1 -1
  107. package/dist/types/product-intelligence.d.ts +60 -0
  108. package/dist/types/product-intelligence.d.ts.map +1 -0
  109. package/dist/types/product-intelligence.js +3 -0
  110. package/dist/types/product-intelligence.js.map +1 -0
  111. package/dist/types/telemetry.d.ts +1 -1
  112. package/dist/types/telemetry.d.ts.map +1 -1
  113. package/dist/types/testing.d.ts +60 -0
  114. package/dist/types/testing.d.ts.map +1 -1
  115. package/dist/types/version-resolution.d.ts +23 -0
  116. package/dist/types/version-resolution.d.ts.map +1 -0
  117. package/dist/types/version-resolution.js +3 -0
  118. package/dist/types/version-resolution.js.map +1 -0
  119. package/package.json +1 -1
  120. package/src/config/license-plans.json +8 -3
  121. package/src/config/mobile-ci-templates/android-github-actions.yml +149 -0
  122. package/src/config/mobile-ci-templates/ios-github-actions.yml +120 -0
@@ -0,0 +1,149 @@
1
+ name: Android CI/CD
2
+
3
+ on:
4
+ push:
5
+ branches: [main, develop]
6
+ pull_request:
7
+ branches: [main, develop]
8
+ workflow_dispatch:
9
+
10
+ jobs:
11
+
12
+ android-test:
13
+ name: Android — Gradle Unit Tests
14
+ runs-on: ubuntu-latest
15
+ steps:
16
+ - name: Checkout code
17
+ uses: actions/checkout@v4
18
+
19
+ - name: Setup JDK
20
+ uses: actions/setup-java@v4
21
+ with:
22
+ java-version: '17'
23
+ distribution: temurin
24
+
25
+ - name: Cache Gradle packages
26
+ uses: actions/cache@v4
27
+ with:
28
+ path: |
29
+ ~/.gradle/caches
30
+ ~/.gradle/wrapper
31
+ key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
32
+ restore-keys: ${{ runner.os }}-gradle-
33
+
34
+ - name: Grant Gradle execute permission
35
+ run: chmod +x gradlew
36
+
37
+ - name: Run unit tests
38
+ run: ./gradlew :{{module}}:testDebugUnitTest
39
+
40
+ - name: Upload test reports
41
+ uses: actions/upload-artifact@v4
42
+ with:
43
+ name: test-results
44
+ path: '{{module}}/build/reports/tests/'
45
+ if-no-files-found: warn
46
+
47
+ android-sign:
48
+ name: Android — Sign Release AAB
49
+ runs-on: ubuntu-latest
50
+ needs: android-test
51
+ if: github.ref == 'refs/heads/develop' || github.ref == 'refs/heads/main'
52
+ env:
53
+ KEYSTORE_FILE: ${{ secrets.KEYSTORE_FILE }}
54
+ KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
55
+ KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
56
+ KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
57
+ steps:
58
+ - name: Checkout code
59
+ uses: actions/checkout@v4
60
+
61
+ - name: Setup JDK
62
+ uses: actions/setup-java@v4
63
+ with:
64
+ java-version: '17'
65
+ distribution: temurin
66
+
67
+ - name: Cache Gradle packages
68
+ uses: actions/cache@v4
69
+ with:
70
+ path: |
71
+ ~/.gradle/caches
72
+ ~/.gradle/wrapper
73
+ key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
74
+ restore-keys: ${{ runner.os }}-gradle-
75
+
76
+ - name: Grant Gradle execute permission
77
+ run: chmod +x gradlew
78
+
79
+ - name: Decode keystore
80
+ run: echo "$KEYSTORE_FILE" | base64 --decode > keystore.jks
81
+ env:
82
+ KEYSTORE_FILE: ${{ secrets.KEYSTORE_FILE }}
83
+
84
+ - name: Build signed release AAB
85
+ run: |
86
+ ./gradlew :{{module}}:bundleRelease \
87
+ -Pandroid.injected.signing.store.file=$(pwd)/keystore.jks \
88
+ -Pandroid.injected.signing.store.password="$KEYSTORE_PASSWORD" \
89
+ -Pandroid.injected.signing.key.alias="$KEY_ALIAS" \
90
+ -Pandroid.injected.signing.key.password="$KEY_PASSWORD"
91
+ env:
92
+ KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
93
+ KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
94
+ KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
95
+
96
+ - name: Upload signed AAB
97
+ uses: actions/upload-artifact@v4
98
+ with:
99
+ name: release-aab
100
+ path: '{{module}}/build/outputs/bundle/release/*.aab'
101
+
102
+ android-deploy:
103
+ name: Android — Play Console Deploy
104
+ runs-on: ubuntu-latest
105
+ needs: android-sign
106
+ if: github.ref == 'refs/heads/main'
107
+ env:
108
+ PLAY_STORE_JSON_KEY: ${{ secrets.PLAY_STORE_JSON_KEY }}
109
+ steps:
110
+ - name: Checkout code
111
+ uses: actions/checkout@v4
112
+
113
+ - name: Download signed AAB
114
+ uses: actions/download-artifact@v4
115
+ with:
116
+ name: release-aab
117
+ path: ./release
118
+
119
+ - name: Setup Ruby for Fastlane
120
+ uses: ruby/setup-ruby@v1
121
+ with:
122
+ ruby-version: 'bundler-cache: true'
123
+
124
+ - name: Install Fastlane
125
+ run: gem install fastlane --no-document
126
+
127
+ - name: Decode Play Store JSON key
128
+ run: echo "$PLAY_STORE_JSON_KEY" > play-store-key.json
129
+ env:
130
+ PLAY_STORE_JSON_KEY: ${{ secrets.PLAY_STORE_JSON_KEY }}
131
+
132
+ - name: Upload to Play Console (internal track)
133
+ run: |
134
+ fastlane supply \
135
+ --aab ./release/{{module}}/build/outputs/bundle/release/*.aab \
136
+ --package_name "{{bundleId}}" \
137
+ --track internal \
138
+ --json_key ./play-store-key.json
139
+
140
+ # Required GitHub Secrets:
141
+ # KEYSTORE_FILE — Base64-encoded .jks keystore file
142
+ # KEYSTORE_PASSWORD — Password for the keystore file
143
+ # KEY_ALIAS — Alias of the signing key in the keystore
144
+ # KEY_PASSWORD — Password for the signing key
145
+ # PLAY_STORE_JSON_KEY — JSON content of the Google Play service account key
146
+ #
147
+ # Placeholders:
148
+ # {{module}} — Gradle module name (e.g. app)
149
+ # {{bundleId}} — Android application ID (e.g. com.example.myapp)
@@ -0,0 +1,120 @@
1
+ name: iOS CI/CD
2
+
3
+ on:
4
+ push:
5
+ branches: [main, develop]
6
+ pull_request:
7
+ branches: [main, develop]
8
+ workflow_dispatch:
9
+
10
+ jobs:
11
+
12
+ ios-test:
13
+ name: iOS — Xcode Build & Test
14
+ runs-on: macos-latest
15
+ env:
16
+ APPLE_API_KEY: ${{ secrets.APPLE_API_KEY }}
17
+ APPLE_API_ISSUER_ID: ${{ secrets.APPLE_API_ISSUER_ID }}
18
+ APPLE_API_KEY_ID: ${{ secrets.APPLE_API_KEY_ID }}
19
+ steps:
20
+ - name: Checkout code
21
+ uses: actions/checkout@v4
22
+
23
+ - name: Select Xcode version
24
+ run: sudo xcode-select -s /Applications/Xcode.app
25
+
26
+ - name: Build and test (Xcode)
27
+ run: |
28
+ xcodebuild clean build test \
29
+ -scheme "{{scheme}}" \
30
+ -destination 'platform=iOS Simulator,name=iPhone 15,OS=latest' \
31
+ CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO \
32
+ | xcpretty && exit "${PIPESTATUS[0]}"
33
+
34
+ ios-testflight:
35
+ name: iOS — TestFlight Upload
36
+ runs-on: macos-latest
37
+ needs: ios-test
38
+ if: github.ref == 'refs/heads/develop'
39
+ env:
40
+ APPLE_API_KEY: ${{ secrets.APPLE_API_KEY }}
41
+ APPLE_API_ISSUER_ID: ${{ secrets.APPLE_API_ISSUER_ID }}
42
+ APPLE_API_KEY_ID: ${{ secrets.APPLE_API_KEY_ID }}
43
+ MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
44
+ steps:
45
+ - name: Checkout code
46
+ uses: actions/checkout@v4
47
+
48
+ - name: Select Xcode version
49
+ run: sudo xcode-select -s /Applications/Xcode.app
50
+
51
+ - name: Setup Ruby for Fastlane
52
+ uses: ruby/setup-ruby@v1
53
+ with:
54
+ ruby-version: 'bundler-cache: true'
55
+
56
+ - name: Install Fastlane
57
+ run: gem install fastlane --no-document
58
+
59
+ - name: Build IPA
60
+ run: |
61
+ fastlane gym \
62
+ --scheme "{{scheme}}" \
63
+ --export_method app-store \
64
+ --output_directory ./build
65
+ env:
66
+ MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
67
+
68
+ - name: Upload to TestFlight
69
+ run: fastlane pilot upload --ipa ./build/*.ipa --skip_waiting_for_build_processing true
70
+
71
+ ios-appstore:
72
+ name: iOS — App Store Submission
73
+ runs-on: macos-latest
74
+ needs: ios-test
75
+ if: github.ref == 'refs/heads/main'
76
+ env:
77
+ APPLE_API_KEY: ${{ secrets.APPLE_API_KEY }}
78
+ APPLE_API_ISSUER_ID: ${{ secrets.APPLE_API_ISSUER_ID }}
79
+ APPLE_API_KEY_ID: ${{ secrets.APPLE_API_KEY_ID }}
80
+ MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
81
+ steps:
82
+ - name: Checkout code
83
+ uses: actions/checkout@v4
84
+
85
+ - name: Select Xcode version
86
+ run: sudo xcode-select -s /Applications/Xcode.app
87
+
88
+ - name: Setup Ruby for Fastlane
89
+ uses: ruby/setup-ruby@v1
90
+ with:
91
+ ruby-version: 'bundler-cache: true'
92
+
93
+ - name: Install Fastlane
94
+ run: gem install fastlane --no-document
95
+
96
+ - name: Build IPA (production)
97
+ run: |
98
+ fastlane gym \
99
+ --scheme "{{scheme}}" \
100
+ --configuration Release \
101
+ --export_method app-store \
102
+ --output_directory ./build
103
+ env:
104
+ MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
105
+
106
+ - name: Submit to App Store
107
+ run: |
108
+ fastlane deliver \
109
+ --ipa ./build/*.ipa \
110
+ --submit_for_review false \
111
+ --automatic_release false
112
+
113
+ # Required GitHub Secrets:
114
+ # APPLE_API_KEY — Base64-encoded .p8 private key from App Store Connect
115
+ # APPLE_API_ISSUER_ID — Issuer ID from App Store Connect API keys page
116
+ # APPLE_API_KEY_ID — Key ID from App Store Connect API keys page
117
+ # MATCH_PASSWORD — Encryption passphrase for Fastlane Match certificates
118
+ #
119
+ # Placeholders:
120
+ # {{scheme}} — Replace with your Xcode scheme name (e.g. MyApp)