kappmaker 1.0.1 → 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 +315 -41
- 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 +47 -46
- 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/firebase.service.d.ts +1 -1
- package/dist/services/firebase.service.js +9 -9
- package/dist/services/firebase.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/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';
|
|
@@ -64,33 +65,39 @@ export async function createApp(appName, options) {
|
|
|
64
65
|
await firebase.firebaseLogin();
|
|
65
66
|
// Step 3: Create Firebase project
|
|
66
67
|
logger.step(3, TOTAL_STEPS, 'Creating Firebase project');
|
|
67
|
-
await firebase.createProject(config);
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
68
|
+
const firebaseReady = await firebase.createProject(config);
|
|
69
|
+
if (firebaseReady) {
|
|
70
|
+
// Step 4: Create Firebase apps
|
|
71
|
+
logger.step(4, TOTAL_STEPS, 'Creating Firebase apps');
|
|
72
|
+
const androidApp = await firebase.createAndroidApp(config);
|
|
73
|
+
const iosApp = await firebase.createIosApp(config);
|
|
74
|
+
// Step 5: Enable anonymous authentication
|
|
75
|
+
logger.step(5, TOTAL_STEPS, 'Enabling anonymous authentication');
|
|
76
|
+
await firebase.enableAnonymousAuth(config.firebaseProject);
|
|
77
|
+
// Step 6: Download SDK configs
|
|
78
|
+
logger.step(6, TOTAL_STEPS, 'Downloading Firebase SDK configs');
|
|
79
|
+
const androidConfigPath = path.join(ctx.mobileDir, 'composeApp', 'google-services.json');
|
|
80
|
+
const iosConfigPath = path.join(ctx.mobileDir, 'iosApp', 'iosApp', 'GoogleService-Info.plist');
|
|
81
|
+
const assetsDir = path.join(targetPath, 'Assets');
|
|
82
|
+
const androidConfigDirExists = await fs.pathExists(path.dirname(androidConfigPath));
|
|
83
|
+
const iosConfigDirExists = await fs.pathExists(path.dirname(iosConfigPath));
|
|
84
|
+
const finalAndroidPath = androidConfigDirExists
|
|
85
|
+
? androidConfigPath
|
|
86
|
+
: path.join(assetsDir, 'google-services.json');
|
|
87
|
+
const finalIosPath = iosConfigDirExists
|
|
88
|
+
? iosConfigPath
|
|
89
|
+
: path.join(assetsDir, 'GoogleService-Info.plist');
|
|
90
|
+
if (!androidConfigDirExists || !iosConfigDirExists) {
|
|
91
|
+
await fs.ensureDir(assetsDir);
|
|
92
|
+
logger.warn('KAppMaker directory structure not found — saving Firebase configs to Assets/');
|
|
93
|
+
}
|
|
94
|
+
await firebase.downloadSdkConfig(androidApp.appId, 'ANDROID', finalAndroidPath);
|
|
95
|
+
await firebase.downloadSdkConfig(iosApp.appId, 'IOS', finalIosPath);
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
logger.warn('Skipping steps 4–6 (Firebase apps, auth, SDK configs) — project not available.');
|
|
99
|
+
logger.info('You can set up Firebase manually later and re-run these steps.');
|
|
100
|
+
}
|
|
94
101
|
// Step 7: Logo generation (optional)
|
|
95
102
|
logger.step(7, TOTAL_STEPS, 'App logo generation');
|
|
96
103
|
const wantsLogo = await confirm(' Would you like to generate an app logo?');
|
|
@@ -124,20 +131,14 @@ export async function createApp(appName, options) {
|
|
|
124
131
|
else {
|
|
125
132
|
logger.info('Skipping Adapty setup. Run "kappmaker adapty setup" later.');
|
|
126
133
|
}
|
|
127
|
-
// Step 10:
|
|
128
|
-
logger.step(10, TOTAL_STEPS, 'Configuring mobile app (
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
const shouldUpdatePackageName = await confirm(' Update package name?');
|
|
136
|
-
await gradle.refactorPackage(config, ctx.mobileDir, shouldUpdatePackageName);
|
|
137
|
-
}
|
|
138
|
-
else {
|
|
139
|
-
logger.warn('Gradle refactorPackage task not found — skipping. You will need to rename packages manually.');
|
|
140
|
-
}
|
|
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);
|
|
141
142
|
// Step 11: Setup build environment
|
|
142
143
|
logger.step(11, TOTAL_STEPS, 'Setting up build environment');
|
|
143
144
|
const gradlewPath = path.join(ctx.mobileDir, 'gradlew');
|
|
@@ -158,14 +159,14 @@ export async function createApp(appName, options) {
|
|
|
158
159
|
logger.step(12, TOTAL_STEPS, 'Setting up git remotes');
|
|
159
160
|
const repoRoot = path.resolve(config.targetDir);
|
|
160
161
|
await git.setTemplateAsUpstream(repoRoot);
|
|
161
|
-
// Step 13: Android release build
|
|
162
|
-
logger.step(13, TOTAL_STEPS, 'Building Android release
|
|
163
|
-
const
|
|
164
|
-
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) {
|
|
165
166
|
await fastlane.firstTimeBuild(ctx.mobileDir, org);
|
|
166
167
|
}
|
|
167
168
|
else {
|
|
168
|
-
logger.warn('
|
|
169
|
+
logger.warn('gradlew not found — skipping Android release build.');
|
|
169
170
|
}
|
|
170
171
|
const aabPath = await fastlane.findAabPath(ctx.mobileDir);
|
|
171
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":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,KAAK,GAAG,MAAM,4BAA4B,CAAC;AAClD,OAAO,KAAK,QAAQ,MAAM,iCAAiC,CAAC;AAC5D,OAAO,KAAK,MAAM,MAAM,+BAA+B,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,OAAO,KAAK,GAAG,MAAM,4BAA4B,CAAC;AAClD,OAAO,KAAK,QAAQ,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,MAAM,WAAW,GAAG,EAAE,CAAC;AAEvB,SAAS,WAAW,CAAC,OAAe,EAAE,OAAsB,EAAE,UAA2B;IACvF,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,UAAU,CAAC,cAAc,IAAI,OAAO,UAAU,EAAE,CAAC;IAChE,OAAO;QACL,OAAO;QACP,UAAU;QACV,WAAW,EAAE,GAAG,MAAM,IAAI,UAAU,EAAE;QACtC,eAAe,EAAE,GAAG,UAAU,MAAM;QACpC,SAAS,EAAE,GAAG,OAAO,MAAM;QAC3B,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,UAAU,CAAC,YAAY;KAC9D,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,MAAqB;IACzC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC5C,OAAO;QACL,MAAM;QACN,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC;KACxC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,OAAe,EACf,OAAsB;IAEtB,eAAe,CAAC,OAAO,CAAC,CAAC;IACzB,MAAM,oBAAoB,EAAE,CAAC;IAE7B,MAAM,UAAU,GAAG,MAAM,UAAU,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IACzD,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,IAAI,UAAU,CAAC,YAAY,IAAI,MAAM,CAAC,OAAO,CAAC;IAE9E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9B,MAAM,CAAC,IAAI,CAAC,sBAAsB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IACxD,MAAM,CAAC,IAAI,CAAC,sBAAsB,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;IAC5D,MAAM,CAAC,IAAI,CAAC,sBAAsB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;IAEtD,yBAAyB;IACzB,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,6BAA6B,CAAC,CAAC;IAE3D,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAClD,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,SAAS,mBAAmB,CAAC,CAAC;QAC/D,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,4BAA4B,CAAC,CAAC;QACpE,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAEhC,yBAAyB;IACzB,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,yBAAyB,CAAC,CAAC;IACvD,MAAM,QAAQ,CAAC,aAAa,EAAE,CAAC;IAE/B,kCAAkC;IAClC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,2BAA2B,CAAC,CAAC;IACzD,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAE3D,IAAI,aAAa,EAAE,CAAC;QAClB,+BAA+B;QAC/B,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,wBAAwB,CAAC,CAAC;QACtD,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAEnD,0CAA0C;QAC1C,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,mCAAmC,CAAC,CAAC;QACjE,MAAM,QAAQ,CAAC,mBAAmB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAE3D,+BAA+B;QAC/B,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,kCAAkC,CAAC,CAAC;QAChE,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CACjC,GAAG,CAAC,SAAS,EAAE,YAAY,EAAE,sBAAsB,CACpD,CAAC;QACF,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAC7B,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,0BAA0B,CAC9D,CAAC;QAEF,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAClD,MAAM,sBAAsB,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACpF,MAAM,kBAAkB,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;QAE5E,MAAM,gBAAgB,GAAG,sBAAsB;YAC7C,CAAC,CAAC,iBAAiB;YACnB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;QACjD,MAAM,YAAY,GAAG,kBAAkB;YACrC,CAAC,CAAC,aAAa;YACf,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,0BAA0B,CAAC,CAAC;QAErD,IAAI,CAAC,sBAAsB,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACnD,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC;QAC9F,CAAC;QAED,MAAM,QAAQ,CAAC,iBAAiB,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;QAChF,MAAM,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;IACtE,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,gFAAgF,CAAC,CAAC;QAC9F,MAAM,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;IAChF,CAAC;IAED,qCAAqC;IACrC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,qBAAqB,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,2CAA2C,CAAC,CAAC;IAC7E,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;QACnE,MAAM,UAAU,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QAEzC,0DAA0D;QAC1D,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;YAChD,MAAM,gBAAgB,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAC3C,CAAC;IAED,6CAA6C;IAC7C,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,yBAAyB,CAAC,CAAC;IACvD,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,6BAA6B,CAAC,CAAC;IACnE,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC;IAC9F,CAAC;IAED,kCAAkC;IAClC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,2BAA2B,CAAC,CAAC;IACzD,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,gCAAgC,CAAC,CAAC;IACpE,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,WAAW,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;IAC5E,CAAC;IAED,gEAAgE;IAChE,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,2CAA2C,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2FAA2F,CAAC,CAAC,CAAC;IACrH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gFAAgF,CAAC,CAAC,CAAC;IAC1G,MAAM,uBAAuB,GAAG,MAAM,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACxE,MAAM,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,uBAAuB,CAAC,CAAC;IAE5F,mCAAmC;IACnC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,8BAA8B,CAAC,CAAC;IAC7D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACxD,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACrC,MAAM,MAAM,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;IAC/E,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;IACzE,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAClE,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACrC,MAAM,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;IACjE,CAAC;IAED,oCAAoC;IACpC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,wBAAwB,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAChD,MAAM,GAAG,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAE1C,iCAAiC;IACjC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,0BAA0B,CAAC,CAAC;IACzD,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IAC/E,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACpD,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC1D,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC,CAAC;QAC1F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,IAAI,EAAE,CAAC;AAChB,CAAC"}
|
|
@@ -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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-keystore.js","sourceRoot":"","sources":["../../src/commands/generate-keystore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAQnE,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,OAAgC;IAC5E,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;IAC1C,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;IAEhD,IAAI,CAAC,SAAS,IAAI,CAAC,YAAY,EAAE,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,SAAS,GAAG,gBAAgB,EAAE,CAAC;IACrC,MAAM,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;AAC7E,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
interface PublishCommandOptions {
|
|
2
|
+
platform: string[];
|
|
3
|
+
track: string;
|
|
4
|
+
uploadMetadata: boolean;
|
|
5
|
+
uploadScreenshots: boolean;
|
|
6
|
+
uploadImages: boolean;
|
|
7
|
+
submitForReview: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function publishCommand(options: PublishCommandOptions): Promise<void>;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import fs from 'fs-extra';
|
|
3
|
+
import { logger } from '../utils/logger.js';
|
|
4
|
+
import { resolveMobileDir } from '../services/version.service.js';
|
|
5
|
+
import { loadConfig } from '../utils/config.js';
|
|
6
|
+
import { publishAndroid, publishIos } from '../services/publish.service.js';
|
|
7
|
+
export async function publishCommand(options) {
|
|
8
|
+
const mobileDir = resolveMobileDir();
|
|
9
|
+
const config = await loadConfig();
|
|
10
|
+
// Check Fastlane prerequisites
|
|
11
|
+
const gemfilePath = path.join(mobileDir, 'Gemfile');
|
|
12
|
+
const fastfilePath = path.join(mobileDir, 'fastlane', 'Fastfile');
|
|
13
|
+
if (!(await fs.pathExists(gemfilePath))) {
|
|
14
|
+
logger.error('Gemfile not found — Fastlane/Bundler is required for publishing.');
|
|
15
|
+
process.exit(1);
|
|
16
|
+
}
|
|
17
|
+
if (!(await fs.pathExists(fastfilePath))) {
|
|
18
|
+
logger.error('fastlane/Fastfile not found — required for publishing.');
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
const platforms = options.platform.length > 0
|
|
22
|
+
? options.platform
|
|
23
|
+
: ['android', 'ios'];
|
|
24
|
+
const pubOptions = {
|
|
25
|
+
track: options.track,
|
|
26
|
+
uploadMetadata: options.uploadMetadata,
|
|
27
|
+
uploadScreenshots: options.uploadScreenshots,
|
|
28
|
+
uploadImages: options.uploadImages,
|
|
29
|
+
submitForReview: options.submitForReview,
|
|
30
|
+
};
|
|
31
|
+
if (platforms.includes('android')) {
|
|
32
|
+
await publishAndroid(mobileDir, pubOptions, config);
|
|
33
|
+
}
|
|
34
|
+
if (platforms.includes('ios')) {
|
|
35
|
+
await publishIos(mobileDir, pubOptions, config);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=publish.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAY5E,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAA8B;IACjE,MAAM,SAAS,GAAG,gBAAgB,EAAE,CAAC;IACrC,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAElC,+BAA+B;IAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACpD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAClE,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;QACxC,MAAM,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;QACzC,MAAM,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;QACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;QAC3C,CAAC,CAAC,OAAO,CAAC,QAAQ;QAClB,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAEvB,MAAM,UAAU,GAAmB;QACjC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;QAC5C,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,eAAe,EAAE,OAAO,CAAC,eAAe;KACzC,CAAC;IAEF,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAClC,MAAM,cAAc,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,UAAU,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { logger } from '../utils/logger.js';
|
|
2
|
+
import { resolveMobileDir } from '../services/version.service.js';
|
|
3
|
+
import { refactor } from '../services/refactor.service.js';
|
|
4
|
+
export async function refactorCommand(options) {
|
|
5
|
+
const mobileDir = resolveMobileDir();
|
|
6
|
+
logger.info(`Mobile app directory: ${mobileDir}`);
|
|
7
|
+
await refactor(mobileDir, options.appId, options.appName, options.skipPackageRename ?? false, options.oldAppId, options.oldAppName);
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=refactor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refactor.js","sourceRoot":"","sources":["../../src/commands/refactor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAU3D,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAwB;IAC5D,MAAM,SAAS,GAAG,gBAAgB,EAAE,CAAC;IACrC,MAAM,CAAC,IAAI,CAAC,yBAAyB,SAAS,EAAE,CAAC,CAAC;IAClD,MAAM,QAAQ,CACZ,SAAS,EACT,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,iBAAiB,IAAI,KAAK,EAClC,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,UAAU,CACnB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { logger } from '../utils/logger.js';
|
|
2
|
+
import { resolveMobileDir, updateAndroidVersion, updateIosVersion, } from '../services/version.service.js';
|
|
3
|
+
export async function updateVersion(options) {
|
|
4
|
+
const mobileDir = resolveMobileDir();
|
|
5
|
+
const newVersionName = options.version;
|
|
6
|
+
const android = await updateAndroidVersion(mobileDir, newVersionName);
|
|
7
|
+
if (android) {
|
|
8
|
+
logger.success(`Android: versionCode ${android.oldCode} → ${android.newCode}, ` +
|
|
9
|
+
`versionName "${android.oldName}" → "${android.newName}"`);
|
|
10
|
+
}
|
|
11
|
+
const ios = await updateIosVersion(mobileDir, newVersionName);
|
|
12
|
+
if (ios) {
|
|
13
|
+
logger.success(`iOS: version ${ios.oldCode} → ${ios.newCode}, ` +
|
|
14
|
+
`marketing "${ios.oldName}" → "${ios.newName}"`);
|
|
15
|
+
}
|
|
16
|
+
if (!android && !ios) {
|
|
17
|
+
logger.error('No platform files found — nothing was updated.');
|
|
18
|
+
process.exit(1);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=update-version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-version.js","sourceRoot":"","sources":["../../src/commands/update-version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,gCAAgC,CAAC;AAMxC,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAA6B;IAC/D,MAAM,SAAS,GAAG,gBAAgB,EAAE,CAAC;IACrC,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAEvC,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IACtE,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,CAAC,OAAO,CACZ,wBAAwB,OAAO,CAAC,OAAO,MAAM,OAAO,CAAC,OAAO,IAAI;YAChE,gBAAgB,OAAO,CAAC,OAAO,QAAQ,OAAO,CAAC,OAAO,GAAG,CAC1D,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IAC9D,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,CAAC,OAAO,CACZ,gBAAgB,GAAG,CAAC,OAAO,MAAM,GAAG,CAAC,OAAO,IAAI;YAChD,cAAc,GAAG,CAAC,OAAO,QAAQ,GAAG,CAAC,OAAO,GAAG,CAChD,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;QACrB,MAAM,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -1,20 +1,32 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
2
|
import fs from 'fs-extra';
|
|
3
3
|
import { run } from '../utils/exec.js';
|
|
4
|
+
import { logger } from '../utils/logger.js';
|
|
5
|
+
import { hasKeystore, generateKeystore } from './keystore.service.js';
|
|
4
6
|
export async function firstTimeBuild(mobileDir, organization) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
'
|
|
8
|
-
'
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
], {
|
|
7
|
+
// Ensure keystore exists
|
|
8
|
+
if (!(await hasKeystore(mobileDir))) {
|
|
9
|
+
logger.info('Keystore not found — generating a new one...');
|
|
10
|
+
await generateKeystore(mobileDir, '', organization);
|
|
11
|
+
}
|
|
12
|
+
// Build AAB
|
|
13
|
+
await run('./gradlew', [':composeApp:bundleRelease'], {
|
|
12
14
|
cwd: mobileDir,
|
|
13
|
-
label: '
|
|
15
|
+
label: 'Building Android release AAB (this may take a few minutes)',
|
|
14
16
|
});
|
|
17
|
+
// Copy AAB to distribution
|
|
18
|
+
const builtAab = path.join(mobileDir, 'composeApp', 'build', 'outputs', 'bundle', 'release', 'composeApp-release.aab');
|
|
19
|
+
if (await fs.pathExists(builtAab)) {
|
|
20
|
+
const outputDir = path.join(mobileDir, 'distribution', 'android');
|
|
21
|
+
await fs.ensureDir(outputDir);
|
|
22
|
+
const outputPath = path.join(outputDir, 'app-release.aab');
|
|
23
|
+
await fs.copy(builtAab, outputPath, { overwrite: true });
|
|
24
|
+
logger.success(`AAB copied to ${outputPath}`);
|
|
25
|
+
}
|
|
15
26
|
}
|
|
16
27
|
export async function findAabPath(mobileDir) {
|
|
17
28
|
const searchDirs = [
|
|
29
|
+
path.join(mobileDir, 'distribution', 'android'),
|
|
18
30
|
path.join(mobileDir, 'composeApp', 'build', 'outputs', 'bundle', 'release'),
|
|
19
31
|
path.join(mobileDir, 'composeApp', 'build', 'outputs', 'bundle'),
|
|
20
32
|
path.join(mobileDir, 'app', 'build', 'outputs', 'bundle', 'release'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fastlane.service.js","sourceRoot":"","sources":["../../src/services/fastlane.service.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"fastlane.service.js","sourceRoot":"","sources":["../../src/services/fastlane.service.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEtE,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,SAAiB,EACjB,YAAoB;IAEpB,yBAAyB;IACzB,IAAI,CAAC,CAAC,MAAM,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;QAC5D,MAAM,gBAAgB,CAAC,SAAS,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC;IACtD,CAAC;IAED,YAAY;IACZ,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC,2BAA2B,CAAC,EAAE;QACpD,GAAG,EAAE,SAAS;QACd,KAAK,EAAE,4DAA4D;KACpE,CAAC,CAAC;IAEH,2BAA2B;IAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,wBAAwB,CAAC,CAAC;IACvH,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;QAClE,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;QAC3D,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,MAAM,CAAC,OAAO,CAAC,iBAAiB,UAAU,EAAE,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,SAAiB;IACjD,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,EAAE,SAAS,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC;QAC3E,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC;QAChE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC;KACrE,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACpC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YAClD,IAAI,GAAG;gBAAE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { DerivedConfig, FirebaseAppResult } from '../types/index.js';
|
|
2
2
|
export declare function firebaseLogin(): Promise<void>;
|
|
3
|
-
export declare function createProject(config: DerivedConfig): Promise<
|
|
3
|
+
export declare function createProject(config: DerivedConfig): Promise<boolean>;
|
|
4
4
|
export declare function createAndroidApp(config: DerivedConfig): Promise<FirebaseAppResult>;
|
|
5
5
|
export declare function createIosApp(config: DerivedConfig): Promise<FirebaseAppResult>;
|
|
6
6
|
export declare function downloadSdkConfig(appId: string, platform: 'ANDROID' | 'IOS', outputPath: string): Promise<void>;
|
|
@@ -12,7 +12,7 @@ export async function createProject(config) {
|
|
|
12
12
|
// Check first if project already exists
|
|
13
13
|
if (await projectExists(config.firebaseProject)) {
|
|
14
14
|
logger.info(`Firebase project "${config.firebaseProject}" already exists, skipping creation.`);
|
|
15
|
-
return;
|
|
15
|
+
return true;
|
|
16
16
|
}
|
|
17
17
|
const exitCode = await runStreaming('firebase', [
|
|
18
18
|
'projects:create',
|
|
@@ -25,17 +25,17 @@ export async function createProject(config) {
|
|
|
25
25
|
});
|
|
26
26
|
if (exitCode === 0) {
|
|
27
27
|
await waitForProject(config.firebaseProject);
|
|
28
|
+
return true;
|
|
28
29
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
if (!exists) {
|
|
32
|
-
logger.fatal(`Firebase project "${config.firebaseProject}" does not exist and could not be created.`);
|
|
33
|
-
logger.info('Check firebase-debug.log for details, or create it manually:');
|
|
34
|
-
logger.info(` firebase projects:create ${config.firebaseProject} --display-name ${config.appName}`);
|
|
35
|
-
process.exit(1);
|
|
36
|
-
}
|
|
30
|
+
const exists = await projectExists(config.firebaseProject);
|
|
31
|
+
if (exists) {
|
|
37
32
|
logger.info('Firebase project already exists, continuing...');
|
|
33
|
+
return true;
|
|
38
34
|
}
|
|
35
|
+
logger.warn(`Firebase project "${config.firebaseProject}" could not be created.`);
|
|
36
|
+
logger.info('Check firebase-debug.log for details, or create it manually:');
|
|
37
|
+
logger.info(` firebase projects:create ${config.firebaseProject} --display-name ${config.appName}`);
|
|
38
|
+
return false;
|
|
39
39
|
}
|
|
40
40
|
export async function createAndroidApp(config) {
|
|
41
41
|
return createOrFindApp(config, 'ANDROID', '--package-name');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firebase.service.js","sourceRoot":"","sources":["../../src/services/firebase.service.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAG5C,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,YAAY,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,EAAE;QACxC,KAAK,EAAE,2BAA2B;KACnC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAqB;IACvD,wCAAwC;IACxC,IAAI,MAAM,aAAa,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,qBAAqB,MAAM,CAAC,eAAe,sCAAsC,CAAC,CAAC;QAC/F,OAAO;
|
|
1
|
+
{"version":3,"file":"firebase.service.js","sourceRoot":"","sources":["../../src/services/firebase.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,2 @@
|
|
|
1
|
-
import type { DerivedConfig } from '../types/index.js';
|
|
2
|
-
export declare function hasRefactorPackageTask(mobileDir: string): Promise<boolean>;
|
|
3
|
-
export declare function refactorPackage(config: DerivedConfig, mobileDir: string, shouldUpdatePackageName: boolean): Promise<void>;
|
|
4
1
|
export declare function createLocalProperties(mobileDir: string, androidSdkPath: string): Promise<void>;
|
|
5
2
|
export declare function cleanAndBuild(mobileDir: string): Promise<void>;
|
|
@@ -1,31 +1,7 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
2
|
import fs from 'fs-extra';
|
|
3
|
-
import { execa } from 'execa';
|
|
4
3
|
import { run } from '../utils/exec.js';
|
|
5
4
|
import { logger } from '../utils/logger.js';
|
|
6
|
-
export async function hasRefactorPackageTask(mobileDir) {
|
|
7
|
-
const gradlewPath = path.join(mobileDir, 'gradlew');
|
|
8
|
-
if (!(await fs.pathExists(gradlewPath)))
|
|
9
|
-
return false;
|
|
10
|
-
try {
|
|
11
|
-
const { stdout } = await execa('./gradlew', ['tasks', '--all'], { cwd: mobileDir });
|
|
12
|
-
return stdout.includes('refactorPackage');
|
|
13
|
-
}
|
|
14
|
-
catch {
|
|
15
|
-
return false;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
export async function refactorPackage(config, mobileDir, shouldUpdatePackageName) {
|
|
19
|
-
await run('./gradlew', [
|
|
20
|
-
'refactorPackage',
|
|
21
|
-
`-PnewAppId=${config.packageName}`,
|
|
22
|
-
`-PnewAppName=${config.appName}`,
|
|
23
|
-
`-PshouldUpdatePackageName=${shouldUpdatePackageName}`,
|
|
24
|
-
], {
|
|
25
|
-
cwd: mobileDir,
|
|
26
|
-
label: 'Running Gradle refactor (setting package name and app name)',
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
5
|
export async function createLocalProperties(mobileDir, androidSdkPath) {
|
|
30
6
|
const propsPath = path.join(mobileDir, 'local.properties');
|
|
31
7
|
await fs.writeFile(propsPath, `sdk.dir=${androidSdkPath}\n`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gradle.service.js","sourceRoot":"","sources":["../../src/services/gradle.service.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"gradle.service.js","sourceRoot":"","sources":["../../src/services/gradle.service.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,SAAiB,EAAE,cAAsB;IACnF,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;IAC3D,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,WAAW,cAAc,IAAI,CAAC,CAAC;IAC7D,MAAM,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,SAAiB;IACnD,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC,aAAa,EAAE,OAAO,CAAC,EAAE;QAC/C,GAAG,EAAE,SAAS;QACd,KAAK,EAAE,sBAAsB;KAC9B,CAAC,CAAC;IAEH,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC,aAAa,EAAE,eAAe,CAAC,EAAE;QACvD,GAAG,EAAE,SAAS;QACd,KAAK,EAAE,4DAA4D;KACpE,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export interface KeystoreResult {
|
|
2
|
+
keystorePath: string;
|
|
3
|
+
propertiesPath: string;
|
|
4
|
+
}
|
|
5
|
+
export declare function hasKeystore(mobileDir: string): Promise<boolean>;
|
|
6
|
+
export declare function generateKeystore(mobileDir: string, firstName: string, organization: string, outputDir?: string): Promise<KeystoreResult>;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import crypto from 'crypto';
|
|
3
|
+
import fs from 'fs-extra';
|
|
4
|
+
import { run } from '../utils/exec.js';
|
|
5
|
+
import { logger } from '../utils/logger.js';
|
|
6
|
+
const KEY_ALIAS = 'aliasKey';
|
|
7
|
+
const KEY_VALIDITY = 10000;
|
|
8
|
+
export async function hasKeystore(mobileDir) {
|
|
9
|
+
const propsPath = path.join(mobileDir, 'distribution', 'android', 'keystore', 'keystore.properties');
|
|
10
|
+
return fs.pathExists(propsPath);
|
|
11
|
+
}
|
|
12
|
+
export async function generateKeystore(mobileDir, firstName, organization, outputDir) {
|
|
13
|
+
const keystoreDir = outputDir
|
|
14
|
+
? path.resolve(outputDir)
|
|
15
|
+
: path.join(mobileDir, 'distribution', 'android', 'keystore');
|
|
16
|
+
const keystorePath = path.join(keystoreDir, 'keystore.jks');
|
|
17
|
+
const propertiesPath = path.join(keystoreDir, 'keystore.properties');
|
|
18
|
+
await fs.ensureDir(keystoreDir);
|
|
19
|
+
const password = crypto.randomBytes(18).toString('base64url').slice(0, 24);
|
|
20
|
+
await run('keytool', [
|
|
21
|
+
'-genkeypair',
|
|
22
|
+
'-v',
|
|
23
|
+
'-keystore', keystorePath,
|
|
24
|
+
'-storepass', password,
|
|
25
|
+
'-alias', KEY_ALIAS,
|
|
26
|
+
'-keypass', password,
|
|
27
|
+
'-keyalg', 'RSA',
|
|
28
|
+
'-keysize', '2048',
|
|
29
|
+
'-validity', String(KEY_VALIDITY),
|
|
30
|
+
'-dname', `CN=${firstName}, O=${organization}`,
|
|
31
|
+
], { label: 'Generating Android keystore' });
|
|
32
|
+
const propsContent = [
|
|
33
|
+
`keystorePassword=${password}`,
|
|
34
|
+
`keyPassword=${password}`,
|
|
35
|
+
`keyAlias=${KEY_ALIAS}`,
|
|
36
|
+
`storeFile=../distribution/android/keystore/keystore.jks`,
|
|
37
|
+
'',
|
|
38
|
+
].join('\n');
|
|
39
|
+
await fs.writeFile(propertiesPath, propsContent, 'utf8');
|
|
40
|
+
logger.success(`Keystore: ${keystorePath}`);
|
|
41
|
+
logger.success(`Properties: ${propertiesPath}`);
|
|
42
|
+
return { keystorePath, propertiesPath };
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=keystore.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keystore.service.js","sourceRoot":"","sources":["../../src/services/keystore.service.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,SAAS,GAAG,UAAU,CAAC;AAC7B,MAAM,YAAY,GAAG,KAAK,CAAC;AAO3B,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,SAAiB;IACjD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,qBAAqB,CAAC,CAAC;IACrG,OAAO,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,SAAiB,EACjB,SAAiB,EACjB,YAAoB,EACpB,SAAkB;IAElB,MAAM,WAAW,GAAG,SAAS;QAC3B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;QACzB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IAEhE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAC5D,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;IAErE,MAAM,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAEhC,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAE3E,MAAM,GAAG,CACP,SAAS,EACT;QACE,aAAa;QACb,IAAI;QACJ,WAAW,EAAE,YAAY;QACzB,YAAY,EAAE,QAAQ;QACtB,QAAQ,EAAE,SAAS;QACnB,UAAU,EAAE,QAAQ;QACpB,SAAS,EAAE,KAAK;QAChB,UAAU,EAAE,MAAM;QAClB,WAAW,EAAE,MAAM,CAAC,YAAY,CAAC;QACjC,QAAQ,EAAE,MAAM,SAAS,OAAO,YAAY,EAAE;KAC/C,EACD,EAAE,KAAK,EAAE,6BAA6B,EAAE,CACzC,CAAC;IAEF,MAAM,YAAY,GAAG;QACnB,oBAAoB,QAAQ,EAAE;QAC9B,eAAe,QAAQ,EAAE;QACzB,YAAY,SAAS,EAAE;QACvB,yDAAyD;QACzD,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,MAAM,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IACzD,MAAM,CAAC,OAAO,CAAC,aAAa,YAAY,EAAE,CAAC,CAAC;IAC5C,MAAM,CAAC,OAAO,CAAC,eAAe,cAAc,EAAE,CAAC,CAAC;IAEhD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { KAppMakerConfig } from '../types/index.js';
|
|
2
|
+
export interface PublishOptions {
|
|
3
|
+
track: string;
|
|
4
|
+
uploadMetadata: boolean;
|
|
5
|
+
uploadScreenshots: boolean;
|
|
6
|
+
uploadImages: boolean;
|
|
7
|
+
submitForReview: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function publishAndroid(mobileDir: string, options: PublishOptions, config: KAppMakerConfig): Promise<void>;
|
|
10
|
+
export declare function publishIos(mobileDir: string, options: PublishOptions, config: KAppMakerConfig): Promise<void>;
|