kappmaker 1.1.0 → 1.2.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 +254 -30
- package/dist/cli.js +86 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/adapty-setup.js +5 -4
- package/dist/commands/adapty-setup.js.map +1 -1
- package/dist/commands/config.js +11 -1
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/create-appstore-app.js +18 -1
- package/dist/commands/create-appstore-app.js.map +1 -1
- package/dist/commands/create-logo.js +16 -5
- package/dist/commands/create-logo.js.map +1 -1
- package/dist/commands/create-play-app.d.ts +2 -0
- package/dist/commands/create-play-app.js +399 -0
- package/dist/commands/create-play-app.js.map +1 -0
- package/dist/commands/create.js +133 -54
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/enhance.js +12 -4
- package/dist/commands/enhance.js.map +1 -1
- package/dist/commands/fastlane-configure.d.ts +1 -0
- package/dist/commands/fastlane-configure.js +9 -0
- package/dist/commands/fastlane-configure.js.map +1 -0
- package/dist/commands/generate-screenshots.js +22 -7
- package/dist/commands/generate-screenshots.js.map +1 -1
- package/dist/commands/gpc.d.ts +29 -0
- package/dist/commands/gpc.js +174 -0
- package/dist/commands/gpc.js.map +1 -0
- package/dist/commands/remove-bg.js +12 -4
- package/dist/commands/remove-bg.js.map +1 -1
- package/dist/commands/translate-screenshots.js +22 -8
- package/dist/commands/translate-screenshots.js.map +1 -1
- package/dist/services/asc-monetization.service.js +39 -29
- package/dist/services/asc-monetization.service.js.map +1 -1
- package/dist/services/asc.service.d.ts +1 -1
- package/dist/services/asc.service.js +94 -12
- package/dist/services/asc.service.js.map +1 -1
- package/dist/services/fastlane-setup.service.d.ts +1 -0
- package/dist/services/fastlane-setup.service.js +50 -0
- package/dist/services/fastlane-setup.service.js.map +1 -0
- package/dist/services/firebase.service.js +48 -18
- package/dist/services/firebase.service.js.map +1 -1
- package/dist/services/gpc-data-safety.service.d.ts +11 -0
- package/dist/services/gpc-data-safety.service.js +160 -0
- package/dist/services/gpc-data-safety.service.js.map +1 -0
- package/dist/services/gpc-monetization.service.d.ts +18 -0
- package/dist/services/gpc-monetization.service.js +244 -0
- package/dist/services/gpc-monetization.service.js.map +1 -0
- package/dist/services/gpc.service.d.ts +87 -0
- package/dist/services/gpc.service.js +338 -0
- package/dist/services/gpc.service.js.map +1 -0
- package/dist/services/refactor.service.js +44 -29
- package/dist/services/refactor.service.js.map +1 -1
- package/dist/templates/Fastfile.txt +209 -0
- package/dist/templates/data-safety-template.json +5483 -0
- package/dist/templates/googleplay-config.json +71 -0
- package/dist/types/googleplay.d.ts +113 -0
- package/dist/types/googleplay.js +2 -0
- package/dist/types/googleplay.js.map +1 -0
- package/dist/utils/config.d.ts +1 -0
- package/dist/utils/config.js +4 -0
- package/dist/utils/config.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gpc.service.js","sourceRoot":"","sources":["../../src/services/gpc.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,17 @@ const SOURCE_DIRS = [
|
|
|
17
17
|
'src/wasmJsMain/kotlin',
|
|
18
18
|
];
|
|
19
19
|
const FILE_EXTENSIONS = ['kt', 'kts', 'gradle', 'xml', 'json'];
|
|
20
|
+
// All Gradle modules that may contain Kotlin sources needing refactoring.
|
|
21
|
+
// Each module gets its source directories renamed and imports updated.
|
|
22
|
+
const REFACTOR_MODULES = [
|
|
23
|
+
'composeApp',
|
|
24
|
+
'designsystem',
|
|
25
|
+
'libs/auth/auth-api',
|
|
26
|
+
'libs/auth/auth-firebase',
|
|
27
|
+
'libs/subscription/subscription-api',
|
|
28
|
+
'libs/subscription/subscription-adapty',
|
|
29
|
+
'libs/subscription/subscription-revenuecat',
|
|
30
|
+
];
|
|
20
31
|
async function replaceInFile(filePath, oldStr, newStr) {
|
|
21
32
|
if (!(await fs.pathExists(filePath)))
|
|
22
33
|
return false;
|
|
@@ -38,28 +49,28 @@ async function walkFiles(dir, extensions) {
|
|
|
38
49
|
if (entry.isDirectory()) {
|
|
39
50
|
results.push(...await walkFiles(fullPath, extensions));
|
|
40
51
|
}
|
|
41
|
-
else if (extensions.some(ext => entry.name.endsWith(
|
|
52
|
+
else if (extensions.some(ext => entry.name.endsWith('.' + ext))) {
|
|
42
53
|
results.push(fullPath);
|
|
43
54
|
}
|
|
44
55
|
}
|
|
45
56
|
return results;
|
|
46
57
|
}
|
|
47
|
-
async function updatePackageNamesInFiles(
|
|
58
|
+
async function updatePackageNamesInFiles(moduleDir, oldId, newId) {
|
|
48
59
|
for (const dir of SOURCE_DIRS) {
|
|
49
|
-
const rootDir = path.join(
|
|
60
|
+
const rootDir = path.join(moduleDir, dir);
|
|
50
61
|
const files = await walkFiles(rootDir, FILE_EXTENSIONS);
|
|
51
62
|
for (const file of files) {
|
|
52
63
|
if (await replaceInFile(file, oldId, newId)) {
|
|
53
|
-
logger.info(
|
|
64
|
+
logger.info('Updated package in: ' + path.relative(moduleDir, file));
|
|
54
65
|
}
|
|
55
66
|
}
|
|
56
67
|
}
|
|
57
68
|
}
|
|
58
|
-
async function movePackageDirectories(
|
|
69
|
+
async function movePackageDirectories(moduleDir, oldId, newId) {
|
|
59
70
|
const oldPkgDir = oldId.replace(/\./g, '/');
|
|
60
71
|
const newPkgDir = newId.replace(/\./g, '/');
|
|
61
72
|
for (const dir of SOURCE_DIRS) {
|
|
62
|
-
const sourceDir = path.join(
|
|
73
|
+
const sourceDir = path.join(moduleDir, dir);
|
|
63
74
|
if (!(await fs.pathExists(sourceDir)))
|
|
64
75
|
continue;
|
|
65
76
|
const oldPath = path.join(sourceDir, oldPkgDir);
|
|
@@ -67,26 +78,25 @@ async function movePackageDirectories(composeDir, oldId, newId) {
|
|
|
67
78
|
if (!(await fs.pathExists(oldPath)))
|
|
68
79
|
continue;
|
|
69
80
|
if (await fs.pathExists(newPath)) {
|
|
70
|
-
logger.warn(
|
|
81
|
+
logger.warn('Target already exists: ' + newPath + ' -- skipping move');
|
|
71
82
|
continue;
|
|
72
83
|
}
|
|
73
84
|
await fs.ensureDir(path.dirname(newPath));
|
|
74
85
|
await fs.copy(oldPath, newPath);
|
|
75
86
|
await fs.remove(oldPath);
|
|
76
|
-
logger.info(
|
|
87
|
+
logger.info('Moved: ' + path.relative(moduleDir, oldPath) + ' -> ' + path.relative(moduleDir, newPath));
|
|
77
88
|
}
|
|
78
89
|
}
|
|
79
90
|
async function updateGradleFiles(mobileDir, oldId, newId) {
|
|
80
91
|
const files = [
|
|
81
|
-
'
|
|
82
|
-
'designsystem/build.gradle.kts',
|
|
92
|
+
...REFACTOR_MODULES.map((m) => m + '/build.gradle.kts'),
|
|
83
93
|
'gradle/scripts/generateNewScreen.gradle.kts',
|
|
84
94
|
'scripts/make_local.sh',
|
|
85
95
|
'scripts/create_module.sh',
|
|
86
96
|
];
|
|
87
97
|
for (const f of files) {
|
|
88
98
|
if (await replaceInFile(path.join(mobileDir, f), oldId, newId)) {
|
|
89
|
-
logger.info(
|
|
99
|
+
logger.info('Updated: ' + f);
|
|
90
100
|
}
|
|
91
101
|
}
|
|
92
102
|
}
|
|
@@ -95,7 +105,7 @@ async function updateApplicationIdOnly(mobileDir, newId) {
|
|
|
95
105
|
if (!(await fs.pathExists(buildFile)))
|
|
96
106
|
return;
|
|
97
107
|
const content = await fs.readFile(buildFile, 'utf8');
|
|
98
|
-
const updated = content.replace(/applicationId\s*=\s*["'][^"']+["']/,
|
|
108
|
+
const updated = content.replace(/applicationId\s*=\s*["'][^"']+["']/, 'applicationId = "' + newId + '"');
|
|
99
109
|
if (content !== updated) {
|
|
100
110
|
await fs.writeFile(buildFile, updated, 'utf8');
|
|
101
111
|
logger.info('Updated applicationId in build.gradle.kts');
|
|
@@ -108,7 +118,7 @@ async function updateFirebaseConfigs(mobileDir, oldId, newId) {
|
|
|
108
118
|
];
|
|
109
119
|
for (const f of files) {
|
|
110
120
|
if (await replaceInFile(path.join(mobileDir, f), oldId, newId)) {
|
|
111
|
-
logger.info(
|
|
121
|
+
logger.info('Updated: ' + f);
|
|
112
122
|
}
|
|
113
123
|
}
|
|
114
124
|
}
|
|
@@ -119,7 +129,7 @@ async function updateIosFiles(mobileDir, oldId, newId) {
|
|
|
119
129
|
];
|
|
120
130
|
for (const f of files) {
|
|
121
131
|
if (await replaceInFile(path.join(mobileDir, f), oldId, newId)) {
|
|
122
|
-
logger.info(
|
|
132
|
+
logger.info('Updated: ' + f);
|
|
123
133
|
}
|
|
124
134
|
}
|
|
125
135
|
}
|
|
@@ -130,21 +140,21 @@ async function updateGithubWorkflows(mobileDir, oldId, newId) {
|
|
|
130
140
|
];
|
|
131
141
|
for (const f of files) {
|
|
132
142
|
if (await replaceInFile(path.join(mobileDir, f), oldId, newId)) {
|
|
133
|
-
logger.info(
|
|
143
|
+
logger.info('Updated: ' + f);
|
|
134
144
|
}
|
|
135
145
|
}
|
|
136
146
|
}
|
|
137
|
-
async function cleanUpOldDirectories(
|
|
147
|
+
async function cleanUpOldDirectories(moduleDir, oldId, newId) {
|
|
138
148
|
const oldParent = oldId.replace(/\./g, '/').replace(/\/[^/]+$/, '');
|
|
139
149
|
const newParent = newId.replace(/\./g, '/').replace(/\/[^/]+$/, '');
|
|
140
150
|
if (oldParent === newParent)
|
|
141
151
|
return;
|
|
142
152
|
for (const dir of SOURCE_DIRS) {
|
|
143
|
-
const sourceDir = path.join(
|
|
153
|
+
const sourceDir = path.join(moduleDir, dir);
|
|
144
154
|
const oldPath = path.join(sourceDir, oldParent);
|
|
145
155
|
if (await fs.pathExists(oldPath)) {
|
|
146
156
|
await fs.remove(oldPath);
|
|
147
|
-
logger.info(
|
|
157
|
+
logger.info('Cleaned up: ' + path.relative(moduleDir, oldPath));
|
|
148
158
|
}
|
|
149
159
|
}
|
|
150
160
|
}
|
|
@@ -155,32 +165,37 @@ async function updateAppName(mobileDir, oldName, newName) {
|
|
|
155
165
|
'iosApp/iosApp.xcodeproj/project.pbxproj',
|
|
156
166
|
'.github/workflows/publish_ios_appstore.yml',
|
|
157
167
|
'composeApp/src/webMain/resources/index.html',
|
|
158
|
-
|
|
159
|
-
|
|
168
|
+
'composeApp/src/jvmMain/kotlin/com/measify/kappmaker/main.kt',
|
|
169
|
+
'composeApp/src/jvmMain/kotlin/com/measify/kappmaker/util/AppUtilImpl.jvm.kt',
|
|
160
170
|
];
|
|
161
171
|
for (const f of files) {
|
|
162
172
|
if (await replaceInFile(path.join(mobileDir, f), oldName, newName)) {
|
|
163
|
-
logger.info(
|
|
173
|
+
logger.info('Updated app name in: ' + f);
|
|
164
174
|
}
|
|
165
175
|
}
|
|
166
176
|
}
|
|
167
177
|
export async function refactor(mobileDir, newAppId, newAppName, skipPackageRename, oldAppId = DEFAULT_OLD_APP_ID, oldAppName = DEFAULT_OLD_APP_NAME) {
|
|
168
|
-
|
|
169
|
-
logger.info(`Refactoring from ${oldAppId} → ${newAppId}, ${oldAppName} → ${newAppName}`);
|
|
178
|
+
logger.info('Refactoring from ' + oldAppId + ' -> ' + newAppId + ', ' + oldAppName + ' -> ' + newAppName);
|
|
170
179
|
if (!skipPackageRename) {
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
180
|
+
// Process every module that may contain Kotlin sources
|
|
181
|
+
for (const mod of REFACTOR_MODULES) {
|
|
182
|
+
const moduleDir = path.join(mobileDir, mod);
|
|
183
|
+
if (!(await fs.pathExists(moduleDir)))
|
|
184
|
+
continue;
|
|
185
|
+
logger.info('Updating package names in ' + mod + '...');
|
|
186
|
+
await updatePackageNamesInFiles(moduleDir, oldAppId, newAppId);
|
|
187
|
+
logger.info('Moving package directories in ' + mod + '...');
|
|
188
|
+
await movePackageDirectories(moduleDir, oldAppId, newAppId);
|
|
189
|
+
await cleanUpOldDirectories(moduleDir, oldAppId, newAppId);
|
|
190
|
+
}
|
|
175
191
|
await updateGradleFiles(mobileDir, oldAppId, newAppId);
|
|
176
192
|
await updateFirebaseConfigs(mobileDir, oldAppId, newAppId);
|
|
177
193
|
await updateIosFiles(mobileDir, oldAppId, newAppId);
|
|
178
194
|
await updateGithubWorkflows(mobileDir, oldAppId, newAppId);
|
|
179
|
-
await cleanUpOldDirectories(composeDir, oldAppId, newAppId);
|
|
180
195
|
await updateAppName(mobileDir, oldAppName, newAppName);
|
|
181
196
|
}
|
|
182
197
|
else {
|
|
183
|
-
logger.info('Skipping package rename
|
|
198
|
+
logger.info('Skipping package rename -- updating IDs and app name only...');
|
|
184
199
|
await updateApplicationIdOnly(mobileDir, newAppId);
|
|
185
200
|
await updateFirebaseConfigs(mobileDir, oldAppId, newAppId);
|
|
186
201
|
await updateIosFiles(mobileDir, oldAppId, newAppId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refactor.service.js","sourceRoot":"","sources":["../../src/services/refactor.service.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,CAAC,MAAM,kBAAkB,GAAG,uBAAuB,CAAC;AAC1D,MAAM,CAAC,MAAM,oBAAoB,GAAG,qBAAqB,CAAC;AAE1D,MAAM,WAAW,GAAG;IAClB,uBAAuB;IACvB,uBAAuB;IACvB,wBAAwB;IACxB,oBAAoB;IACpB,oBAAoB;IACpB,0BAA0B;IAC1B,uBAAuB;IACvB,oBAAoB;IACpB,uBAAuB;IACvB,mBAAmB;IACnB,uBAAuB;CACxB,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAE/D,KAAK,UAAU,aAAa,CAAC,QAAgB,EAAE,MAAc,EAAE,MAAc;IAC3E,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACnD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnD,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,GAAW,EAAE,UAAoB;IACxD,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAAE,OAAO,OAAO,CAAC;IAChD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;QACzD,CAAC;aAAM,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"refactor.service.js","sourceRoot":"","sources":["../../src/services/refactor.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
platform :android do
|
|
2
|
+
desc "Build and upload Android app to Google Play"
|
|
3
|
+
|
|
4
|
+
root_dir = File.expand_path("..", __dir__)
|
|
5
|
+
gradle_file = File.read(File.join(root_dir, "composeApp/build.gradle.kts"))
|
|
6
|
+
package_name = gradle_file[/applicationId\s*=\s*"([^"]+)"/, 1]
|
|
7
|
+
|
|
8
|
+
if package_name.nil?
|
|
9
|
+
UI.user_error!("Could not detect applicationId from composeApp/build.gradle.kts")
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
UI.message("Detected package name: #{package_name}")
|
|
13
|
+
|
|
14
|
+
playstore_metadata_path = File.join(root_dir, "distribution/android/playstore_metadata")
|
|
15
|
+
|
|
16
|
+
########################################################
|
|
17
|
+
# Lane: update Play Store metadata locally
|
|
18
|
+
########################################################
|
|
19
|
+
lane :update_local_metadata_from_playstore do |options|
|
|
20
|
+
desc "Fetch the current Play Store metadata for your app and save it locally.\n" \
|
|
21
|
+
"Options:\n" \
|
|
22
|
+
" :service_account - Path to the JSON key file for Google Play API (default: ~/credentials/google-service-app-publisher.json)"
|
|
23
|
+
|
|
24
|
+
service_account = options[:service_account] || File.expand_path("~/credentials/google-service-app-publisher.json")
|
|
25
|
+
|
|
26
|
+
# Delete existing metadata folder if it exists
|
|
27
|
+
if Dir.exist?(playstore_metadata_path)
|
|
28
|
+
UI.message("Deleting existing Play Store metadata at #{playstore_metadata_path}...")
|
|
29
|
+
FileUtils.rm_rf(playstore_metadata_path)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
download_from_play_store(
|
|
33
|
+
package_name: package_name,
|
|
34
|
+
json_key: service_account,
|
|
35
|
+
metadata_path: playstore_metadata_path
|
|
36
|
+
)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
########################################################
|
|
40
|
+
# Lane: First-time safe build (generate keystore + build AAB)
|
|
41
|
+
########################################################
|
|
42
|
+
lane :first_time_build do |options|
|
|
43
|
+
desc "Generate keystore (if missing) and build Android AAB for first-time Play Store upload.\n" \
|
|
44
|
+
"Does NOT upload to Play Store. You must manually upload the generated AAB.\n" \
|
|
45
|
+
"Generated app-release.aab is saved in distribution/android folder.\n" \
|
|
46
|
+
"Options:\n" \
|
|
47
|
+
" :first_name - Name of developer (optional) for keystore\n" \
|
|
48
|
+
" :organization - Organization name (optional, defaults to applicationId) for keystore"
|
|
49
|
+
|
|
50
|
+
first_name = options[:first_name] || ""
|
|
51
|
+
organization = options[:organization] || package_name
|
|
52
|
+
keystore_props = File.join(root_dir, "distribution/android/keystore/keystore.properties")
|
|
53
|
+
aab_output_dir = File.join(root_dir, "distribution/android")
|
|
54
|
+
aab_output_path = File.join(aab_output_dir, "app-release.aab")
|
|
55
|
+
|
|
56
|
+
# Step 1: Ensure keystore exists
|
|
57
|
+
unless File.exist?(keystore_props)
|
|
58
|
+
UI.important("Keystore not found! Generating a new keystore...")
|
|
59
|
+
keystore_script = File.join(root_dir, "scripts/generate_android_keystore.sh")
|
|
60
|
+
sh("cd #{root_dir} && #{keystore_script} '#{first_name}' '#{organization}'")
|
|
61
|
+
UI.success("Keystore generated successfully!")
|
|
62
|
+
else
|
|
63
|
+
UI.message("Keystore found, skipping generation.")
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# Step 2: Build AAB
|
|
67
|
+
UI.message("Building Android AAB...")
|
|
68
|
+
sh("cd #{root_dir} && ./gradlew :composeApp:bundleRelease")
|
|
69
|
+
|
|
70
|
+
# Step 3: Copy AAB to distribution/android
|
|
71
|
+
built_aab = File.join(root_dir, "composeApp/build/outputs/bundle/release/composeApp-release.aab")
|
|
72
|
+
UI.user_error!("No AAB found at #{built_aab}") unless File.exist?(built_aab)
|
|
73
|
+
|
|
74
|
+
FileUtils.mkdir_p(aab_output_dir)
|
|
75
|
+
FileUtils.cp(built_aab, aab_output_path)
|
|
76
|
+
|
|
77
|
+
UI.success("AAB generated and copied to #{aab_output_path}")
|
|
78
|
+
UI.message("First-time publish: upload this AAB manually to Google Play.")
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
########################################################
|
|
82
|
+
# Lane: Normal publish to Play Store
|
|
83
|
+
########################################################
|
|
84
|
+
lane :playstore_release do |options|
|
|
85
|
+
desc "Build and upload Android AAB to Google Play Store.\n" \
|
|
86
|
+
"Options:\n" \
|
|
87
|
+
" :track - Play Store track (internal, alpha, beta, production). Default: internal\n" \
|
|
88
|
+
" :upload_metadata - Upload metadata, title, description (default: false)\n" \
|
|
89
|
+
" :upload_screenshots - Upload screenshots (default: false)\n" \
|
|
90
|
+
" :upload_images - Upload logo, feature graphics (default: false)\n" \
|
|
91
|
+
" :submit_for_review - Submit for review in Play Console (default: true)\n" \
|
|
92
|
+
" :release_status - draft or completed (internal track always draft)"
|
|
93
|
+
|
|
94
|
+
service_account = options[:service_account] || File.expand_path("~/credentials/google-service-app-publisher.json")
|
|
95
|
+
track = options[:track] || "internal"
|
|
96
|
+
upload_metadata = options[:upload_metadata] || false
|
|
97
|
+
upload_screenshots = options[:upload_screenshots] || false
|
|
98
|
+
upload_images = options[:upload_images] || false
|
|
99
|
+
submit_for_review = options[:submit_for_review] || true
|
|
100
|
+
release_status = track == "internal" ? "draft" : (options[:release_status] || "completed")
|
|
101
|
+
|
|
102
|
+
# Build AAB
|
|
103
|
+
UI.message("Building Android AAB...")
|
|
104
|
+
sh("cd #{root_dir} && ./gradlew :composeApp:bundleRelease")
|
|
105
|
+
|
|
106
|
+
# Find generated AAB
|
|
107
|
+
aab_path = File.join(root_dir, "composeApp/build/outputs/bundle/release/composeApp-release.aab")
|
|
108
|
+
UI.user_error!("No AAB found at #{aab_path}") unless File.exist?(aab_path)
|
|
109
|
+
|
|
110
|
+
# Upload to Google Play
|
|
111
|
+
upload_to_play_store(
|
|
112
|
+
track: track,
|
|
113
|
+
package_name: package_name,
|
|
114
|
+
aab: aab_path,
|
|
115
|
+
json_key: service_account,
|
|
116
|
+
skip_upload_metadata: !upload_metadata,
|
|
117
|
+
skip_upload_images: !upload_images,
|
|
118
|
+
skip_upload_screenshots: !upload_screenshots,
|
|
119
|
+
skip_upload_changelogs: false,
|
|
120
|
+
metadata_path: playstore_metadata_path,
|
|
121
|
+
timeout: 600,
|
|
122
|
+
release_status: release_status,
|
|
123
|
+
changes_not_sent_for_review: !submit_for_review
|
|
124
|
+
)
|
|
125
|
+
|
|
126
|
+
UI.success("Android upload to Google Play Store complete!")
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
platform :ios do
|
|
131
|
+
desc "Build and upload iOS app to App Store"
|
|
132
|
+
|
|
133
|
+
root_dir = File.expand_path("..", __dir__)
|
|
134
|
+
output_dir = File.join(root_dir, "distribution/ios")
|
|
135
|
+
project_file = File.join(root_dir, "iosApp/iosApp.xcodeproj/project.pbxproj")
|
|
136
|
+
bundle_id = File.read(project_file)[/PRODUCT_BUNDLE_IDENTIFIER\s*=\s*([A-Za-z0-9\.-_]+);/, 1]
|
|
137
|
+
UI.user_error!("Could not find PRODUCT_BUNDLE_IDENTIFIER in project.pbxproj") if bundle_id.nil?
|
|
138
|
+
appstore_metadata_path = File.join(root_dir, "distribution/ios/appstore_metadata")
|
|
139
|
+
appstore_text_metadata_path = File.join(appstore_metadata_path, "texts")
|
|
140
|
+
appstore_screenshots_metadata_path = File.join(appstore_metadata_path, "screenshots")
|
|
141
|
+
api_key_path = File.expand_path("~/credentials/appstore-publisher.json")
|
|
142
|
+
|
|
143
|
+
lane :appstore_release do |options|
|
|
144
|
+
upload_metadata = options[:upload_metadata] || false
|
|
145
|
+
submit_for_review = options[:submit_for_review] || false
|
|
146
|
+
upload_screenshots = options[:upload_screenshots].nil? ? false : options[:upload_screenshots]
|
|
147
|
+
|
|
148
|
+
# Build IPA
|
|
149
|
+
build_app(
|
|
150
|
+
scheme: "iosApp",
|
|
151
|
+
workspace: "iosApp/iosApp.xcworkspace",
|
|
152
|
+
configuration: "Release",
|
|
153
|
+
export_method: "app-store",
|
|
154
|
+
silent: false,
|
|
155
|
+
output_name: "iosApp",
|
|
156
|
+
output_directory: output_dir,
|
|
157
|
+
xcargs: "-allowProvisioningUpdates"
|
|
158
|
+
)
|
|
159
|
+
|
|
160
|
+
ipa_path = File.join(output_dir, "iosApp.ipa")
|
|
161
|
+
|
|
162
|
+
# Upload to App Store
|
|
163
|
+
upload_to_app_store(
|
|
164
|
+
skip_metadata: !upload_metadata,
|
|
165
|
+
skip_screenshots: !upload_screenshots,
|
|
166
|
+
skip_app_version_update: false,
|
|
167
|
+
submit_for_review: submit_for_review,
|
|
168
|
+
metadata_path: appstore_text_metadata_path,
|
|
169
|
+
screenshots_path: appstore_screenshots_metadata_path,
|
|
170
|
+
api_key_path: api_key_path,
|
|
171
|
+
overwrite_screenshots: upload_screenshots,
|
|
172
|
+
precheck_include_in_app_purchases: false,
|
|
173
|
+
force: true,
|
|
174
|
+
ipa: ipa_path,
|
|
175
|
+
release_notes: {
|
|
176
|
+
'default' => "Bug fixes and improvements",
|
|
177
|
+
}
|
|
178
|
+
)
|
|
179
|
+
|
|
180
|
+
UI.success("iOS upload to App Store complete!")
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
########################################################
|
|
184
|
+
# Lane: update App Store metadata locally
|
|
185
|
+
########################################################
|
|
186
|
+
lane :update_local_metadata_from_appstore do |options|
|
|
187
|
+
desc "Fetch the current App Store metadata for your app and save it locally."
|
|
188
|
+
|
|
189
|
+
use_live_version = options.fetch(:use_live_version, true)
|
|
190
|
+
|
|
191
|
+
cmd = "fastlane deliver download_screenshots"
|
|
192
|
+
cmd += " --api_key_path #{api_key_path}"
|
|
193
|
+
cmd += " --app_identifier #{bundle_id}"
|
|
194
|
+
cmd += " --use_live_version #{use_live_version}"
|
|
195
|
+
cmd += " --force true"
|
|
196
|
+
cmd += " --screenshots_path #{appstore_screenshots_metadata_path}"
|
|
197
|
+
cmd += " --metadata_path #{appstore_text_metadata_path}"
|
|
198
|
+
sh(cmd)
|
|
199
|
+
|
|
200
|
+
cmd = "fastlane deliver download_metadata"
|
|
201
|
+
cmd += " --api_key_path #{api_key_path}"
|
|
202
|
+
cmd += " --app_identifier #{bundle_id}"
|
|
203
|
+
cmd += " --use_live_version #{use_live_version}"
|
|
204
|
+
cmd += " --force true"
|
|
205
|
+
cmd += " --screenshots_path #{appstore_screenshots_metadata_path}"
|
|
206
|
+
cmd += " --metadata_path #{appstore_text_metadata_path}"
|
|
207
|
+
sh(cmd)
|
|
208
|
+
end
|
|
209
|
+
end
|