kappmaker 1.0.2 → 1.1.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.
- package/README.md +232 -8
- package/dist/cli.js +60 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/android-release-build.d.ts +7 -0
- package/dist/commands/android-release-build.js +51 -0
- package/dist/commands/android-release-build.js.map +1 -0
- package/dist/commands/create.js +14 -19
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/generate-keystore.d.ts +7 -0
- package/dist/commands/generate-keystore.js +14 -0
- package/dist/commands/generate-keystore.js.map +1 -0
- package/dist/commands/publish.d.ts +10 -0
- package/dist/commands/publish.js +38 -0
- package/dist/commands/publish.js.map +1 -0
- package/dist/commands/refactor.d.ts +9 -0
- package/dist/commands/refactor.js +9 -0
- package/dist/commands/refactor.js.map +1 -0
- package/dist/commands/update-version.d.ts +5 -0
- package/dist/commands/update-version.js +21 -0
- package/dist/commands/update-version.js.map +1 -0
- package/dist/services/fastlane.service.js +20 -8
- package/dist/services/fastlane.service.js.map +1 -1
- package/dist/services/gradle.service.d.ts +0 -3
- package/dist/services/gradle.service.js +0 -24
- package/dist/services/gradle.service.js.map +1 -1
- package/dist/services/keystore.service.d.ts +6 -0
- package/dist/services/keystore.service.js +44 -0
- package/dist/services/keystore.service.js.map +1 -0
- package/dist/services/publish.service.d.ts +10 -0
- package/dist/services/publish.service.js +59 -0
- package/dist/services/publish.service.js.map +1 -0
- package/dist/services/refactor.service.d.ts +3 -0
- package/dist/services/refactor.service.js +192 -0
- package/dist/services/refactor.service.js.map +1 -0
- package/dist/services/version.service.d.ts +10 -0
- package/dist/services/version.service.js +75 -0
- package/dist/services/version.service.js.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/utils/config.js +1 -0
- package/dist/utils/config.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -57,8 +57,36 @@ kappmaker config set templateRepo <your-repo> # Use your own template (defaul
|
|
|
57
57
|
|
|
58
58
|
See [all config keys](#config-keys) and [external services setup](#external-services--api-keys) for details.
|
|
59
59
|
|
|
60
|
+
## Claude Code Skill
|
|
61
|
+
|
|
62
|
+
If you use [Claude Code](https://claude.ai/code), you can install the `/kappmaker` skill to run any CLI command through natural language — with automatic prerequisite checks, guided setup, and inline error recovery.
|
|
63
|
+
|
|
64
|
+
**Install:**
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
npx skills add KAppMaker/KAppMaker-CLI --skill kappmaker
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Or via the Claude Code plugin system:
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
/plugin marketplace add KAppMaker/KAppMaker-CLI
|
|
74
|
+
/plugin install kappmaker@KAppMaker-CLI
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**Use:**
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
/kappmaker create MyApp
|
|
81
|
+
/kappmaker generate screenshots for my fitness app
|
|
82
|
+
/kappmaker set up App Store Connect
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Claude will check your config, verify API keys are set, and walk you through any missing prerequisites before running the command.
|
|
86
|
+
|
|
60
87
|
## Table of Contents
|
|
61
88
|
|
|
89
|
+
- [Claude Code Skill](#claude-code-skill)
|
|
62
90
|
- [Configuration](#configuration)
|
|
63
91
|
- [Commands Overview](#commands-overview)
|
|
64
92
|
- [Features](#features)
|
|
@@ -72,6 +100,11 @@ See [all config keys](#config-keys) and [external services setup](#external-serv
|
|
|
72
100
|
- [Image Tools](#image-tools)
|
|
73
101
|
- [`translate-screenshots`](#translate-screenshots-source-dir)
|
|
74
102
|
- [`generate-screenshots`](#generate-screenshots)
|
|
103
|
+
- [`publish`](#publish)
|
|
104
|
+
- [`generate-keystore`](#generate-keystore)
|
|
105
|
+
- [`android-release-build`](#android-release-build)
|
|
106
|
+
- [`refactor`](#refactor)
|
|
107
|
+
- [`update-version`](#update-version)
|
|
75
108
|
- [Config Reference](#config-reference)
|
|
76
109
|
- [Project Structure](#project-structure)
|
|
77
110
|
|
|
@@ -88,6 +121,11 @@ See [all config keys](#config-keys) and [external services setup](#external-serv
|
|
|
88
121
|
| [`kappmaker image-enhance <image>`](#image-enhance-source) | Upscale and enhance image quality (fal.ai) |
|
|
89
122
|
| [`kappmaker translate-screenshots [dir]`](#translate-screenshots-source-dir) | Translate screenshots to multiple locales (fal.ai) |
|
|
90
123
|
| [`kappmaker generate-screenshots`](#generate-screenshots) | Generate marketing screenshots with AI (OpenAI + fal.ai) |
|
|
124
|
+
| [`kappmaker publish`](#publish) | Build and upload to Google Play and/or App Store via Fastlane |
|
|
125
|
+
| [`kappmaker generate-keystore`](#generate-keystore) | Generate an Android signing keystore for Play Store releases |
|
|
126
|
+
| [`kappmaker android-release-build`](#android-release-build) | Build a signed Android release AAB |
|
|
127
|
+
| [`kappmaker refactor`](#refactor) | Refactor package names, application ID, bundle ID, and app name |
|
|
128
|
+
| [`kappmaker update-version`](#update-version) | Bump Android and iOS version codes and version name |
|
|
91
129
|
| [`kappmaker config`](#config) | Manage CLI settings, API keys, and global defaults |
|
|
92
130
|
|
|
93
131
|
## Features
|
|
@@ -101,16 +139,17 @@ These commands are standalone and don't depend on any specific boilerplate:
|
|
|
101
139
|
- **Screenshot translation** — Translate app screenshots to 48+ locales in parallel
|
|
102
140
|
- **App Store Connect setup** — Register bundle ID, create app, set metadata, categories, age rating, subscriptions, privacy, and review info
|
|
103
141
|
- **Adapty subscription setup** — Create products, paywalls, and placements for iOS and Android
|
|
142
|
+
- **Version bumping** — Increment Android and iOS version codes and names in one command
|
|
104
143
|
- **Image tools** — Split grids, remove backgrounds, enhance quality
|
|
105
144
|
|
|
106
145
|
### KAppMaker boilerplate-specific
|
|
107
146
|
|
|
108
147
|
The `create` command runs the full end-to-end setup. Some steps assume the [KAppMaker](https://kappmaker.com) project structure and will be skipped with a warning if you use a custom template:
|
|
109
148
|
|
|
110
|
-
- **
|
|
149
|
+
- **Package refactor** — Renames package name, app ID, and display name using the TypeScript refactor service (also available standalone via `kappmaker refactor`)
|
|
111
150
|
- **Firebase SDK config placement** — Downloads `google-services.json` and `GoogleService-Info.plist` to KAppMaker-specific paths (falls back to `Assets/` for custom templates)
|
|
112
151
|
- **Build environment** — Creates `local.properties` and runs CocoaPods in the `MobileApp/` directory
|
|
113
|
-
- **Android release build** —
|
|
152
|
+
- **Android release build** — Generates keystore and builds signed AAB (also available standalone via `kappmaker android-release-build`)
|
|
114
153
|
- **Git remotes** — Renames origin to upstream (designed for the "fork from template" workflow)
|
|
115
154
|
- **Screenshot translation default path** — Defaults to `MobileApp/distribution/ios/appstore_metadata/screenshots/en-US` (falls back to parent of source directory)
|
|
116
155
|
|
|
@@ -158,9 +197,9 @@ The CLI integrates with several external services for AI image generation, app s
|
|
|
158
197
|
2. Go to [API Keys](https://platform.openai.com/api-keys) and create a new key
|
|
159
198
|
3. `kappmaker config set openaiApiKey <your-key>`
|
|
160
199
|
|
|
161
|
-
### App Store Connect CLI (asc) — iOS App Management
|
|
200
|
+
### App Store Connect CLI (asc) — iOS App Management & Publishing
|
|
162
201
|
|
|
163
|
-
**Used for:** Creating apps, setting metadata, categories, subscriptions, privacy declarations, and review info on App Store Connect.
|
|
202
|
+
**Used for:** Creating apps, setting metadata, categories, subscriptions, privacy declarations, and review info on App Store Connect (`create-appstore-app`). The same API key credentials are also used by `publish --platform ios` to build and upload IPAs via Fastlane.
|
|
164
203
|
|
|
165
204
|
**How to set up:**
|
|
166
205
|
1. Install: `brew install asc`
|
|
@@ -174,6 +213,8 @@ The CLI integrates with several external services for AI image generation, app s
|
|
|
174
213
|
```
|
|
175
214
|
Or run `kappmaker config appstore-defaults --init` for interactive setup.
|
|
176
215
|
|
|
216
|
+
> **Note:** `kappmaker publish --platform ios` uses `ascKeyId`, `ascIssuerId`, and `ascPrivateKeyPath` to automatically generate the Fastlane-format publisher JSON — no separate credentials needed.
|
|
217
|
+
|
|
177
218
|
### Adapty CLI — Subscription Management
|
|
178
219
|
|
|
179
220
|
**Used for:** Setting up in-app subscription products, paywalls, and placements across iOS and Android via Adapty's backend.
|
|
@@ -191,6 +232,41 @@ The CLI integrates with several external services for AI image generation, app s
|
|
|
191
232
|
1. Install: `npm install -g firebase-tools`
|
|
192
233
|
2. The `create` command handles login and project creation interactively.
|
|
193
234
|
|
|
235
|
+
### Google Play Publisher — Android Store Uploads
|
|
236
|
+
|
|
237
|
+
**Used for:** Building and uploading Android AABs to Google Play Store, managing Play Store metadata and screenshots via `kappmaker publish --platform android`.
|
|
238
|
+
|
|
239
|
+
**How to set up:**
|
|
240
|
+
|
|
241
|
+
1. Go to [Google Cloud Console](https://console.cloud.google.com) and create a new project (or select existing)
|
|
242
|
+
2. Open **APIs & Services > Library**, search for **Google Play Android Developer API**, and enable it
|
|
243
|
+
3. Go to **IAM & Admin > Service Accounts**, create a new service account (skip role assignment)
|
|
244
|
+
4. Open the service account, go to **Keys**, click **Add key > Create new key > JSON**, and download it
|
|
245
|
+
5. Open [Google Play Console](https://play.google.com/console), go to **Settings > Users and permissions**
|
|
246
|
+
6. Click **Invite new user** with the service account email (`...@...iam.gserviceaccount.com`) and grant permissions for your app(s)
|
|
247
|
+
7. Save the JSON key file and configure:
|
|
248
|
+
```bash
|
|
249
|
+
kappmaker config set googleServiceAccountPath /path/to/google-service-app-publisher.json
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
### App Store Publisher — iOS Store Uploads
|
|
253
|
+
|
|
254
|
+
**Used for:** Building and uploading iOS IPAs to App Store Connect, managing App Store metadata and screenshots via `kappmaker publish --platform ios`.
|
|
255
|
+
|
|
256
|
+
The `publish` command reuses the same App Store Connect API key credentials used by `create-appstore-app` (`ascKeyId`, `ascIssuerId`, `ascPrivateKeyPath`) and automatically generates the Fastlane-format publisher JSON.
|
|
257
|
+
|
|
258
|
+
**How to set up** (if not already configured for `create-appstore-app`):
|
|
259
|
+
|
|
260
|
+
1. Open [App Store Connect > Users and Access > Integrations](https://appstoreconnect.apple.com/access/integrations/api)
|
|
261
|
+
2. Create an API key with **App Manager** access and download the `.p8` file
|
|
262
|
+
3. Note the **Key ID** and **Issuer ID**
|
|
263
|
+
4. Configure:
|
|
264
|
+
```bash
|
|
265
|
+
kappmaker config set ascKeyId <your-key-id>
|
|
266
|
+
kappmaker config set ascIssuerId <your-issuer-id>
|
|
267
|
+
kappmaker config set ascPrivateKeyPath /path/to/AuthKey.p8
|
|
268
|
+
```
|
|
269
|
+
|
|
194
270
|
---
|
|
195
271
|
|
|
196
272
|
## `create <app-name>`
|
|
@@ -214,10 +290,10 @@ kappmaker create Remimi
|
|
|
214
290
|
| 7 | Logo generation | *Optional* — AI logo + automatic background removal |
|
|
215
291
|
| 8 | App Store Connect | *Optional* — full app setup (metadata, subs, privacy) |
|
|
216
292
|
| 9 | Adapty setup | *Optional* — products, paywalls, placements |
|
|
217
|
-
| 10 |
|
|
293
|
+
| 10 | Package refactor | Sets package name, application ID, bundle ID, and app name (TypeScript) |
|
|
218
294
|
| 11 | Build environment | Creates `local.properties`, installs CocoaPods; *skipped with warning if `gradlew`/`Podfile` not found* |
|
|
219
295
|
| 12 | Git remotes | Renames origin to upstream |
|
|
220
|
-
| 13 | Android release build |
|
|
296
|
+
| 13 | Android release build | Generates keystore if needed, builds signed AAB; *skipped if `gradlew` not found* |
|
|
221
297
|
|
|
222
298
|
**Options:**
|
|
223
299
|
|
|
@@ -529,6 +605,144 @@ Requires: `falApiKey`, `openaiApiKey`, and `imgbbApiKey` (if using reference ima
|
|
|
529
605
|
|
|
530
606
|
---
|
|
531
607
|
|
|
608
|
+
## `publish`
|
|
609
|
+
|
|
610
|
+
Builds and uploads your app to Google Play and/or App Store using Fastlane.
|
|
611
|
+
|
|
612
|
+
```bash
|
|
613
|
+
kappmaker publish # Both platforms
|
|
614
|
+
kappmaker publish --platform android # Android only
|
|
615
|
+
kappmaker publish --platform ios # iOS only
|
|
616
|
+
kappmaker publish --platform android --platform ios # Both explicitly
|
|
617
|
+
kappmaker publish --platform android --track internal # Android internal track
|
|
618
|
+
kappmaker publish --upload-metadata --upload-screenshots # With metadata
|
|
619
|
+
```
|
|
620
|
+
|
|
621
|
+
Run from the project root (containing `MobileApp/`) or inside `MobileApp/` directly. Requires Fastlane via Bundler (`Gemfile` + `fastlane/Fastfile`).
|
|
622
|
+
|
|
623
|
+
**Prerequisites:**
|
|
624
|
+
- **Android:** Google Play service account JSON — see [Google Play Publisher setup](#google-play-publisher--android-store-uploads)
|
|
625
|
+
- **iOS:** App Store Connect API key — see [App Store Publisher setup](#app-store-publisher--ios-store-uploads). The CLI generates the Fastlane-format publisher JSON automatically from your `ascKeyId`/`ascIssuerId`/`ascPrivateKeyPath` config.
|
|
626
|
+
|
|
627
|
+
| Flag | Description | Default |
|
|
628
|
+
|------|-------------|---------|
|
|
629
|
+
| `--platform <name>` | Platform to publish: `android`, `ios` (repeatable) | Both |
|
|
630
|
+
| `--track <name>` | Android Play Store track (internal/alpha/beta/production) | `production` |
|
|
631
|
+
| `--upload-metadata` | Upload metadata (title, description) | `false` |
|
|
632
|
+
| `--upload-screenshots` | Upload screenshots | `false` |
|
|
633
|
+
| `--upload-images` | Upload images — icon, feature graphic (Android only) | `false` |
|
|
634
|
+
| `--submit-for-review` | Submit for review after upload | `true` |
|
|
635
|
+
|
|
636
|
+
---
|
|
637
|
+
|
|
638
|
+
## `generate-keystore`
|
|
639
|
+
|
|
640
|
+
Generates an Android signing keystore for Play Store releases. Creates `keystore.jks` and `keystore.properties` with a secure random password.
|
|
641
|
+
|
|
642
|
+
```bash
|
|
643
|
+
kappmaker generate-keystore --organization "MyCompany"
|
|
644
|
+
kappmaker generate-keystore --first-name "John Doe" --organization "MyCompany"
|
|
645
|
+
kappmaker generate-keystore --output ./custom-keystore-dir
|
|
646
|
+
```
|
|
647
|
+
|
|
648
|
+
Run from the project root (containing `MobileApp/`) or inside `MobileApp/` directly.
|
|
649
|
+
|
|
650
|
+
**Output** (default: `distribution/android/keystore/` inside MobileApp):
|
|
651
|
+
- `keystore.jks` — the signing keystore
|
|
652
|
+
- `keystore.properties` — password, alias, and store file path
|
|
653
|
+
|
|
654
|
+
At least one of `--first-name` or `--organization` is required.
|
|
655
|
+
|
|
656
|
+
| Flag | Description | Required |
|
|
657
|
+
|------|-------------|----------|
|
|
658
|
+
| `--first-name <name>` | Developer name for keystore | One of these |
|
|
659
|
+
| `--organization <name>` | Organization name for keystore | is required |
|
|
660
|
+
| `--output <dir>` | Output directory for keystore files | No |
|
|
661
|
+
|
|
662
|
+
---
|
|
663
|
+
|
|
664
|
+
## `android-release-build`
|
|
665
|
+
|
|
666
|
+
Builds a signed Android release AAB. Automatically generates a keystore if one doesn't exist yet.
|
|
667
|
+
|
|
668
|
+
```bash
|
|
669
|
+
kappmaker android-release-build
|
|
670
|
+
kappmaker android-release-build --organization "MyCompany"
|
|
671
|
+
kappmaker android-release-build --output ./my-output
|
|
672
|
+
```
|
|
673
|
+
|
|
674
|
+
Run from the project root (containing `MobileApp/`) or inside `MobileApp/` directly. Requires `gradlew` in the mobile app directory.
|
|
675
|
+
|
|
676
|
+
**What it does:**
|
|
677
|
+
1. Generates keystore if `distribution/android/keystore/keystore.properties` doesn't exist
|
|
678
|
+
2. Runs `./gradlew :composeApp:bundleRelease`
|
|
679
|
+
3. Copies the AAB to the output directory
|
|
680
|
+
|
|
681
|
+
**Output:** `distribution/android/app-release.aab` (or custom `--output` path)
|
|
682
|
+
|
|
683
|
+
| Flag | Description | Default |
|
|
684
|
+
|------|-------------|---------|
|
|
685
|
+
| `--organization <name>` | Organization for keystore generation | From config |
|
|
686
|
+
| `--first-name <name>` | Developer name for keystore generation | Empty |
|
|
687
|
+
| `--output <dir>` | Output directory for AAB | `distribution/android` |
|
|
688
|
+
|
|
689
|
+
---
|
|
690
|
+
|
|
691
|
+
## `refactor`
|
|
692
|
+
|
|
693
|
+
Refactors package names, application ID, bundle ID, and app name across the entire project. Implemented in TypeScript — no Gradle build system required.
|
|
694
|
+
|
|
695
|
+
```bash
|
|
696
|
+
kappmaker refactor --app-id com.example.myapp --app-name MyApp
|
|
697
|
+
kappmaker refactor --app-id com.example.myapp --app-name MyApp --skip-package-rename
|
|
698
|
+
```
|
|
699
|
+
|
|
700
|
+
Run from the project root (containing `MobileApp/`) or from inside `MobileApp/` directly.
|
|
701
|
+
|
|
702
|
+
**Full refactor (default):**
|
|
703
|
+
1. Renames Kotlin package names in all source sets (commonMain, androidMain, iosMain, etc.)
|
|
704
|
+
2. Moves package directories to match the new package structure
|
|
705
|
+
3. Updates Gradle build files, Firebase configs, iOS project files, and GitHub workflows
|
|
706
|
+
4. Updates the app display name in manifests, settings, and platform-specific files
|
|
707
|
+
|
|
708
|
+
**Skip-package-rename mode (`--skip-package-rename`):**
|
|
709
|
+
Only updates `applicationId` / bundle ID, Firebase configs, iOS files, GitHub workflows, and app name — keeps Kotlin package directories intact. Useful for creating multiple apps from one codebase without merge conflicts.
|
|
710
|
+
|
|
711
|
+
| Flag | Description | Required |
|
|
712
|
+
|------|-------------|----------|
|
|
713
|
+
| `--app-id <id>` | New applicationId / bundleId (e.g., `com.example.myapp`) | Yes |
|
|
714
|
+
| `--app-name <name>` | New display name (e.g., `MyApp`) | Yes |
|
|
715
|
+
| `--old-app-id <id>` | Current applicationId to replace (default: `com.measify.kappmaker`) | No |
|
|
716
|
+
| `--old-app-name <name>` | Current app name to replace (default: `KAppMakerAllModules`) | No |
|
|
717
|
+
| `--skip-package-rename` | Keep Kotlin package dirs, only update IDs and app name | No |
|
|
718
|
+
|
|
719
|
+
---
|
|
720
|
+
|
|
721
|
+
## `update-version`
|
|
722
|
+
|
|
723
|
+
Bumps Android and iOS version codes and optionally sets a new version name. Run from the project root (containing `MobileApp/`) or from inside `MobileApp/` directly.
|
|
724
|
+
|
|
725
|
+
```bash
|
|
726
|
+
kappmaker update-version # Increment patch: 1.2.3 → 1.2.4, versionCode +1
|
|
727
|
+
kappmaker update-version -v 2.0.0 # Set explicit version name, versionCode +1
|
|
728
|
+
```
|
|
729
|
+
|
|
730
|
+
**What it updates:**
|
|
731
|
+
|
|
732
|
+
| Platform | File | Fields |
|
|
733
|
+
|----------|------|--------|
|
|
734
|
+
| Android | `composeApp/build.gradle.kts` | `versionCode`, `versionName` |
|
|
735
|
+
| iOS | `iosApp/iosApp.xcodeproj/project.pbxproj` | `CURRENT_PROJECT_VERSION`, `MARKETING_VERSION` |
|
|
736
|
+
| iOS | `iosApp/iosApp/Info.plist` | `CFBundleVersion`, `CFBundleShortVersionString` |
|
|
737
|
+
|
|
738
|
+
If a platform's files are missing, that platform is skipped with a warning.
|
|
739
|
+
|
|
740
|
+
| Flag | Description | Default |
|
|
741
|
+
|------|-------------|---------|
|
|
742
|
+
| `-v, --version <name>` | Set explicit version name (e.g., `2.0.0`) | Auto-increment patch |
|
|
743
|
+
|
|
744
|
+
---
|
|
745
|
+
|
|
532
746
|
## Config Reference
|
|
533
747
|
|
|
534
748
|
Configuration is stored at `~/.config/kappmaker/config.json`.
|
|
@@ -562,6 +776,7 @@ kappmaker config adapty-defaults --save ./config.json # Save as global defaul
|
|
|
562
776
|
| `ascIssuerId` | App Store Connect Issuer ID | — |
|
|
563
777
|
| `ascPrivateKeyPath` | Path to `.p8` private key | — |
|
|
564
778
|
| `appleId` | Apple ID email (for privacy setup) | — |
|
|
779
|
+
| `googleServiceAccountPath` | Google Play service account JSON path | `~/credentials/google-service-app-publisher.json` |
|
|
565
780
|
|
|
566
781
|
### Global defaults
|
|
567
782
|
|
|
@@ -590,6 +805,11 @@ src/
|
|
|
590
805
|
enhance.ts # Image quality enhancement
|
|
591
806
|
translate-screenshots.ts # Screenshot translation
|
|
592
807
|
generate-screenshots.ts # AI screenshot generation
|
|
808
|
+
publish.ts # Build and upload to Play Store / App Store
|
|
809
|
+
generate-keystore.ts # Generate Android signing keystore
|
|
810
|
+
android-release-build.ts # Build signed Android release AAB
|
|
811
|
+
refactor.ts # Package/app name refactoring
|
|
812
|
+
update-version.ts # Bump Android + iOS version codes and version name
|
|
593
813
|
config.ts # Config management
|
|
594
814
|
services/
|
|
595
815
|
firebase.service.ts # Firebase CLI wrapper + anonymous auth
|
|
@@ -599,12 +819,16 @@ src/
|
|
|
599
819
|
asc-monetization.service.ts # ASC pricing, subscriptions, IAP
|
|
600
820
|
adapty.service.ts # Adapty CLI wrapper
|
|
601
821
|
git.service.ts # Git operations
|
|
602
|
-
|
|
822
|
+
publish.service.ts # Android/iOS publishing via Fastlane
|
|
823
|
+
keystore.service.ts # Android keystore generation
|
|
824
|
+
gradle.service.ts # Gradle build helpers (local.properties, clean & build)
|
|
603
825
|
ios.service.ts # CocoaPods setup
|
|
604
|
-
fastlane.service.ts #
|
|
826
|
+
fastlane.service.ts # Android release build (keystore + gradle) + AAB finder
|
|
605
827
|
logo.service.ts # Logo prompt builder + image extraction
|
|
606
828
|
screenshot.service.ts # Screenshot grid operations + Fastlane output
|
|
607
829
|
screenshot-styles.ts # Screenshot style prompts (8 styles)
|
|
830
|
+
refactor.service.ts # Package/app name refactoring logic
|
|
831
|
+
version.service.ts # Android + iOS version reading/writing
|
|
608
832
|
utils/
|
|
609
833
|
logger.ts # Chalk-based logging
|
|
610
834
|
exec.ts # Command execution (execa + ora)
|
package/dist/cli.js
CHANGED
|
@@ -9,6 +9,11 @@ import { configList, configGet, configSet, configPath, configInit, configAppStor
|
|
|
9
9
|
import { createAppStoreApp } from './commands/create-appstore-app.js';
|
|
10
10
|
import { generateScreenshots } from './commands/generate-screenshots.js';
|
|
11
11
|
import { adaptySetup } from './commands/adapty-setup.js';
|
|
12
|
+
import { updateVersion } from './commands/update-version.js';
|
|
13
|
+
import { refactorCommand } from './commands/refactor.js';
|
|
14
|
+
import { generateKeystoreCommand } from './commands/generate-keystore.js';
|
|
15
|
+
import { androidReleaseBuild } from './commands/android-release-build.js';
|
|
16
|
+
import { publishCommand } from './commands/publish.js';
|
|
12
17
|
export function createCli() {
|
|
13
18
|
const program = new Command();
|
|
14
19
|
program
|
|
@@ -138,6 +143,61 @@ export function createCli() {
|
|
|
138
143
|
.action(async (options) => {
|
|
139
144
|
await adaptySetup(options);
|
|
140
145
|
});
|
|
146
|
+
// ── Android Build ──────────────────────────────────────────────────
|
|
147
|
+
program
|
|
148
|
+
.command('generate-keystore')
|
|
149
|
+
.description('Generate an Android signing keystore for Play Store releases')
|
|
150
|
+
.option('--first-name <name>', 'Developer name for keystore')
|
|
151
|
+
.option('--organization <name>', 'Organization name for keystore')
|
|
152
|
+
.option('--output <dir>', 'Output directory for keystore files')
|
|
153
|
+
.action(async (options) => {
|
|
154
|
+
await generateKeystoreCommand(options);
|
|
155
|
+
});
|
|
156
|
+
program
|
|
157
|
+
.command('android-release-build')
|
|
158
|
+
.description('Build a signed Android release AAB (generates keystore if needed)')
|
|
159
|
+
.option('--organization <name>', 'Organization name for keystore generation')
|
|
160
|
+
.option('--first-name <name>', 'Developer name for keystore generation')
|
|
161
|
+
.option('--output <dir>', 'Output directory for AAB (default: distribution/android)')
|
|
162
|
+
.action(async (options) => {
|
|
163
|
+
await androidReleaseBuild(options);
|
|
164
|
+
});
|
|
165
|
+
// ── Publish ────────────────────────────────────────────────────────
|
|
166
|
+
function collect(value, previous) {
|
|
167
|
+
return previous.concat([value]);
|
|
168
|
+
}
|
|
169
|
+
program
|
|
170
|
+
.command('publish')
|
|
171
|
+
.description('Build and upload app to Google Play and/or App Store via Fastlane')
|
|
172
|
+
.option('--platform <name>', 'Platform to publish: android, ios (repeatable)', collect, [])
|
|
173
|
+
.option('--track <name>', 'Android Play Store track (internal/alpha/beta/production)', 'production')
|
|
174
|
+
.option('--upload-metadata', 'Upload metadata (title, description)', false)
|
|
175
|
+
.option('--upload-screenshots', 'Upload screenshots', false)
|
|
176
|
+
.option('--upload-images', 'Upload images — icon, feature graphic (Android only)', false)
|
|
177
|
+
.option('--submit-for-review', 'Submit for review after upload', true)
|
|
178
|
+
.action(async (options) => {
|
|
179
|
+
await publishCommand(options);
|
|
180
|
+
});
|
|
181
|
+
// ── Refactor ───────────────────────────────────────────────────────
|
|
182
|
+
program
|
|
183
|
+
.command('refactor')
|
|
184
|
+
.description('Refactor package names, application ID, bundle ID, and app name')
|
|
185
|
+
.requiredOption('--app-id <id>', 'New applicationId / bundleId (e.g., com.example.myapp)')
|
|
186
|
+
.requiredOption('--app-name <name>', 'New display name (e.g., MyApp)')
|
|
187
|
+
.option('--old-app-id <id>', 'Current applicationId to replace (default: com.measify.kappmaker)')
|
|
188
|
+
.option('--old-app-name <name>', 'Current app name to replace (default: KAppMakerAllModules)')
|
|
189
|
+
.option('--skip-package-rename', 'Only update applicationId/bundleId/app name, keep Kotlin package dirs intact')
|
|
190
|
+
.action(async (options) => {
|
|
191
|
+
await refactorCommand(options);
|
|
192
|
+
});
|
|
193
|
+
// ── Version ────────────────────────────────────────────────────────
|
|
194
|
+
program
|
|
195
|
+
.command('update-version')
|
|
196
|
+
.description('Bump Android and iOS version codes and optionally set version name')
|
|
197
|
+
.option('-v, --version <name>', 'Set explicit version name (e.g., "2.0.0")')
|
|
198
|
+
.action(async (options) => {
|
|
199
|
+
await updateVersion(options);
|
|
200
|
+
});
|
|
141
201
|
// ── Config ─────────────────────────────────────────────────────────
|
|
142
202
|
const config = program
|
|
143
203
|
.command('config')
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC9I,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import fs from 'fs-extra';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import { logger } from '../utils/logger.js';
|
|
5
|
+
import { resolveMobileDir } from '../services/version.service.js';
|
|
6
|
+
import { hasKeystore, generateKeystore } from '../services/keystore.service.js';
|
|
7
|
+
import { loadConfig } from '../utils/config.js';
|
|
8
|
+
import { run } from '../utils/exec.js';
|
|
9
|
+
export async function androidReleaseBuild(options) {
|
|
10
|
+
const mobileDir = resolveMobileDir();
|
|
11
|
+
const gradlewPath = path.join(mobileDir, 'gradlew');
|
|
12
|
+
if (!(await fs.pathExists(gradlewPath))) {
|
|
13
|
+
logger.error('gradlew not found — cannot build Android release.');
|
|
14
|
+
process.exit(1);
|
|
15
|
+
}
|
|
16
|
+
// Ensure keystore exists
|
|
17
|
+
if (!(await hasKeystore(mobileDir))) {
|
|
18
|
+
logger.info('Keystore not found — generating a new one...');
|
|
19
|
+
const userConfig = await loadConfig();
|
|
20
|
+
const organization = options.organization || userConfig.organization;
|
|
21
|
+
const firstName = options.firstName ?? '';
|
|
22
|
+
if (!organization && !firstName) {
|
|
23
|
+
logger.error('No keystore found. Provide --organization or --first-name to generate one, or set "organization" in config.');
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
await generateKeystore(mobileDir, firstName, organization || '', options.output);
|
|
27
|
+
}
|
|
28
|
+
// Build AAB
|
|
29
|
+
await run('./gradlew', [':composeApp:bundleRelease'], {
|
|
30
|
+
cwd: mobileDir,
|
|
31
|
+
label: 'Building Android release AAB (this may take a few minutes)',
|
|
32
|
+
});
|
|
33
|
+
// Copy AAB to output directory
|
|
34
|
+
const builtAab = path.join(mobileDir, 'composeApp', 'build', 'outputs', 'bundle', 'release', 'composeApp-release.aab');
|
|
35
|
+
if (!(await fs.pathExists(builtAab))) {
|
|
36
|
+
logger.error(`AAB not found at expected path: ${builtAab}`);
|
|
37
|
+
process.exit(1);
|
|
38
|
+
}
|
|
39
|
+
const outputDir = options.output
|
|
40
|
+
? path.resolve(options.output)
|
|
41
|
+
: path.join(mobileDir, 'distribution', 'android');
|
|
42
|
+
await fs.ensureDir(outputDir);
|
|
43
|
+
const outputPath = path.join(outputDir, 'app-release.aab');
|
|
44
|
+
await fs.copy(builtAab, outputPath, { overwrite: true });
|
|
45
|
+
console.log('');
|
|
46
|
+
console.log(chalk.green.bold(' Android App Bundle (AAB) ready!'));
|
|
47
|
+
console.log(chalk.cyan(` ${outputPath}`));
|
|
48
|
+
console.log(chalk.gray(' Upload this file to Google Play Console to publish your app.'));
|
|
49
|
+
console.log('');
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=android-release-build.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"android-release-build.js","sourceRoot":"","sources":["../../src/commands/android-release-build.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/create.js
CHANGED
|
@@ -7,6 +7,7 @@ import { confirm } from '../utils/prompt.js';
|
|
|
7
7
|
import * as git from '../services/git.service.js';
|
|
8
8
|
import * as firebase from '../services/firebase.service.js';
|
|
9
9
|
import * as gradle from '../services/gradle.service.js';
|
|
10
|
+
import { refactor } from '../services/refactor.service.js';
|
|
10
11
|
import * as ios from '../services/ios.service.js';
|
|
11
12
|
import * as fastlane from '../services/fastlane.service.js';
|
|
12
13
|
import { createLogo } from './create-logo.js';
|
|
@@ -130,20 +131,14 @@ export async function createApp(appName, options) {
|
|
|
130
131
|
else {
|
|
131
132
|
logger.info('Skipping Adapty setup. Run "kappmaker adapty setup" later.');
|
|
132
133
|
}
|
|
133
|
-
// Step 10:
|
|
134
|
-
logger.step(10, TOTAL_STEPS, 'Configuring mobile app (
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
const shouldUpdatePackageName = await confirm(' Update package name?');
|
|
142
|
-
await gradle.refactorPackage(config, ctx.mobileDir, shouldUpdatePackageName);
|
|
143
|
-
}
|
|
144
|
-
else {
|
|
145
|
-
logger.warn('Gradle refactorPackage task not found — skipping. You will need to rename packages manually.');
|
|
146
|
-
}
|
|
134
|
+
// Step 10: Refactor package names, application ID, and app name
|
|
135
|
+
logger.step(10, TOTAL_STEPS, 'Configuring mobile app (package refactor)');
|
|
136
|
+
console.log('');
|
|
137
|
+
console.log(chalk.gray(' Update package name to match application ID?'));
|
|
138
|
+
console.log(chalk.gray(' • Yes (default) — package name will be same as application ID (e.g., com.measify.myapp)'));
|
|
139
|
+
console.log(chalk.gray(' • No — keeps the template package name for easier syncing with the base repo'));
|
|
140
|
+
const shouldUpdatePackageName = await confirm(' Update package name?');
|
|
141
|
+
await refactor(ctx.mobileDir, config.packageName, config.appName, !shouldUpdatePackageName);
|
|
147
142
|
// Step 11: Setup build environment
|
|
148
143
|
logger.step(11, TOTAL_STEPS, 'Setting up build environment');
|
|
149
144
|
const gradlewPath = path.join(ctx.mobileDir, 'gradlew');
|
|
@@ -164,14 +159,14 @@ export async function createApp(appName, options) {
|
|
|
164
159
|
logger.step(12, TOTAL_STEPS, 'Setting up git remotes');
|
|
165
160
|
const repoRoot = path.resolve(config.targetDir);
|
|
166
161
|
await git.setTemplateAsUpstream(repoRoot);
|
|
167
|
-
// Step 13: Android release build
|
|
168
|
-
logger.step(13, TOTAL_STEPS, 'Building Android release
|
|
169
|
-
const
|
|
170
|
-
if (
|
|
162
|
+
// Step 13: Android release build
|
|
163
|
+
logger.step(13, TOTAL_STEPS, 'Building Android release');
|
|
164
|
+
const gradlewExists = await fs.pathExists(path.join(ctx.mobileDir, 'gradlew'));
|
|
165
|
+
if (gradlewExists) {
|
|
171
166
|
await fastlane.firstTimeBuild(ctx.mobileDir, org);
|
|
172
167
|
}
|
|
173
168
|
else {
|
|
174
|
-
logger.warn('
|
|
169
|
+
logger.warn('gradlew not found — skipping Android release build.');
|
|
175
170
|
}
|
|
176
171
|
const aabPath = await fastlane.findAabPath(ctx.mobileDir);
|
|
177
172
|
if (aabPath) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { logger } from '../utils/logger.js';
|
|
2
|
+
import { resolveMobileDir } from '../services/version.service.js';
|
|
3
|
+
import { generateKeystore } from '../services/keystore.service.js';
|
|
4
|
+
export async function generateKeystoreCommand(options) {
|
|
5
|
+
const firstName = options.firstName ?? '';
|
|
6
|
+
const organization = options.organization ?? '';
|
|
7
|
+
if (!firstName && !organization) {
|
|
8
|
+
logger.error('You must provide at least --first-name or --organization.');
|
|
9
|
+
process.exit(1);
|
|
10
|
+
}
|
|
11
|
+
const mobileDir = resolveMobileDir();
|
|
12
|
+
await generateKeystore(mobileDir, firstName, organization, options.output);
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=generate-keystore.js.map
|