tapflow 0.8.0-next.0 → 0.8.0-next.2
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/commands/doctor.d.ts +1 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +6 -2
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +26 -6
- package/dist/commands/setup.js.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/doctor.d.ts +1 -1
- package/dist/lib/doctor.d.ts.map +1 -1
- package/dist/lib/doctor.js +64 -57
- package/dist/lib/doctor.js.map +1 -1
- package/dist/lib/setup.d.ts.map +1 -1
- package/dist/lib/setup.js +257 -166
- package/dist/lib/setup.js.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAuBA,wBAAsB,SAAS,CAAC,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAuBA,wBAAsB,SAAS,CAAC,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAqC/F"}
|
package/dist/commands/doctor.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { runDoctorChecks } from '../lib/doctor.js';
|
|
2
|
-
import { banner, step, GREEN, RED, YELLOW, BOLD, DIM, R } from '../lib/print.js';
|
|
2
|
+
import { banner, step, warn, GREEN, RED, YELLOW, BOLD, DIM, R } from '../lib/print.js';
|
|
3
3
|
function printChecks(checks) {
|
|
4
4
|
for (const check of checks) {
|
|
5
5
|
if (check.ok) {
|
|
@@ -23,7 +23,11 @@ function hasFailures(result) {
|
|
|
23
23
|
return all.some((c) => !c.ok && !c.warn);
|
|
24
24
|
}
|
|
25
25
|
export async function cmdDoctor(opts = {}) {
|
|
26
|
-
|
|
26
|
+
if (opts.platform && opts.platform !== 'ios' && opts.platform !== 'android') {
|
|
27
|
+
warn(`Unknown platform: ${opts.platform}. Supported: ios, android`);
|
|
28
|
+
process.exit(1);
|
|
29
|
+
}
|
|
30
|
+
const result = await runDoctorChecks(opts.platform);
|
|
27
31
|
if (opts.json) {
|
|
28
32
|
const ok = !hasFailures(result);
|
|
29
33
|
console.log(JSON.stringify({ ok, common: result.common, ios: result.ios, android: result.android }, null, 2));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAuC,MAAM,kBAAkB,CAAA;AACvF,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAuCA,wBAAsB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgC/D"}
|
package/dist/commands/setup.js
CHANGED
|
@@ -1,17 +1,25 @@
|
|
|
1
|
+
import { confirm, isCancel } from '@clack/prompts';
|
|
1
2
|
import { runSetupAndroid, runSetupIos } from '../lib/setup.js';
|
|
2
3
|
import { resolveAdb } from '../lib/doctor.js';
|
|
3
|
-
import { warn, BOLD, GREEN, RED, YELLOW, DIM, R } from '../lib/print.js';
|
|
4
|
+
import { warn, banner, BOLD, GREEN, RED, YELLOW, DIM, R } from '../lib/print.js';
|
|
4
5
|
const RUNNERS = {
|
|
5
6
|
ios: runSetupIos,
|
|
6
7
|
android: runSetupAndroid,
|
|
7
8
|
};
|
|
8
9
|
// 인자 없이 실행 시 환경을 보고 가능한 플랫폼을 고른다.
|
|
9
|
-
|
|
10
|
+
// macOS면 iOS, adb가 있으면 Android 자동. adb가 없어도 TTY면 Android 세팅 의향을 묻는다.
|
|
11
|
+
async function detectPlatforms() {
|
|
10
12
|
const platforms = [];
|
|
11
13
|
if (process.platform === 'darwin')
|
|
12
14
|
platforms.push('ios');
|
|
13
|
-
if (resolveAdb() !== null)
|
|
15
|
+
if (resolveAdb() !== null) {
|
|
14
16
|
platforms.push('android');
|
|
17
|
+
}
|
|
18
|
+
else if (process.platform === 'darwin' && process.stdout.isTTY) {
|
|
19
|
+
const also = await confirm({ message: 'Also set up Android? (adb not found)' });
|
|
20
|
+
if (!isCancel(also) && also)
|
|
21
|
+
platforms.push('android');
|
|
22
|
+
}
|
|
15
23
|
return platforms;
|
|
16
24
|
}
|
|
17
25
|
function printResults(results) {
|
|
@@ -43,16 +51,28 @@ export async function cmdSetup(platform) {
|
|
|
43
51
|
targets = [platform];
|
|
44
52
|
}
|
|
45
53
|
else {
|
|
46
|
-
targets = detectPlatforms();
|
|
54
|
+
targets = await detectPlatforms();
|
|
47
55
|
if (targets.length === 0) {
|
|
48
56
|
warn('No supported platform detected. Run: tapflow setup ios | android');
|
|
49
57
|
return;
|
|
50
58
|
}
|
|
51
59
|
}
|
|
60
|
+
// 각 플랫폼 실행 후, 마지막에 relay/agent READY 톤의 요약 배너로 준비 상태를 알린다.
|
|
61
|
+
const summary = [];
|
|
62
|
+
let allReady = true;
|
|
52
63
|
for (const t of targets) {
|
|
53
64
|
console.log(`\n${BOLD}tapflow setup ${t}${R}\n`);
|
|
54
|
-
|
|
65
|
+
const results = await RUNNERS[t]();
|
|
66
|
+
printResults(results);
|
|
67
|
+
const pending = results.filter((r) => !r.ok);
|
|
68
|
+
if (pending.length === 0) {
|
|
69
|
+
summary.push(`${t}: ready`);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
allReady = false;
|
|
73
|
+
summary.push(`${t}: incomplete — ${pending.map((r) => r.label).join(', ')}`);
|
|
74
|
+
}
|
|
55
75
|
}
|
|
56
|
-
|
|
76
|
+
banner(allReady ? 'success' : 'error', allReady ? 'SETUP COMPLETE' : 'SETUP INCOMPLETE', summary);
|
|
57
77
|
}
|
|
58
78
|
//# sourceMappingURL=setup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAwB,MAAM,iBAAiB,CAAA;AACpF,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -36,9 +36,9 @@ cli
|
|
|
36
36
|
process.exit(1);
|
|
37
37
|
});
|
|
38
38
|
cli
|
|
39
|
-
.command('doctor', 'Check system prerequisites')
|
|
39
|
+
.command('doctor [platform]', 'Check system prerequisites (ios | android; omit for all)')
|
|
40
40
|
.option('--json', 'Output machine-readable JSON')
|
|
41
|
-
.action((opts) => cmdDoctor(opts));
|
|
41
|
+
.action((platform, opts) => cmdDoctor({ ...opts, platform }));
|
|
42
42
|
cli
|
|
43
43
|
.command('setup [platform]', 'Set up the environment (ios | android; omit to auto-detect)')
|
|
44
44
|
.action((platform) => cmdSetup(platform));
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAEzB,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AACzD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAwB,CAAA;AACnH,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAE5C,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,GAAG,EAAE,EAAE;IACvC,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;IAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA;AAEF,MAAM,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAA;AAE1B,GAAG;KACA,OAAO,CAAC,MAAM,EAAE,4CAA4C,CAAC;KAC7D,MAAM,CAAC,qBAAqB,EAAE,uCAAuC,CAAC;KACtE,MAAM,CAAC,SAAS,EAAE,wCAAwC,CAAC;KAC3D,MAAM,CAAC,CAAC,IAA0C,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAA;AAE9E,GAAG;KACA,OAAO,CAAC,oBAAoB,EAAE,2CAA2C,CAAC;KAC1E,MAAM,CAAC,eAAe,EAAE,4CAA4C,CAAC;KACrE,MAAM,CAAC,CAAC,UAAkB,EAAE,IAAwB,EAAE,EAAE;IACvD,IAAI,UAAU,KAAK,MAAM;QAAE,OAAO,YAAY,CAAC,IAAI,CAAC,CAAA;IACpD,OAAO,CAAC,KAAK,CAAC,6BAA6B,UAAU,EAAE,CAAC,CAAA;IACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA;AAEJ,GAAG;KACA,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/doctor.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ export interface DoctorResult {
|
|
|
9
9
|
ios: DoctorCheck[] | null;
|
|
10
10
|
android: DoctorCheck[] | null;
|
|
11
11
|
}
|
|
12
|
-
export declare function runDoctorChecks(): Promise<DoctorResult>;
|
|
12
|
+
export declare function runDoctorChecks(platform?: string): Promise<DoctorResult>;
|
|
13
13
|
export interface AdbResolution {
|
|
14
14
|
path: string;
|
|
15
15
|
inPath: boolean;
|
package/dist/lib/doctor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/lib/doctor.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,EAAE,EAAE,OAAO,CAAA;IACX,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,GAAG,EAAE,WAAW,EAAE,GAAG,IAAI,CAAA;IACzB,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI,CAAA;CAC9B;
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/lib/doctor.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,EAAE,EAAE,OAAO,CAAA;IACX,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,GAAG,EAAE,WAAW,EAAE,GAAG,IAAI,CAAA;IACzB,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI,CAAA;CAC9B;AAGD,wBAAsB,eAAe,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAU9E;AAoHD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,wBAAgB,UAAU,IAAI,aAAa,GAAG,IAAI,CAWjD"}
|
package/dist/lib/doctor.js
CHANGED
|
@@ -2,29 +2,62 @@ import { execSync } from 'node:child_process';
|
|
|
2
2
|
import { existsSync } from 'node:fs';
|
|
3
3
|
import { homedir } from 'node:os';
|
|
4
4
|
import { join } from 'node:path';
|
|
5
|
-
|
|
5
|
+
// platform: 'ios' | 'android' 지정 시 해당 플랫폼만. 없으면 자동(iOS는 macOS에서만, Android은 항상).
|
|
6
|
+
export async function runDoctorChecks(platform) {
|
|
6
7
|
const isMac = process.platform === 'darwin';
|
|
7
|
-
const
|
|
8
|
+
const wantIos = platform === 'ios' || (!platform && isMac);
|
|
9
|
+
const wantAndroid = platform === 'android' || !platform;
|
|
8
10
|
return {
|
|
9
11
|
common: [checkNodeVersion()],
|
|
10
|
-
ios:
|
|
11
|
-
android:
|
|
12
|
+
ios: wantIos ? buildIosChecks(isMac) : null,
|
|
13
|
+
android: wantAndroid ? buildAndroidChecks(resolveAdb()) : null,
|
|
12
14
|
};
|
|
13
15
|
}
|
|
16
|
+
function buildIosChecks(isMac) {
|
|
17
|
+
if (!isMac) {
|
|
18
|
+
return [{ label: 'iOS', ok: false, warn: true, detail: 'iOS testing requires macOS.' }];
|
|
19
|
+
}
|
|
20
|
+
return [checkXcode(), checkSimctl(), checkBootedSimulator()];
|
|
21
|
+
}
|
|
22
|
+
// adb가 없어도 섹션을 숨기지 않고 진단을 노출한다(Android를 세팅하려는 사용자가 볼 수 있도록).
|
|
23
|
+
// iOS(Xcode / simctl / Simulator)와 대칭: Android SDK / adb / AVD.
|
|
14
24
|
function buildAndroidChecks(adb) {
|
|
15
|
-
|
|
25
|
+
return [checkAndroidSdk(), checkAdbStatus(adb), checkAvdAvailable()];
|
|
26
|
+
}
|
|
27
|
+
function androidSdkDir() {
|
|
28
|
+
const candidates = [
|
|
29
|
+
process.env.ANDROID_HOME,
|
|
30
|
+
process.env.ANDROID_SDK_ROOT,
|
|
31
|
+
join(homedir(), 'Library', 'Android', 'sdk'), // macOS
|
|
32
|
+
join(homedir(), 'Android', 'Sdk'), // Linux
|
|
33
|
+
];
|
|
34
|
+
for (const c of candidates) {
|
|
35
|
+
if (c && existsSync(join(c, 'cmdline-tools', 'latest', 'bin', 'sdkmanager')))
|
|
36
|
+
return c;
|
|
37
|
+
}
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
function checkAndroidSdk() {
|
|
41
|
+
const dir = androidSdkDir();
|
|
42
|
+
if (dir) {
|
|
43
|
+
return { label: `Android SDK: ${dir}`, ok: true };
|
|
44
|
+
}
|
|
45
|
+
return { label: 'Android SDK', ok: false, detail: 'Android SDK not found. Run: tapflow setup android' };
|
|
46
|
+
}
|
|
47
|
+
function checkAdbStatus(adb) {
|
|
48
|
+
if (!adb) {
|
|
49
|
+
// 미설치는 iOS(Xcode)와 동일하게 fail(✗)로 — setup으로 해결 가능함을 안내.
|
|
50
|
+
return { label: 'adb', ok: false, detail: 'adb not found. Run: tapflow setup android' };
|
|
51
|
+
}
|
|
16
52
|
if (adb.inPath) {
|
|
17
|
-
return
|
|
53
|
+
return checkAdb(adb.path);
|
|
18
54
|
}
|
|
19
|
-
return
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
},
|
|
26
|
-
checkBootedAvd(adb.path),
|
|
27
|
-
];
|
|
55
|
+
return {
|
|
56
|
+
label: 'adb (not in PATH)',
|
|
57
|
+
ok: false,
|
|
58
|
+
warn: true,
|
|
59
|
+
detail: `adb found at ${adb.path} but not in PATH. Run: tapflow setup android`,
|
|
60
|
+
};
|
|
28
61
|
}
|
|
29
62
|
function checkXcode() {
|
|
30
63
|
try {
|
|
@@ -60,20 +93,20 @@ function checkSimctl() {
|
|
|
60
93
|
};
|
|
61
94
|
}
|
|
62
95
|
}
|
|
96
|
+
// 부팅은 QA Session 접속 시 relay가 on-demand로 한다 — 미부팅은 정상, 디바이스 존재만 확인.
|
|
63
97
|
function checkBootedSimulator() {
|
|
64
98
|
try {
|
|
65
99
|
const raw = execSync('xcrun simctl list devices --json', { encoding: 'utf8', stdio: 'pipe' });
|
|
66
100
|
const data = JSON.parse(raw);
|
|
67
101
|
const allDevices = Object.values(data.devices).flat();
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
return { label: `Simulator booted: ${booted.name}`, ok: true };
|
|
102
|
+
if (allDevices.length === 0) {
|
|
103
|
+
return { label: 'Simulator', ok: false, warn: true, detail: 'No simulator available. Run: tapflow setup ios' };
|
|
71
104
|
}
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
? `
|
|
75
|
-
:
|
|
76
|
-
|
|
105
|
+
const booted = allDevices.find((d) => d.state === 'Booted');
|
|
106
|
+
return {
|
|
107
|
+
label: booted ? `Simulator: ${booted.name} (booted)` : `Simulator available (${allDevices.length})`,
|
|
108
|
+
ok: true,
|
|
109
|
+
};
|
|
77
110
|
}
|
|
78
111
|
catch {
|
|
79
112
|
return { label: 'Simulator', ok: false, detail: 'Could not query simulators. Is Xcode installed?' };
|
|
@@ -118,44 +151,18 @@ function standardAdbPaths() {
|
|
|
118
151
|
function checkAdb(path) {
|
|
119
152
|
return { label: `adb found: ${path}`, ok: true };
|
|
120
153
|
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
const out = execSync(`${adbCmd} devices`, { encoding: 'utf8', stdio: 'pipe' });
|
|
124
|
-
const lines = out.trim().split('\n').slice(1).filter(Boolean);
|
|
125
|
-
const emulator = lines.find((l) => l.startsWith('emulator-'));
|
|
126
|
-
if (!emulator) {
|
|
127
|
-
const hint = listAvdHint();
|
|
128
|
-
return {
|
|
129
|
-
label: 'AVD',
|
|
130
|
-
ok: false,
|
|
131
|
-
warn: true,
|
|
132
|
-
detail: hint
|
|
133
|
-
? `No running emulator. Run: emulator @${hint}`
|
|
134
|
-
: 'No running emulator. Start an AVD from Android Studio > Device Manager.',
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
const serial = emulator.split('\t')[0]?.trim() ?? '';
|
|
138
|
-
try {
|
|
139
|
-
const avdName = execSync(`${adbCmd} -s ${serial} emu avd name`, { encoding: 'utf8', stdio: 'pipe' })
|
|
140
|
-
.split('\n')[0]
|
|
141
|
-
?.trim() ?? serial;
|
|
142
|
-
return { label: `AVD: ${avdName}`, ok: true };
|
|
143
|
-
}
|
|
144
|
-
catch {
|
|
145
|
-
return { label: `AVD: ${serial}`, ok: true };
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
catch {
|
|
149
|
-
return { label: 'AVD', ok: false, detail: 'Could not query running emulators.' };
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
function listAvdHint() {
|
|
154
|
+
// 부팅은 relay on-demand가 한다 — AVD가 하나라도 존재하면 ok.
|
|
155
|
+
function checkAvdAvailable() {
|
|
153
156
|
try {
|
|
154
157
|
const out = execSync('emulator -list-avds', { encoding: 'utf8', stdio: 'pipe' }).trim();
|
|
155
|
-
|
|
158
|
+
const avds = out ? out.split('\n').map((l) => l.trim()).filter(Boolean) : [];
|
|
159
|
+
if (avds.length > 0) {
|
|
160
|
+
return { label: `AVD available: ${avds[0]}`, ok: true };
|
|
161
|
+
}
|
|
156
162
|
}
|
|
157
163
|
catch {
|
|
158
|
-
|
|
164
|
+
// emulator 미설치/조회 실패 — 아래 안내
|
|
159
165
|
}
|
|
166
|
+
return { label: 'AVD', ok: false, warn: true, detail: 'No AVD found. Run: tapflow setup android' };
|
|
160
167
|
}
|
|
161
168
|
//# sourceMappingURL=doctor.js.map
|
package/dist/lib/doctor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/lib/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAehC,MAAM,CAAC,KAAK,UAAU,eAAe;
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/lib/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/setup.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/lib/setup.ts"],"names":[],"mappings":"AAKA,OAAO,
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/lib/setup.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AAK9C,MAAM,MAAM,eAAe,GAAG,WAAW,CAAA;AA0DzC,wBAAsB,eAAe,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAUlE;AAgCD,wBAAsB,WAAW,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAQ9D"}
|
package/dist/lib/setup.js
CHANGED
|
@@ -1,32 +1,108 @@
|
|
|
1
1
|
import { execSync, spawnSync } from 'node:child_process';
|
|
2
2
|
import { existsSync, readFileSync, appendFileSync } from 'node:fs';
|
|
3
3
|
import { homedir } from 'node:os';
|
|
4
|
-
import {
|
|
4
|
+
import { join } from 'node:path';
|
|
5
5
|
import { confirm, text, isCancel } from '@clack/prompts';
|
|
6
|
-
import {
|
|
7
|
-
import { createSpinner, step } from './print.js';
|
|
6
|
+
import { step } from './print.js';
|
|
8
7
|
const PATH_MARKER_START = '# >>> tapflow android sdk >>>';
|
|
9
8
|
const PATH_MARKER_END = '# <<< tapflow android sdk <<<';
|
|
10
|
-
|
|
9
|
+
// SDK를 표준 경로에 자기완결로 고정한다(cmdline-tools·platform-tools·emulator·system-image 모두 이 아래).
|
|
10
|
+
const ANDROID_SDK_DIR = join(homedir(), 'Library', 'Android', 'sdk');
|
|
11
11
|
const XCODE_APP = '/Applications/Xcode.app';
|
|
12
12
|
const XCODE_APPSTORE = 'https://apps.apple.com/app/xcode/id497799835';
|
|
13
13
|
const XCODE_DEVELOPER_DIR = '/Applications/Xcode.app/Contents/Developer';
|
|
14
|
+
// Play Store 이미지는 crash 이슈가 있어 google_apis(non-playstore)를 쓴다.
|
|
15
|
+
const AVD_IMAGE_API = 'android-35';
|
|
16
|
+
// 폼팩터별로 해상도가 골고루 분포하도록 4종. device id는 SDK마다 다르므로 후보 중 가용한 첫 id 선택.
|
|
17
|
+
const AVD_SPECS = [
|
|
18
|
+
{ name: 'tapflow-compact', deviceCandidates: ['pixel_5', 'pixel_4a', 'pixel_4'] },
|
|
19
|
+
{ name: 'tapflow-phone', deviceCandidates: ['pixel_7', 'pixel_6', 'pixel'] },
|
|
20
|
+
{ name: 'tapflow-large', deviceCandidates: ['pixel_7_pro', 'pixel_6_pro', 'pixel_4_xl'] },
|
|
21
|
+
{ name: 'tapflow-tablet', deviceCandidates: ['pixel_tablet', 'pixel_c', 'Nexus 10'] },
|
|
22
|
+
];
|
|
23
|
+
function androidSystemImage() {
|
|
24
|
+
const abi = process.arch === 'arm64' ? 'arm64-v8a' : 'x86_64';
|
|
25
|
+
return `system-images;${AVD_IMAGE_API};google_apis;${abi}`;
|
|
26
|
+
}
|
|
27
|
+
// 디바이스 부팅은 하지 않는다 — QA Session 접속 시 relay가 on-demand로 부팅한다.
|
|
28
|
+
// setup은 "부팅 가능한 디바이스/AVD가 준비된 상태"까지만 보장한다.
|
|
29
|
+
// confirm 후 sudo 명령들을 순차 실행(stdio 상속 → sudo가 비번 프롬프트를 직접 처리).
|
|
30
|
+
async function runSudo(message, commands) {
|
|
31
|
+
const proceed = await confirm({ message });
|
|
32
|
+
if (isCancel(proceed) || !proceed)
|
|
33
|
+
return false;
|
|
34
|
+
console.log();
|
|
35
|
+
for (const args of commands) {
|
|
36
|
+
const r = spawnSync('sudo', args, { stdio: 'inherit' });
|
|
37
|
+
if (r.status !== 0)
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
function isXcodeReady() {
|
|
43
|
+
try {
|
|
44
|
+
execSync('xcodebuild -version', { stdio: 'pipe' });
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
function hasIosDevice() {
|
|
52
|
+
try {
|
|
53
|
+
const raw = execSync('xcrun simctl list devices --json', { encoding: 'utf8', stdio: 'pipe' });
|
|
54
|
+
const data = JSON.parse(raw);
|
|
55
|
+
return Object.values(data.devices).some((arr) => arr.length > 0);
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
14
61
|
export async function runSetupAndroid() {
|
|
15
62
|
const results = [];
|
|
16
63
|
const brew = await checkAndFixHomebrew();
|
|
17
64
|
results.push(brew);
|
|
18
|
-
|
|
19
|
-
results.push(
|
|
20
|
-
|
|
65
|
+
const jdk = await checkAndFixJdk(brew.ok);
|
|
66
|
+
results.push(jdk);
|
|
67
|
+
const sdk = await checkAndFixAndroidSdk(brew.ok, jdk.ok);
|
|
68
|
+
results.push(sdk);
|
|
69
|
+
results.push(await checkAndFixAvd(sdk.ok));
|
|
21
70
|
return results;
|
|
22
71
|
}
|
|
72
|
+
// sdkmanager/avdmanager는 SDK 위치를 ANDROID_HOME으로 알아야 한다(자기완결 SDK 기준).
|
|
73
|
+
function androidEnv() {
|
|
74
|
+
return { ...process.env, ANDROID_HOME: ANDROID_SDK_DIR, ANDROID_SDK_ROOT: ANDROID_SDK_DIR };
|
|
75
|
+
}
|
|
76
|
+
const SDK_CMDLINE_BIN = join(ANDROID_SDK_DIR, 'cmdline-tools', 'latest', 'bin');
|
|
77
|
+
// cmdline-tools가 SDK 안에 있고 platform-tools(adb)까지 갖춘 자기완결 상태인지.
|
|
78
|
+
function sdkSelfContained() {
|
|
79
|
+
return existsSync(join(SDK_CMDLINE_BIN, 'sdkmanager')) && existsSync(join(ANDROID_SDK_DIR, 'platform-tools', 'adb'));
|
|
80
|
+
}
|
|
81
|
+
function hasJava() {
|
|
82
|
+
try {
|
|
83
|
+
execSync('/usr/libexec/java_home', { stdio: 'pipe' });
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
function whichSdkmanager() {
|
|
91
|
+
try {
|
|
92
|
+
const p = execSync('which sdkmanager', { encoding: 'utf8', stdio: 'pipe' }).trim();
|
|
93
|
+
return p || null;
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
23
99
|
export async function runSetupIos() {
|
|
24
100
|
const results = [];
|
|
25
101
|
results.push(await checkAndFixHomebrew());
|
|
26
102
|
const xcode = await checkAndFixXcode();
|
|
27
103
|
results.push(xcode);
|
|
28
|
-
results.push(checkXcodeActivation(xcode.ok));
|
|
29
|
-
results.push(checkAndFixSimulator());
|
|
104
|
+
results.push(await checkXcodeActivation(xcode.ok));
|
|
105
|
+
results.push(await checkAndFixSimulator());
|
|
30
106
|
return results;
|
|
31
107
|
}
|
|
32
108
|
async function checkAndFixXcode() {
|
|
@@ -72,70 +148,67 @@ async function checkAndFixXcode() {
|
|
|
72
148
|
detail: 'Xcode not detected yet. Re-run `tapflow setup ios` after installing.',
|
|
73
149
|
};
|
|
74
150
|
}
|
|
75
|
-
// 설치됨 ≠ 사용 가능: active developer dir / 라이선스 / first-launch
|
|
76
|
-
function checkXcodeActivation(xcodeInstalled) {
|
|
151
|
+
// 설치됨 ≠ 사용 가능: active developer dir / 라이선스 / first-launch. sudo 조치를 동의 후 직접 실행.
|
|
152
|
+
async function checkXcodeActivation(xcodeInstalled) {
|
|
77
153
|
if (!xcodeInstalled) {
|
|
78
154
|
return { label: 'Xcode activation', ok: false, warn: true, detail: 'Install Xcode first.' };
|
|
79
155
|
}
|
|
156
|
+
const selectHint = `Run: sudo xcode-select -s ${XCODE_DEVELOPER_DIR}`;
|
|
157
|
+
// 1. active developer dir이 Xcode를 가리키게
|
|
80
158
|
let dir = '';
|
|
81
159
|
try {
|
|
82
160
|
dir = execSync('xcode-select -p', { encoding: 'utf8', stdio: 'pipe' }).trim();
|
|
83
161
|
}
|
|
84
162
|
catch {
|
|
85
|
-
//
|
|
163
|
+
// 미설정 — 아래에서 조치
|
|
86
164
|
}
|
|
87
165
|
if (!dir.includes('Xcode.app')) {
|
|
88
|
-
|
|
89
|
-
label: 'Xcode command-line tools',
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
166
|
+
if (!process.stdout.isTTY) {
|
|
167
|
+
return { label: 'Xcode command-line tools', ok: false, warn: true, detail: selectHint };
|
|
168
|
+
}
|
|
169
|
+
const ok = await runSudo('Set Xcode as the active developer directory (needs sudo)?', [
|
|
170
|
+
['xcode-select', '-s', XCODE_DEVELOPER_DIR],
|
|
171
|
+
]);
|
|
172
|
+
if (!ok) {
|
|
173
|
+
return { label: 'Xcode command-line tools', ok: false, warn: true, detail: selectHint };
|
|
174
|
+
}
|
|
94
175
|
}
|
|
95
|
-
|
|
96
|
-
|
|
176
|
+
// 2. license / first-launch
|
|
177
|
+
if (isXcodeReady()) {
|
|
97
178
|
return { label: 'Xcode ready', ok: true };
|
|
98
179
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
180
|
+
const finishHint = 'Finish Xcode setup: sudo xcodebuild -license accept && sudo xcodebuild -runFirstLaunch';
|
|
181
|
+
if (!process.stdout.isTTY) {
|
|
182
|
+
return { label: 'Xcode setup', ok: false, warn: true, detail: finishHint };
|
|
183
|
+
}
|
|
184
|
+
const ok = await runSudo('Accept the Xcode license and run first launch (needs sudo)?', [
|
|
185
|
+
['xcodebuild', '-license', 'accept'],
|
|
186
|
+
['xcodebuild', '-runFirstLaunch'],
|
|
187
|
+
]);
|
|
188
|
+
if (ok && isXcodeReady()) {
|
|
189
|
+
return { label: 'Xcode ready', ok: true };
|
|
106
190
|
}
|
|
191
|
+
return { label: 'Xcode setup', ok: false, warn: true, detail: finishHint };
|
|
107
192
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
const all = Object.values(data.devices).flat();
|
|
113
|
-
const booted = all.find((d) => d.state === 'Booted');
|
|
114
|
-
if (booted) {
|
|
115
|
-
return { label: `Simulator booted: ${booted.name}`, ok: true };
|
|
116
|
-
}
|
|
117
|
-
const candidate = all.find((d) => d.state === 'Shutdown');
|
|
118
|
-
if (candidate) {
|
|
119
|
-
const boot = spawnSync('xcrun', ['simctl', 'boot', candidate.udid], { stdio: 'pipe' });
|
|
120
|
-
if (boot.status !== 0)
|
|
121
|
-
throw new Error('simctl boot failed');
|
|
122
|
-
return { label: `Simulator booted: ${candidate.name}`, ok: true };
|
|
123
|
-
}
|
|
124
|
-
return {
|
|
125
|
-
label: 'Simulator',
|
|
126
|
-
ok: false,
|
|
127
|
-
warn: true,
|
|
128
|
-
detail: 'No simulators available. Open Xcode to install a simulator runtime.',
|
|
129
|
-
};
|
|
193
|
+
// 부팅하지 않는다 — 시뮬 런타임/디바이스가 준비됐는지만 보장(없으면 런타임 설치).
|
|
194
|
+
async function checkAndFixSimulator() {
|
|
195
|
+
if (hasIosDevice()) {
|
|
196
|
+
return { label: 'Simulator ready', ok: true };
|
|
130
197
|
}
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
ok: false,
|
|
135
|
-
warn: true,
|
|
136
|
-
detail: 'Could not query simulators. Finish Xcode setup first.',
|
|
137
|
-
};
|
|
198
|
+
const hint = 'No simulator runtime. Run: xcodebuild -downloadPlatform iOS (or install one in Xcode).';
|
|
199
|
+
if (!process.stdout.isTTY) {
|
|
200
|
+
return { label: 'Simulator', ok: false, warn: true, detail: hint };
|
|
138
201
|
}
|
|
202
|
+
const proceed = await confirm({ message: 'No iOS simulator found. Download the iOS simulator runtime?' });
|
|
203
|
+
if (isCancel(proceed) || !proceed) {
|
|
204
|
+
return { label: 'Simulator', ok: false, warn: true, detail: `Skipped. ${hint}` };
|
|
205
|
+
}
|
|
206
|
+
console.log();
|
|
207
|
+
const r = spawnSync('xcodebuild', ['-downloadPlatform', 'iOS'], { stdio: 'inherit' });
|
|
208
|
+
if (r.status === 0 && hasIosDevice()) {
|
|
209
|
+
return { label: 'Simulator runtime installed', ok: true };
|
|
210
|
+
}
|
|
211
|
+
return { label: 'Simulator', ok: false, warn: true, detail: 'Could not prepare a simulator. Open Xcode to install a runtime.' };
|
|
139
212
|
}
|
|
140
213
|
// eval "$(...)"로 감싸 명령 치환 결과(설치 스크립트)가 word splitting 없이 단일 평가되게 한다.
|
|
141
214
|
const HOMEBREW_INSTALL = 'eval "$(/usr/bin/curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"';
|
|
@@ -179,139 +252,153 @@ async function checkAndFixHomebrew() {
|
|
|
179
252
|
detail: 'Homebrew install failed. Install manually: https://brew.sh',
|
|
180
253
|
};
|
|
181
254
|
}
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
return { label: `adb in PATH: ${adb.path}`, ok: true };
|
|
187
|
-
}
|
|
188
|
-
// 2. 표준 SDK 위치엔 있지만 PATH에 없음 → shell rc에 등록
|
|
189
|
-
if (adb) {
|
|
190
|
-
const platformTools = dirname(adb.path);
|
|
191
|
-
const registered = registerPathInShellRc(platformTools);
|
|
192
|
-
if (!registered) {
|
|
193
|
-
return {
|
|
194
|
-
label: 'adb (not in PATH)',
|
|
195
|
-
ok: false,
|
|
196
|
-
warn: true,
|
|
197
|
-
detail: `adb found at ${adb.path} but your shell ($SHELL) isn't auto-configurable. Add to your shell config: export PATH="${platformTools}:$PATH"`,
|
|
198
|
-
};
|
|
199
|
-
}
|
|
200
|
-
if (registered.added) {
|
|
201
|
-
return {
|
|
202
|
-
label: 'adb added to PATH',
|
|
203
|
-
ok: true,
|
|
204
|
-
detail: `Added ${platformTools} to PATH in ${registered.file}. Restart your shell or run: source ${registered.file}`,
|
|
205
|
-
};
|
|
206
|
-
}
|
|
207
|
-
return {
|
|
208
|
-
label: 'adb PATH already configured',
|
|
209
|
-
ok: true,
|
|
210
|
-
detail: `${platformTools} already registered in ${registered.file}`,
|
|
211
|
-
};
|
|
255
|
+
// sdkmanager/avdmanager 실행에 JDK가 필요하다(없으면 'Unable to locate a Java Runtime').
|
|
256
|
+
async function checkAndFixJdk(brewAvailable) {
|
|
257
|
+
if (hasJava()) {
|
|
258
|
+
return { label: 'Java (JDK)', ok: true };
|
|
212
259
|
}
|
|
213
|
-
// 3. 어디에도 없음 → brew 설치
|
|
214
260
|
if (!brewAvailable) {
|
|
261
|
+
return { label: 'Java (JDK)', ok: false, detail: 'Install Homebrew first, then: brew install --cask temurin' };
|
|
262
|
+
}
|
|
263
|
+
if (!process.stdout.isTTY) {
|
|
264
|
+
return { label: 'Java (JDK)', ok: false, warn: true, detail: 'Run: brew install --cask temurin (skipped in non-interactive mode)' };
|
|
265
|
+
}
|
|
266
|
+
const proceed = await confirm({
|
|
267
|
+
message: 'A JDK is required for the Android SDK tools. Install Temurin now? (may prompt for sudo)',
|
|
268
|
+
});
|
|
269
|
+
if (isCancel(proceed) || !proceed) {
|
|
270
|
+
return { label: 'Java (JDK)', ok: false, warn: true, detail: 'Skipped. Install: brew install --cask temurin' };
|
|
271
|
+
}
|
|
272
|
+
console.log();
|
|
273
|
+
const r = spawnSync('brew', ['install', '--cask', 'temurin'], { stdio: 'inherit' });
|
|
274
|
+
if (r.status === 0 && hasJava()) {
|
|
275
|
+
return { label: 'Java (JDK) installed', ok: true };
|
|
276
|
+
}
|
|
277
|
+
return { label: 'Java (JDK)', ok: false, detail: 'JDK install failed. Install manually: brew install --cask temurin' };
|
|
278
|
+
}
|
|
279
|
+
// Android SDK를 ~/Library/Android/sdk에 자기완결로 구성한다(Android Studio GUI 불필요).
|
|
280
|
+
async function checkAndFixAndroidSdk(brewAvailable, javaOk) {
|
|
281
|
+
if (sdkSelfContained()) {
|
|
282
|
+
const reg = registerAndroidEnv();
|
|
215
283
|
return {
|
|
216
|
-
label: '
|
|
217
|
-
ok:
|
|
218
|
-
|
|
219
|
-
detail: 'Install Homebrew first, then: brew install android-platform-tools',
|
|
284
|
+
label: 'Android SDK ready',
|
|
285
|
+
ok: true,
|
|
286
|
+
detail: reg?.added ? `Registered ANDROID_HOME/PATH in ${reg.file}.` : undefined,
|
|
220
287
|
};
|
|
221
288
|
}
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
const r = spawnSync('brew', ['install', 'android-platform-tools'], { stdio: 'pipe' });
|
|
225
|
-
spinner.stop(r.status === 0);
|
|
226
|
-
if (r.status === 0) {
|
|
227
|
-
return { label: 'adb installed via Homebrew', ok: true };
|
|
289
|
+
if (!javaOk) {
|
|
290
|
+
return { label: 'Android SDK', ok: false, detail: 'Install a JDK first (Android SDK tools need Java).' };
|
|
228
291
|
}
|
|
292
|
+
// 부트스트랩 sdkmanager 확보: SDK 내부 → PATH(brew) → brew 설치
|
|
293
|
+
let bootSdkmanager = existsSync(join(SDK_CMDLINE_BIN, 'sdkmanager'))
|
|
294
|
+
? join(SDK_CMDLINE_BIN, 'sdkmanager')
|
|
295
|
+
: whichSdkmanager();
|
|
296
|
+
if (!bootSdkmanager) {
|
|
297
|
+
if (!brewAvailable) {
|
|
298
|
+
return { label: 'Android SDK', ok: false, detail: 'Install Homebrew first, then: brew install --cask android-commandlinetools' };
|
|
299
|
+
}
|
|
300
|
+
if (!process.stdout.isTTY) {
|
|
301
|
+
return { label: 'Android SDK', ok: false, warn: true, detail: 'Run: brew install --cask android-commandlinetools (skipped in non-interactive mode)' };
|
|
302
|
+
}
|
|
303
|
+
console.log();
|
|
304
|
+
const b = spawnSync('brew', ['install', '--cask', 'android-commandlinetools'], { stdio: 'inherit' });
|
|
305
|
+
if (b.status !== 0) {
|
|
306
|
+
return { label: 'Android SDK', ok: false, detail: 'Failed to install android-commandlinetools.' };
|
|
307
|
+
}
|
|
308
|
+
bootSdkmanager = whichSdkmanager() ?? 'sdkmanager';
|
|
309
|
+
}
|
|
310
|
+
if (!process.stdout.isTTY) {
|
|
311
|
+
return { label: 'Android SDK', ok: false, warn: true, detail: 'Android SDK not installed (skipped in non-interactive mode).' };
|
|
312
|
+
}
|
|
313
|
+
// 자기완결 SDK 구성: cmdline-tools를 SDK 안에 넣어 이후 SDK 내부 바이너리만 쓰게 한다.
|
|
314
|
+
console.log();
|
|
315
|
+
const root = `--sdk_root=${ANDROID_SDK_DIR}`;
|
|
316
|
+
const licenseInput = 'y\n'.repeat(50);
|
|
317
|
+
spawnSync(bootSdkmanager, [root, '--licenses'], { stdio: ['pipe', 'inherit', 'inherit'], input: licenseInput });
|
|
318
|
+
const inst = spawnSync(bootSdkmanager, [root, 'cmdline-tools;latest', 'platform-tools', 'emulator', androidSystemImage()], { stdio: ['pipe', 'inherit', 'inherit'], input: licenseInput });
|
|
319
|
+
if (inst.status !== 0 || !sdkSelfContained()) {
|
|
320
|
+
return { label: 'Android SDK', ok: false, detail: 'Failed to set up the Android SDK.' };
|
|
321
|
+
}
|
|
322
|
+
const reg = registerAndroidEnv();
|
|
229
323
|
return {
|
|
230
|
-
label: '
|
|
231
|
-
ok:
|
|
232
|
-
|
|
233
|
-
detail: 'brew install android-platform-tools failed. Install manually.',
|
|
324
|
+
label: 'Android SDK installed',
|
|
325
|
+
ok: true,
|
|
326
|
+
detail: `SDK at ${ANDROID_SDK_DIR}.${reg?.added ? ` Restart your shell to pick up ANDROID_HOME/PATH (${reg.file}).` : ''}`,
|
|
234
327
|
};
|
|
235
328
|
}
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
329
|
+
// 부팅하지 않는다 — AVD가 준비됐는지만 보장(없으면 폼팩터별 AVD 생성). 시스템 이미지는 SDK 단계에서 설치됨.
|
|
330
|
+
async function checkAndFixAvd(sdkOk) {
|
|
331
|
+
if (!sdkOk) {
|
|
332
|
+
return { label: 'AVD', ok: false, detail: 'Set up the Android SDK first.' };
|
|
239
333
|
}
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
ok: false,
|
|
244
|
-
warn: true,
|
|
245
|
-
detail: 'Install from https://developer.android.com/studio',
|
|
246
|
-
};
|
|
334
|
+
const avds = listAvds();
|
|
335
|
+
if (avds.length > 0) {
|
|
336
|
+
return { label: `AVD ready: ${avds.length} device(s)`, ok: true };
|
|
247
337
|
}
|
|
248
|
-
|
|
338
|
+
const manualHint = 'Create an AVD with avdmanager (see Android docs).';
|
|
249
339
|
if (!process.stdout.isTTY) {
|
|
250
|
-
return {
|
|
251
|
-
label: 'Android Studio',
|
|
252
|
-
ok: false,
|
|
253
|
-
warn: true,
|
|
254
|
-
detail: 'Run: brew install --cask android-studio (skipped in non-interactive mode)',
|
|
255
|
-
};
|
|
340
|
+
return { label: 'AVD', ok: false, warn: true, detail: `No AVD found. ${manualHint}` };
|
|
256
341
|
}
|
|
257
|
-
const proceed = await confirm({ message: '
|
|
342
|
+
const proceed = await confirm({ message: 'No Android Virtual Device found. Create a set of AVDs now?' });
|
|
258
343
|
if (isCancel(proceed) || !proceed) {
|
|
259
|
-
return {
|
|
260
|
-
label: 'Android Studio',
|
|
261
|
-
ok: false,
|
|
262
|
-
warn: true,
|
|
263
|
-
detail: 'Skipped. Run: brew install --cask android-studio',
|
|
264
|
-
};
|
|
344
|
+
return { label: 'AVD', ok: false, warn: true, detail: `Skipped. ${manualHint}` };
|
|
265
345
|
}
|
|
266
|
-
const
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
spinner.stop(r.status === 0);
|
|
270
|
-
if (r.status === 0) {
|
|
271
|
-
return { label: 'Android Studio installed via Homebrew', ok: true };
|
|
346
|
+
const result = createAvds();
|
|
347
|
+
if (result.ok) {
|
|
348
|
+
return { label: `AVDs created: ${result.created.join(', ')}`, ok: true };
|
|
272
349
|
}
|
|
273
|
-
return {
|
|
274
|
-
label: 'Android Studio',
|
|
275
|
-
ok: false,
|
|
276
|
-
warn: true,
|
|
277
|
-
detail: 'brew install --cask android-studio failed. Install manually.',
|
|
278
|
-
};
|
|
350
|
+
return { label: 'AVD', ok: false, warn: true, detail: result.detail ?? manualHint };
|
|
279
351
|
}
|
|
280
|
-
function
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
if (!adb) {
|
|
285
|
-
return {
|
|
286
|
-
label: 'No running emulator',
|
|
287
|
-
ok: false,
|
|
288
|
-
warn: true,
|
|
289
|
-
detail: 'adb not found. Install/configure adb first, then start an AVD.',
|
|
290
|
-
};
|
|
291
|
-
}
|
|
352
|
+
function listAvds() {
|
|
353
|
+
const emulator = join(ANDROID_SDK_DIR, 'emulator', 'emulator');
|
|
354
|
+
if (!existsSync(emulator))
|
|
355
|
+
return [];
|
|
292
356
|
try {
|
|
293
|
-
const
|
|
294
|
-
const
|
|
295
|
-
|
|
296
|
-
return { label: 'Emulator running', ok: true };
|
|
297
|
-
}
|
|
357
|
+
const r = spawnSync(emulator, ['-list-avds'], { encoding: 'utf8', env: androidEnv() });
|
|
358
|
+
const out = (r.stdout ?? '').trim();
|
|
359
|
+
return out ? out.split('\n').map((l) => l.trim()).filter(Boolean) : [];
|
|
298
360
|
}
|
|
299
361
|
catch {
|
|
300
|
-
|
|
362
|
+
return [];
|
|
301
363
|
}
|
|
302
|
-
|
|
364
|
+
}
|
|
365
|
+
function createAvds() {
|
|
366
|
+
const avdmanager = join(SDK_CMDLINE_BIN, 'avdmanager');
|
|
367
|
+
if (!existsSync(avdmanager)) {
|
|
368
|
+
return { ok: false, created: [], detail: 'Android cmdline-tools not found in the SDK.' };
|
|
369
|
+
}
|
|
370
|
+
const image = androidSystemImage();
|
|
371
|
+
// 폼팩터별로 가용한 device id를 골라 AVD 생성. ('custom hardware profile?'에 'no')
|
|
372
|
+
const available = listDeviceIds(avdmanager);
|
|
373
|
+
const created = [];
|
|
374
|
+
console.log();
|
|
375
|
+
for (const spec of AVD_SPECS) {
|
|
376
|
+
const device = spec.deviceCandidates.find((d) => available.includes(d));
|
|
377
|
+
if (!device)
|
|
378
|
+
continue;
|
|
379
|
+
const r = spawnSync(avdmanager, ['create', 'avd', '-n', spec.name, '-k', image, '-d', device, '--force'], { stdio: ['pipe', 'inherit', 'inherit'], input: 'no\n', env: androidEnv() });
|
|
380
|
+
if (r.status === 0)
|
|
381
|
+
created.push(spec.name);
|
|
382
|
+
}
|
|
383
|
+
if (created.length === 0) {
|
|
384
|
+
return { ok: false, created, detail: 'Could not create any AVD.' };
|
|
385
|
+
}
|
|
386
|
+
return { ok: true, created };
|
|
387
|
+
}
|
|
388
|
+
function listDeviceIds(avdmanager) {
|
|
303
389
|
try {
|
|
304
|
-
const
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
390
|
+
const r = spawnSync(avdmanager, ['list', 'device'], { encoding: 'utf8', env: androidEnv() });
|
|
391
|
+
const out = r.stdout ?? '';
|
|
392
|
+
const ids = [];
|
|
393
|
+
for (const m of out.matchAll(/id:\s*\d+\s+or\s+"([^"]+)"/g)) {
|
|
394
|
+
if (m[1])
|
|
395
|
+
ids.push(m[1]);
|
|
396
|
+
}
|
|
397
|
+
return ids;
|
|
310
398
|
}
|
|
311
399
|
catch {
|
|
312
|
-
|
|
400
|
+
return [];
|
|
313
401
|
}
|
|
314
|
-
return { label: 'No running emulator', ok: false, warn: true, detail: hint };
|
|
315
402
|
}
|
|
316
403
|
// 자동 등록을 지원하는 셸의 rc 경로. 그 외 셸은 null(수동 안내).
|
|
317
404
|
function shellRcPath() {
|
|
@@ -323,7 +410,8 @@ function shellRcPath() {
|
|
|
323
410
|
return join(home, '.bashrc');
|
|
324
411
|
return null;
|
|
325
412
|
}
|
|
326
|
-
|
|
413
|
+
// ANDROID_HOME + platform-tools/emulator PATH를 rc에 멱등 등록(마커 블록).
|
|
414
|
+
function registerAndroidEnv() {
|
|
327
415
|
const file = shellRcPath();
|
|
328
416
|
if (!file)
|
|
329
417
|
return null;
|
|
@@ -331,7 +419,10 @@ function registerPathInShellRc(platformTools) {
|
|
|
331
419
|
if (existing.includes(PATH_MARKER_START)) {
|
|
332
420
|
return { added: false, file };
|
|
333
421
|
}
|
|
334
|
-
const block = `\n${PATH_MARKER_START}\
|
|
422
|
+
const block = `\n${PATH_MARKER_START}\n` +
|
|
423
|
+
`export ANDROID_HOME="${ANDROID_SDK_DIR}"\n` +
|
|
424
|
+
`export PATH="$ANDROID_HOME/platform-tools:$ANDROID_HOME/emulator:$PATH"\n` +
|
|
425
|
+
`${PATH_MARKER_END}\n`;
|
|
335
426
|
appendFileSync(file, block);
|
|
336
427
|
return { added: true, file };
|
|
337
428
|
}
|
package/dist/lib/setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/lib/setup.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/lib/setup.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tapflow",
|
|
3
|
-
"version": "0.8.0-next.
|
|
3
|
+
"version": "0.8.0-next.2",
|
|
4
4
|
"description": "Self-hosted iOS/Android simulator streaming for the whole team",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ios",
|
|
@@ -47,10 +47,10 @@
|
|
|
47
47
|
"cac": "^6.7.14",
|
|
48
48
|
"ws": "^8.0.0",
|
|
49
49
|
"zod": "^4.4.3",
|
|
50
|
-
"@tapflowio/agent-core": "0.8.0-next.
|
|
51
|
-
"@tapflowio/android-agent": "0.8.0-next.
|
|
52
|
-
"@tapflowio/ios-agent": "0.8.0-next.
|
|
53
|
-
"@tapflowio/relay": "0.8.0-next.
|
|
50
|
+
"@tapflowio/agent-core": "0.8.0-next.2",
|
|
51
|
+
"@tapflowio/android-agent": "0.8.0-next.2",
|
|
52
|
+
"@tapflowio/ios-agent": "0.8.0-next.2",
|
|
53
|
+
"@tapflowio/relay": "0.8.0-next.2"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
56
|
"@types/node": "^20.0.0",
|