@simplysm/sd-cli 14.0.19 → 14.0.21
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/dist/angular/vite-postcss-inline-plugin.d.ts.map +1 -1
- package/dist/angular/vite-postcss-inline-plugin.js +4 -1
- package/dist/angular/vite-postcss-inline-plugin.js.map +1 -1
- package/dist/capacitor/capacitor-android.d.ts +16 -0
- package/dist/capacitor/capacitor-android.d.ts.map +1 -0
- package/dist/capacitor/capacitor-android.js +289 -0
- package/dist/capacitor/capacitor-android.js.map +1 -0
- package/dist/capacitor/capacitor.d.ts +0 -49
- package/dist/capacitor/capacitor.d.ts.map +1 -1
- package/dist/capacitor/capacitor.js +4 -244
- package/dist/capacitor/capacitor.js.map +1 -1
- package/dist/commands/check.js +2 -2
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/lint.d.ts +1 -42
- package/dist/commands/lint.d.ts.map +1 -1
- package/dist/commands/lint.js +1 -151
- package/dist/commands/lint.js.map +1 -1
- package/dist/commands/publish.d.ts.map +1 -1
- package/dist/commands/publish.js +2 -1
- package/dist/commands/publish.js.map +1 -1
- package/dist/commands/typecheck.d.ts +3 -40
- package/dist/commands/typecheck.d.ts.map +1 -1
- package/dist/commands/typecheck.js +3 -232
- package/dist/commands/typecheck.js.map +1 -1
- package/dist/electron/electron.js +11 -4
- package/dist/electron/electron.js.map +1 -1
- package/dist/orchestrators/DevWatchOrchestrator.d.ts +1 -0
- package/dist/orchestrators/DevWatchOrchestrator.d.ts.map +1 -1
- package/dist/orchestrators/DevWatchOrchestrator.js +10 -6
- package/dist/orchestrators/DevWatchOrchestrator.js.map +1 -1
- package/dist/orchestrators/TypecheckOrchestrator.d.ts +74 -0
- package/dist/orchestrators/TypecheckOrchestrator.d.ts.map +1 -0
- package/dist/orchestrators/TypecheckOrchestrator.js +285 -0
- package/dist/orchestrators/TypecheckOrchestrator.js.map +1 -0
- package/dist/sd-cli.js +6 -1
- package/dist/sd-cli.js.map +1 -1
- package/dist/utils/lint-core.d.ts +43 -0
- package/dist/utils/lint-core.d.ts.map +1 -0
- package/dist/utils/lint-core.js +154 -0
- package/dist/utils/lint-core.js.map +1 -0
- package/dist/utils/lint-utils.d.ts +1 -1
- package/dist/utils/lint-utils.d.ts.map +1 -1
- package/dist/utils/server-production-files.d.ts +22 -0
- package/dist/utils/server-production-files.d.ts.map +1 -0
- package/dist/utils/server-production-files.js +162 -0
- package/dist/utils/server-production-files.js.map +1 -0
- package/dist/workers/lint.worker.d.ts +1 -1
- package/dist/workers/lint.worker.d.ts.map +1 -1
- package/dist/workers/lint.worker.js +1 -1
- package/dist/workers/lint.worker.js.map +1 -1
- package/dist/workers/server-build.worker.d.ts.map +1 -1
- package/dist/workers/server-build.worker.js +11 -161
- package/dist/workers/server-build.worker.js.map +1 -1
- package/package.json +4 -4
- package/src/angular/vite-postcss-inline-plugin.ts +5 -1
- package/src/capacitor/capacitor-android.ts +368 -0
- package/src/capacitor/capacitor.ts +4 -317
- package/src/commands/check.ts +2 -2
- package/src/commands/lint.ts +1 -201
- package/src/commands/publish.ts +2 -1
- package/src/commands/typecheck.ts +7 -292
- package/src/electron/electron.ts +4 -4
- package/src/orchestrators/DevWatchOrchestrator.ts +10 -6
- package/src/orchestrators/TypecheckOrchestrator.ts +364 -0
- package/src/sd-cli.ts +6 -1
- package/src/utils/lint-core.ts +205 -0
- package/src/utils/lint-utils.ts +1 -1
- package/src/utils/server-production-files.ts +186 -0
- package/src/workers/lint.worker.ts +1 -1
- package/src/workers/server-build.worker.ts +10 -185
- package/tests/angular/vite-postcss-inline-plugin.spec.ts +10 -0
- package/tests/capacitor/capacitor-android-exports.verify.md +11 -0
- package/tests/capacitor/capacitor-android.spec.ts +219 -0
- package/tests/capacitor/capacitor-build.spec.ts +17 -21
- package/tests/capacitor/capacitor-icon.spec.ts +17 -19
- package/tests/capacitor/capacitor-init.spec.ts +18 -14
- package/tests/capacitor/capacitor-run.spec.ts +10 -24
- package/tests/capacitor/capacitor-workspace.spec.ts +10 -15
- package/tests/commands/check.spec.ts +2 -2
- package/tests/commands/lint.spec.ts +33 -194
- package/tests/commands/publish-set.verify.md +7 -0
- package/tests/electron/electron-symlink-cleanup.verify.md +8 -0
- package/tests/orchestrators/dist-delete-watcher.verify.md +10 -0
- package/tests/orchestrators/typecheck-orchestrator.spec.ts +180 -0
- package/tests/sd-cli-catch-all.verify.md +7 -0
- package/tests/utils/lint-core-import-paths.verify.md +10 -0
- package/tests/utils/lint-core.spec.ts +188 -0
- package/tests/utils/server-production-files-import-paths.verify.md +14 -0
- package/tests/workers/server-build-context-dispose.verify.md +8 -0
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import path from "path";
|
|
2
2
|
import fs from "fs";
|
|
3
3
|
import esbuild from "esbuild";
|
|
4
|
-
import {
|
|
4
|
+
import { createWorker, FsWatcher, pathx } from "@simplysm/core-node";
|
|
5
5
|
import { err as errNs } from "@simplysm/core-common";
|
|
6
6
|
import { consola } from "consola";
|
|
7
7
|
import { parseTsconfig, getPackageSourceFiles, } from "../utils/tsconfig.js";
|
|
8
|
-
import { createServerEsbuildOptions,
|
|
8
|
+
import { createServerEsbuildOptions, writeChangedOutputFiles, } from "../utils/esbuild-config.js";
|
|
9
|
+
import { collectAllExternals, generateProductionFiles } from "../utils/server-production-files.js";
|
|
9
10
|
import { runTscPackageBuild } from "../utils/tsc-build.js";
|
|
10
11
|
import { LintWithProgramRunner } from "../utils/lint-with-program.js";
|
|
11
12
|
import { registerCleanupHandlers, createOnceGuard, setupWorkerConsola } from "../utils/worker-utils.js";
|
|
@@ -42,161 +43,6 @@ async function cleanup() {
|
|
|
42
43
|
await srcWatcherToClose.close();
|
|
43
44
|
}
|
|
44
45
|
}
|
|
45
|
-
/**
|
|
46
|
-
* 세 가지 소스에서 외부 모듈을 수집하고 병합한다.
|
|
47
|
-
* collectAllDependencyExternals를 통한 단일 패스 의존성 트리 순회를 사용한다.
|
|
48
|
-
*/
|
|
49
|
-
function collectAllExternals(pkgDir, manualExternals) {
|
|
50
|
-
logger.debug("의존성 트리 스캔 중...");
|
|
51
|
-
const { optionalPeerDeps, nativeModules } = collectAllDependencyExternals(pkgDir);
|
|
52
|
-
const manual = manualExternals ?? [];
|
|
53
|
-
return [...new Set([...optionalPeerDeps, ...nativeModules, ...manual])];
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* pnpm-lock.yaml의 packages 섹션을 파싱하여 name→version 맵을 생성한다.
|
|
57
|
-
* Lockfile v9 형식: `packages:` 섹션의 `'name@version':` 키를 파싱한다.
|
|
58
|
-
* YAML 파서 의존성을 피하기 위해 단순 라인 기반 파싱을 사용한다.
|
|
59
|
-
*/
|
|
60
|
-
function parseLockfileVersions(cwd) {
|
|
61
|
-
const lockfilePath = path.join(cwd, "pnpm-lock.yaml");
|
|
62
|
-
if (!fs.existsSync(lockfilePath)) {
|
|
63
|
-
throw new Error(`pnpm-lock.yaml not found in ${cwd}. Run "pnpm install" first.`);
|
|
64
|
-
}
|
|
65
|
-
const content = fs.readFileSync(lockfilePath, "utf-8");
|
|
66
|
-
const map = new Map();
|
|
67
|
-
// "packages:" 섹션을 찾고 "'@scope/name@1.2.3':" 또는 "'name@1.2.3':" 형태의 항목을 파싱
|
|
68
|
-
const lines = content.split("\n");
|
|
69
|
-
let inPackages = false;
|
|
70
|
-
for (const line of lines) {
|
|
71
|
-
if (line === "packages:") {
|
|
72
|
-
inPackages = true;
|
|
73
|
-
continue;
|
|
74
|
-
}
|
|
75
|
-
if (inPackages && line.length > 0 && !line.startsWith(" ") && !line.startsWith("'")) {
|
|
76
|
-
break; // 다음 최상위 섹션
|
|
77
|
-
}
|
|
78
|
-
if (!inPackages)
|
|
79
|
-
continue;
|
|
80
|
-
// "'@scope/name@version':" 또는 "'name@version':" 매칭
|
|
81
|
-
const match = /^\s{2}'(.+)@(\d[^']*)':\s*$/.exec(line);
|
|
82
|
-
if (match != null) {
|
|
83
|
-
const name = match[1];
|
|
84
|
-
const version = match[2];
|
|
85
|
-
// 첫 번째 항목 유지 (lockfile은 각 버전을 한 번만 기록)
|
|
86
|
-
if (!map.has(name)) {
|
|
87
|
-
map.set(name, version);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
return map;
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* pnpm-lock.yaml에서 주어진 모든 패키지의 잠긴 버전을 확인한다.
|
|
95
|
-
* lockfile에서 패키지를 찾을 수 없으면 에러를 던진다.
|
|
96
|
-
*/
|
|
97
|
-
function resolveLockedVersions(cwd, pkgNames) {
|
|
98
|
-
const versionMap = parseLockfileVersions(cwd);
|
|
99
|
-
const result = {};
|
|
100
|
-
for (const name of pkgNames) {
|
|
101
|
-
const version = versionMap.get(name);
|
|
102
|
-
if (version == null) {
|
|
103
|
-
throw new Error(`External dependency "${name}" not found in pnpm-lock.yaml. ` +
|
|
104
|
-
`Run "pnpm install" and try again.`);
|
|
105
|
-
}
|
|
106
|
-
result[name] = version;
|
|
107
|
-
}
|
|
108
|
-
return result;
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* 프로덕션 배포용 파일을 생성한다
|
|
112
|
-
*/
|
|
113
|
-
function generateProductionFiles(info, externals) {
|
|
114
|
-
const distDir = path.join(info.pkgDir, "dist");
|
|
115
|
-
const pkgJson = JSON.parse(fs.readFileSync(path.join(info.pkgDir, "package.json"), "utf-8"));
|
|
116
|
-
// dist/package.json
|
|
117
|
-
const distPkgJson = {
|
|
118
|
-
name: pkgJson.name,
|
|
119
|
-
version: pkgJson.version,
|
|
120
|
-
type: pkgJson.type,
|
|
121
|
-
};
|
|
122
|
-
if (externals.length > 0) {
|
|
123
|
-
distPkgJson["dependencies"] = resolveLockedVersions(info.cwd, externals);
|
|
124
|
-
}
|
|
125
|
-
if (info.packageManager === "volta") {
|
|
126
|
-
const nodeVersion = cpx.spawnSync("node", ["-v"]).stdout.trim();
|
|
127
|
-
distPkgJson["volta"] = { node: nodeVersion };
|
|
128
|
-
}
|
|
129
|
-
fs.writeFileSync(path.join(distDir, "package.json"), JSON.stringify(distPkgJson, undefined, 2));
|
|
130
|
-
// dist/mise.toml
|
|
131
|
-
if (info.packageManager === "mise") {
|
|
132
|
-
const rootMiseTomlPath = path.join(info.cwd, "mise.toml");
|
|
133
|
-
let nodeVersion = "20";
|
|
134
|
-
if (fs.existsSync(rootMiseTomlPath)) {
|
|
135
|
-
const miseContent = fs.readFileSync(rootMiseTomlPath, "utf-8");
|
|
136
|
-
const match = /node\s*=\s*"([^"]+)"/.exec(miseContent);
|
|
137
|
-
if (match != null) {
|
|
138
|
-
nodeVersion = match[1];
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
fs.writeFileSync(path.join(distDir, "mise.toml"), `[tools]\nnode = "${nodeVersion}"\n`);
|
|
142
|
-
}
|
|
143
|
-
// dist/openssl.cnf
|
|
144
|
-
fs.writeFileSync(path.join(distDir, "openssl.cnf"), [
|
|
145
|
-
"nodejs_conf = openssl_init",
|
|
146
|
-
"",
|
|
147
|
-
"[openssl_init]",
|
|
148
|
-
"providers = provider_sect",
|
|
149
|
-
"ssl_conf = ssl_sect",
|
|
150
|
-
"",
|
|
151
|
-
"[provider_sect]",
|
|
152
|
-
"default = default_sect",
|
|
153
|
-
"legacy = legacy_sect",
|
|
154
|
-
"",
|
|
155
|
-
"[default_sect]",
|
|
156
|
-
"activate = 1",
|
|
157
|
-
"",
|
|
158
|
-
"[legacy_sect]",
|
|
159
|
-
"activate = 1",
|
|
160
|
-
"",
|
|
161
|
-
"[ssl_sect]",
|
|
162
|
-
"system_default = system_default_sect",
|
|
163
|
-
"",
|
|
164
|
-
"[system_default_sect]",
|
|
165
|
-
"Options = UnsafeLegacyRenegotiation",
|
|
166
|
-
].join("\n"));
|
|
167
|
-
// dist/pm2.config.cjs
|
|
168
|
-
if (info.pm2 != null) {
|
|
169
|
-
const pm2Name = info.pm2.name ?? pkgJson.name.replace(/@/g, "").replace(/[/\\]/g, "-");
|
|
170
|
-
const ignoreWatch = JSON.stringify([
|
|
171
|
-
"node_modules",
|
|
172
|
-
"www",
|
|
173
|
-
...(info.pm2.ignoreWatchPaths ?? []),
|
|
174
|
-
]);
|
|
175
|
-
const envObj = {
|
|
176
|
-
NODE_ENV: "production",
|
|
177
|
-
TZ: "Asia/Seoul",
|
|
178
|
-
...(info.env ?? {}),
|
|
179
|
-
};
|
|
180
|
-
const envStr = JSON.stringify(envObj, undefined, 4);
|
|
181
|
-
const useInterpreter = info.packageManager !== "volta";
|
|
182
|
-
const pm2Config = [
|
|
183
|
-
...(useInterpreter ? [`const cp = require("child_process");`, ``] : []),
|
|
184
|
-
`module.exports = {`,
|
|
185
|
-
` name: ${JSON.stringify(pm2Name)},`,
|
|
186
|
-
` script: "main.js",`,
|
|
187
|
-
` watch: true,`,
|
|
188
|
-
` watch_delay: 2000,`,
|
|
189
|
-
` ignore_watch: ${ignoreWatch},`,
|
|
190
|
-
...(useInterpreter ? [` interpreter: cp.execSync("mise which node").toString().trim(),`] : []),
|
|
191
|
-
` interpreter_args: "--openssl-config=openssl.cnf",`,
|
|
192
|
-
` env: ${envStr.replace(/\n/g, "\n ")},`,
|
|
193
|
-
` arrayProcess: "concat",`,
|
|
194
|
-
` useDelTargetNull: true,`,
|
|
195
|
-
`};`,
|
|
196
|
-
].join("\n");
|
|
197
|
-
fs.writeFileSync(path.join(distDir, "pm2.config.cjs"), pm2Config);
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
46
|
registerCleanupHandlers(cleanup, logger);
|
|
201
47
|
//#endregion
|
|
202
48
|
//#region Worker
|
|
@@ -443,11 +289,15 @@ async function startWatch(info) {
|
|
|
443
289
|
}
|
|
444
290
|
const newExternal = cachedExternal;
|
|
445
291
|
const oldContext = esbuildContext;
|
|
446
|
-
|
|
447
|
-
|
|
292
|
+
try {
|
|
293
|
+
if (info.output.js) {
|
|
294
|
+
esbuildContext = await createEsbuildWatchContext(info, newEntryPoints, newExternal);
|
|
295
|
+
}
|
|
448
296
|
}
|
|
449
|
-
|
|
450
|
-
|
|
297
|
+
finally {
|
|
298
|
+
if (oldContext != null) {
|
|
299
|
+
await oldContext.dispose();
|
|
300
|
+
}
|
|
451
301
|
}
|
|
452
302
|
const result = await rebuildAll();
|
|
453
303
|
sender.send("build", result);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-build.worker.js","sourceRoot":"","sources":["../../src/workers/server-build.worker.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server-build.worker.js","sourceRoot":"","sources":["../../src/workers/server-build.worker.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@simplysm/sd-cli",
|
|
3
|
-
"version": "14.0.
|
|
3
|
+
"version": "14.0.21",
|
|
4
4
|
"description": "Simplysm package - CLI tool",
|
|
5
5
|
"author": "simplysm",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -42,9 +42,9 @@
|
|
|
42
42
|
"vite-plugin-solid": "^2.11.12",
|
|
43
43
|
"vite-tsconfig-paths": "^6.1.1",
|
|
44
44
|
"yargs": "^18.0.0",
|
|
45
|
-
"@simplysm/
|
|
46
|
-
"@simplysm/core-
|
|
47
|
-
"@simplysm/
|
|
45
|
+
"@simplysm/storage": "14.0.21",
|
|
46
|
+
"@simplysm/core-common": "14.0.21",
|
|
47
|
+
"@simplysm/core-node": "14.0.21"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
50
|
"@types/semver": "^7.7.1",
|
|
@@ -115,10 +115,14 @@ export async function processPostCssInline(
|
|
|
115
115
|
if (origChar === "`") {
|
|
116
116
|
processedReplacements.push({ start: r.start, end: r.end, newText: `\`${newCss}\`` });
|
|
117
117
|
} else {
|
|
118
|
+
const escaped =
|
|
119
|
+
origChar === '"'
|
|
120
|
+
? newCss.replace(/\\/g, "\\\\").replace(/"/g, '\\"')
|
|
121
|
+
: newCss.replace(/\\/g, "\\\\").replace(/'/g, "\\'");
|
|
118
122
|
processedReplacements.push({
|
|
119
123
|
start: r.start,
|
|
120
124
|
end: r.end,
|
|
121
|
-
newText:
|
|
125
|
+
newText: `${origChar}${escaped}${origChar}`,
|
|
122
126
|
});
|
|
123
127
|
}
|
|
124
128
|
}
|
|
@@ -0,0 +1,368 @@
|
|
|
1
|
+
import { fsx, pathx } from "@simplysm/core-node";
|
|
2
|
+
import { env, xml } from "@simplysm/core-common";
|
|
3
|
+
import { consola } from "consola";
|
|
4
|
+
import type { NpmConfig, SdCapacitorAndroidConfig, SdCapacitorConfig } from "../sd-config.types.js";
|
|
5
|
+
|
|
6
|
+
const _logger = consola.withTag("sd:cli:capacitor");
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Android 네이티브 설정 구성
|
|
10
|
+
*
|
|
11
|
+
* JAVA_HOME, Android SDK 경로, AndroidManifest.xml, build.gradle, styles.xml을 설정한다.
|
|
12
|
+
*/
|
|
13
|
+
export async function configureAndroid(
|
|
14
|
+
capPath: string,
|
|
15
|
+
config: SdCapacitorConfig,
|
|
16
|
+
npmConfig: NpmConfig,
|
|
17
|
+
): Promise<void> {
|
|
18
|
+
const androidPath = pathx.posixResolve(capPath, "android");
|
|
19
|
+
|
|
20
|
+
// Android 디렉토리 존재 확인
|
|
21
|
+
if (!(await fsx.exists(androidPath))) {
|
|
22
|
+
throw new Error(`Android 프로젝트 디렉토리를 찾을 수 없습니다: ${androidPath}`);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
_logger.debug("JAVA_HOME 설정 시작");
|
|
26
|
+
await _configureJavaHomePath(androidPath);
|
|
27
|
+
_logger.debug("JAVA_HOME 설정 완료");
|
|
28
|
+
|
|
29
|
+
_logger.debug("Android SDK 경로 설정 시작");
|
|
30
|
+
await _configureSdkPath(androidPath);
|
|
31
|
+
_logger.debug("Android SDK 경로 설정 완료");
|
|
32
|
+
|
|
33
|
+
_logger.debug("AndroidManifest.xml 설정 시작");
|
|
34
|
+
await _configureManifest(androidPath, config.platform?.android);
|
|
35
|
+
_logger.debug("AndroidManifest.xml 설정 완료");
|
|
36
|
+
|
|
37
|
+
_logger.debug("루트 build.gradle Kotlin 플러그인 설정 시작");
|
|
38
|
+
await _configureRootBuildGradle(androidPath);
|
|
39
|
+
_logger.debug("루트 build.gradle Kotlin 플러그인 설정 완료");
|
|
40
|
+
|
|
41
|
+
_logger.debug("build.gradle 설정 시작");
|
|
42
|
+
await _configureBuildGradle(androidPath, npmConfig.version, config.platform?.android?.sdkVersion);
|
|
43
|
+
_logger.debug("build.gradle 설정 완료");
|
|
44
|
+
|
|
45
|
+
_logger.debug("styles.xml 설정 시작");
|
|
46
|
+
await _configureStyles(androidPath);
|
|
47
|
+
_logger.debug("styles.xml 설정 완료");
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Java 21 경로 자동 탐색
|
|
52
|
+
*/
|
|
53
|
+
export async function findJava21(): Promise<string | undefined> {
|
|
54
|
+
const patterns = [
|
|
55
|
+
"C:/Program Files/Amazon Corretto/jdk21*",
|
|
56
|
+
"C:/Program Files/Eclipse Adoptium/jdk-21*",
|
|
57
|
+
"C:/Program Files/Java/jdk-21*",
|
|
58
|
+
"C:/Program Files/Microsoft/jdk-21*",
|
|
59
|
+
"/usr/lib/jvm/java-21*",
|
|
60
|
+
"/usr/lib/jvm/temurin-21*",
|
|
61
|
+
];
|
|
62
|
+
|
|
63
|
+
for (const pattern of patterns) {
|
|
64
|
+
const matches = await fsx.glob(pattern);
|
|
65
|
+
if (matches.length > 0) {
|
|
66
|
+
return matches.sort().at(-1);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Android SDK 경로 탐색
|
|
75
|
+
*/
|
|
76
|
+
export async function findAndroidSdk(): Promise<string | undefined> {
|
|
77
|
+
const androidHome =
|
|
78
|
+
env("ANDROID_HOME") ??
|
|
79
|
+
env("ANDROID_SDK_ROOT");
|
|
80
|
+
if (androidHome != null && (await fsx.exists(androidHome))) {
|
|
81
|
+
return androidHome;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const candidates = [
|
|
85
|
+
pathx.posixResolve(env("LOCALAPPDATA") ?? "", "Android/Sdk"),
|
|
86
|
+
pathx.posixResolve(env("HOME") ?? "", "Android/Sdk"),
|
|
87
|
+
"C:/Program Files/Android/Sdk",
|
|
88
|
+
"C:/Android/Sdk",
|
|
89
|
+
];
|
|
90
|
+
|
|
91
|
+
for (const candidate of candidates) {
|
|
92
|
+
if (await fsx.exists(candidate)) {
|
|
93
|
+
return candidate;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
return undefined;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* JAVA_HOME 경로 설정 (gradle.properties)
|
|
102
|
+
*/
|
|
103
|
+
async function _configureJavaHomePath(androidPath: string): Promise<void> {
|
|
104
|
+
const gradlePropsPath = pathx.posixResolve(androidPath, "gradle.properties");
|
|
105
|
+
|
|
106
|
+
if (!(await fsx.exists(gradlePropsPath))) {
|
|
107
|
+
_logger.warn(`gradle.properties 파일을 찾을 수 없습니다: ${gradlePropsPath}`);
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
let content = await fsx.read(gradlePropsPath);
|
|
112
|
+
|
|
113
|
+
const java21Path = await findJava21();
|
|
114
|
+
if (java21Path != null && !content.includes("org.gradle.java.home")) {
|
|
115
|
+
// Windows 경로 이스케이프
|
|
116
|
+
const escapedPath = java21Path.replace(/\\/g, "\\\\");
|
|
117
|
+
content += `\norg.gradle.java.home=${escapedPath}\n`;
|
|
118
|
+
await fsx.write(gradlePropsPath, content);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Android SDK 경로 설정 (local.properties)
|
|
124
|
+
*/
|
|
125
|
+
async function _configureSdkPath(androidPath: string): Promise<void> {
|
|
126
|
+
const localPropsPath = pathx.posixResolve(androidPath, "local.properties");
|
|
127
|
+
|
|
128
|
+
const sdkPath = await findAndroidSdk();
|
|
129
|
+
if (sdkPath != null) {
|
|
130
|
+
// Gradle 호환: 항상 forward slash 사용
|
|
131
|
+
await fsx.write(localPropsPath, `sdk.dir=${pathx.posix(sdkPath)}\n`);
|
|
132
|
+
} else {
|
|
133
|
+
throw new Error(
|
|
134
|
+
"Android SDK를 찾을 수 없습니다.\n" +
|
|
135
|
+
"1. Android Studio를 설치하거나\n" +
|
|
136
|
+
"2. ANDROID_HOME 또는 ANDROID_SDK_ROOT 환경 변수를 설정하세요.",
|
|
137
|
+
);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* AndroidManifest.xml 설정 (XML 파서 기반)
|
|
143
|
+
*/
|
|
144
|
+
async function _configureManifest(
|
|
145
|
+
androidPath: string,
|
|
146
|
+
androidConfig?: SdCapacitorAndroidConfig,
|
|
147
|
+
): Promise<void> {
|
|
148
|
+
const manifestPath = pathx.posixResolve(androidPath, "app/src/main/AndroidManifest.xml");
|
|
149
|
+
|
|
150
|
+
if (!(await fsx.exists(manifestPath))) {
|
|
151
|
+
throw new Error(`AndroidManifest.xml 파일을 찾을 수 없습니다: ${manifestPath}`);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
const content = await fsx.read(manifestPath);
|
|
155
|
+
|
|
156
|
+
// XML 선언 보존 (xml.parse는 선언을 무시하므로 수동 보존)
|
|
157
|
+
const declMatch = content.match(/^(<\?xml[^?]*\?>\s*)/);
|
|
158
|
+
const xmlDecl = declMatch?.[1] ?? "";
|
|
159
|
+
const xmlBody = declMatch != null ? content.slice(declMatch[0].length) : content;
|
|
160
|
+
|
|
161
|
+
type Attrs = Record<string, string>;
|
|
162
|
+
type XmlNode = { $?: Attrs; [key: string]: unknown };
|
|
163
|
+
|
|
164
|
+
const parsed = xml.parse(xmlBody) as { manifest?: XmlNode };
|
|
165
|
+
const manifest = parsed.manifest;
|
|
166
|
+
if (manifest == null) {
|
|
167
|
+
_logger.warn("AndroidManifest.xml에 manifest 요소가 없습니다");
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
const apps = manifest["application"] as Array<XmlNode | string> | undefined;
|
|
172
|
+
if (apps == null || apps.length === 0) {
|
|
173
|
+
_logger.warn("AndroidManifest.xml에 application 요소가 없습니다");
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
// 자식 요소 없는 <application></application>은 텍스트 노드로 파싱될 수 있음
|
|
177
|
+
if (typeof apps[0] !== "object") {
|
|
178
|
+
apps[0] = {};
|
|
179
|
+
}
|
|
180
|
+
const app = apps[0];
|
|
181
|
+
app.$ ??= {};
|
|
182
|
+
|
|
183
|
+
// usesCleartextTraffic 설정
|
|
184
|
+
app.$["android:usesCleartextTraffic"] ??= "true";
|
|
185
|
+
|
|
186
|
+
// 추가 권한 설정
|
|
187
|
+
const permissions = androidConfig?.permissions ?? [];
|
|
188
|
+
if (permissions.length > 0) {
|
|
189
|
+
if (manifest["uses-permission"] == null) {
|
|
190
|
+
manifest["uses-permission"] = [];
|
|
191
|
+
}
|
|
192
|
+
const permArray = manifest["uses-permission"] as XmlNode[];
|
|
193
|
+
for (const perm of permissions) {
|
|
194
|
+
const permName = `android.permission.${perm.name}`;
|
|
195
|
+
const exists = permArray.some((p) => p.$?.["android:name"] === permName);
|
|
196
|
+
if (!exists) {
|
|
197
|
+
const attrs: Attrs = { "android:name": permName };
|
|
198
|
+
if (perm.maxSdkVersion != null) {
|
|
199
|
+
attrs["android:maxSdkVersion"] = String(perm.maxSdkVersion);
|
|
200
|
+
}
|
|
201
|
+
if (perm.ignore != null) {
|
|
202
|
+
attrs["tools:ignore"] = perm.ignore;
|
|
203
|
+
manifest.$ ??= {};
|
|
204
|
+
manifest.$["xmlns:tools"] ??= "http://schemas.android.com/tools";
|
|
205
|
+
}
|
|
206
|
+
permArray.push({ $: attrs });
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
// 추가 application 속성 설정
|
|
212
|
+
const appConfig = androidConfig?.config;
|
|
213
|
+
if (appConfig != null) {
|
|
214
|
+
for (const [key, value] of Object.entries(appConfig)) {
|
|
215
|
+
const attrName = `android:${key}`;
|
|
216
|
+
app.$[attrName] ??= String(value);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
// intentFilters 설정
|
|
221
|
+
const intentFilters = androidConfig?.intentFilters ?? [];
|
|
222
|
+
if (intentFilters.length > 0) {
|
|
223
|
+
const activities = app["activity"] as XmlNode[] | undefined;
|
|
224
|
+
const mainActivity = activities?.find((a) => a.$?.["android:name"] === ".MainActivity");
|
|
225
|
+
if (mainActivity != null) {
|
|
226
|
+
if (mainActivity["intent-filter"] == null) {
|
|
227
|
+
mainActivity["intent-filter"] = [];
|
|
228
|
+
}
|
|
229
|
+
const filterArray = mainActivity["intent-filter"] as XmlNode[];
|
|
230
|
+
for (const filter of intentFilters) {
|
|
231
|
+
const filterKey = filter.action ?? filter.category ?? "";
|
|
232
|
+
if (filterKey === "") continue;
|
|
233
|
+
const exists = filterArray.some((f) => {
|
|
234
|
+
const actions = f["action"] as XmlNode[] | undefined;
|
|
235
|
+
const categories = f["category"] as XmlNode[] | undefined;
|
|
236
|
+
return (
|
|
237
|
+
(filter.action != null &&
|
|
238
|
+
actions?.some((a) => a.$?.["android:name"] === filter.action)) ||
|
|
239
|
+
(filter.category != null &&
|
|
240
|
+
categories?.some((c) => c.$?.["android:name"] === filter.category))
|
|
241
|
+
);
|
|
242
|
+
});
|
|
243
|
+
if (!exists) {
|
|
244
|
+
const newFilter: XmlNode = {};
|
|
245
|
+
if (filter.action != null) {
|
|
246
|
+
newFilter["action"] = [{ $: { "android:name": filter.action } }];
|
|
247
|
+
}
|
|
248
|
+
if (filter.category != null) {
|
|
249
|
+
newFilter["category"] = [{ $: { "android:name": filter.category } }];
|
|
250
|
+
}
|
|
251
|
+
filterArray.push(newFilter);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
const result = xml.stringify(parsed, { format: true, indentBy: " ", suppressEmptyNode: true });
|
|
258
|
+
await fsx.write(manifestPath, xmlDecl + result);
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* 루트 build.gradle에 Kotlin Gradle 플러그인 classpath 추가
|
|
263
|
+
*/
|
|
264
|
+
async function _configureRootBuildGradle(androidPath: string): Promise<void> {
|
|
265
|
+
const rootBuildGradlePath = pathx.posixResolve(androidPath, "build.gradle");
|
|
266
|
+
|
|
267
|
+
if (!(await fsx.exists(rootBuildGradlePath))) {
|
|
268
|
+
_logger.warn(`루트 build.gradle 파일을 찾을 수 없습니다: ${rootBuildGradlePath}`);
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
let content = await fsx.read(rootBuildGradlePath);
|
|
273
|
+
|
|
274
|
+
if (!content.includes("kotlin-gradle-plugin")) {
|
|
275
|
+
content = content.replace(
|
|
276
|
+
/classpath 'com\.android\.tools\.build:gradle:[^']+'/,
|
|
277
|
+
`$&\n classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:2.1.20'`,
|
|
278
|
+
);
|
|
279
|
+
await fsx.write(rootBuildGradlePath, content);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* build.gradle 수정 (서명 설정 제외)
|
|
285
|
+
*/
|
|
286
|
+
async function _configureBuildGradle(
|
|
287
|
+
androidPath: string,
|
|
288
|
+
version: string,
|
|
289
|
+
sdkVersion?: number,
|
|
290
|
+
): Promise<void> {
|
|
291
|
+
const buildGradlePath = pathx.posixResolve(androidPath, "app/build.gradle");
|
|
292
|
+
|
|
293
|
+
if (!(await fsx.exists(buildGradlePath))) {
|
|
294
|
+
throw new Error(`build.gradle 파일을 찾을 수 없습니다: ${buildGradlePath}`);
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
let content = await fsx.read(buildGradlePath);
|
|
298
|
+
|
|
299
|
+
// versionName, versionCode 설정
|
|
300
|
+
const cleanVersion = version.replace(/-.*$/, "");
|
|
301
|
+
const versionParts = cleanVersion.split(".");
|
|
302
|
+
const versionCode =
|
|
303
|
+
parseInt(versionParts[0] ?? "0") * 1000000 +
|
|
304
|
+
parseInt(versionParts[1] ?? "0") * 1000 +
|
|
305
|
+
parseInt(versionParts[2] ?? "0");
|
|
306
|
+
|
|
307
|
+
content = content.replace(/versionCode \d+/, `versionCode ${versionCode}`);
|
|
308
|
+
content = content.replace(/versionName "[^"]+"/, `versionName "${version}"`);
|
|
309
|
+
|
|
310
|
+
// SDK 버전 설정
|
|
311
|
+
if (sdkVersion != null) {
|
|
312
|
+
content = content.replace(/minSdkVersion .+/, `minSdkVersion ${sdkVersion}`);
|
|
313
|
+
content = content.replace(/targetSdkVersion .+/, `targetSdkVersion ${sdkVersion}`);
|
|
314
|
+
} else {
|
|
315
|
+
content = content.replace(/minSdkVersion .+/, `minSdkVersion rootProject.ext.minSdkVersion`);
|
|
316
|
+
content = content.replace(
|
|
317
|
+
/targetSdkVersion .+/,
|
|
318
|
+
`targetSdkVersion rootProject.ext.targetSdkVersion`,
|
|
319
|
+
);
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
await fsx.write(buildGradlePath, content);
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
/**
|
|
326
|
+
* styles.xml의 스플래시 테마 수정
|
|
327
|
+
*
|
|
328
|
+
* 1. Theme.SplashScreen parent → Theme.AppCompat.DayNight.NoActionBar
|
|
329
|
+
* Theme.SplashScreen은 android:windowBackground에 compat_splash_screen을 설정하여
|
|
330
|
+
* android:background(@drawable/splash)와 이중 표시를 발생시킨다.
|
|
331
|
+
* installSplashScreen()을 호출하지 않으므로 Theme.SplashScreen 기능이 불필요하다.
|
|
332
|
+
*
|
|
333
|
+
* 2. android:background → android:windowBackground
|
|
334
|
+
* android:background는 View 레벨 속성으로 AppCompat 뷰 계층의 여러 View에 상속되어
|
|
335
|
+
* 동일한 splash 로고가 다중 레이어에 중복 렌더링된다.
|
|
336
|
+
* android:windowBackground는 Window의 DecorView에만 적용되어 단일 렌더링을 보장한다.
|
|
337
|
+
*/
|
|
338
|
+
async function _configureStyles(androidPath: string): Promise<void> {
|
|
339
|
+
const stylesPath = pathx.posixResolve(androidPath, "app/src/main/res/values/styles.xml");
|
|
340
|
+
|
|
341
|
+
if (!(await fsx.exists(stylesPath))) {
|
|
342
|
+
_logger.warn(`styles.xml 파일을 찾을 수 없습니다: ${stylesPath}`);
|
|
343
|
+
return;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
let content = await fsx.read(stylesPath);
|
|
347
|
+
let changed = false;
|
|
348
|
+
|
|
349
|
+
if (content.includes('parent="Theme.SplashScreen"')) {
|
|
350
|
+
content = content.replace(
|
|
351
|
+
'parent="Theme.SplashScreen"',
|
|
352
|
+
'parent="Theme.AppCompat.DayNight.NoActionBar"',
|
|
353
|
+
);
|
|
354
|
+
changed = true;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
if (content.includes('"android:background">@drawable/splash')) {
|
|
358
|
+
content = content.replace(
|
|
359
|
+
'"android:background">@drawable/splash',
|
|
360
|
+
'"android:windowBackground">@drawable/splash',
|
|
361
|
+
);
|
|
362
|
+
changed = true;
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
if (changed) {
|
|
366
|
+
await fsx.write(stylesPath, content);
|
|
367
|
+
}
|
|
368
|
+
}
|