|
11 | 11 | "jq": "latest", |
12 | 12 | "path:./nix#android-sdk": "", |
13 | 13 | }, |
14 | | - "nix_config": { |
15 | | - "extra-experimental-features": "nix-command flakes" |
16 | | - }, |
17 | 14 | "shell": { |
18 | 15 | "init_hook": [ |
19 | 16 | "echo 'Welcome to analytics-react-native devbox!' > /dev/null", |
20 | | - "sdk_source=\"\"", |
21 | | - "if [ -n \"${ANDROID_SDK_ROOT:-}\" ]; then sdk_source=\"user-defined ANDROID_SDK_ROOT\"; fi", |
22 | | - "if [ -z \"$sdk_source\" ] && [ -n \"${ANDROID_HOME:-}\" ]; then ANDROID_SDK_ROOT=\"$ANDROID_HOME\"; sdk_source=\"user-defined ANDROID_HOME\"; fi", |
23 | | - "if [ -z \"$sdk_source\" ]; then SM=\"\"; for CAND in $(command -v -a sdkmanager 2>/dev/null || true); do if echo \"$CAND\" | grep -q '^/nix/store/'; then SM=\"$CAND\"; break; fi; done; if [ -n \"$SM\" ]; then SM=$(readlink -f \"$SM\" 2>/dev/null || echo \"$SM\"); for C in \"$(dirname \"$SM\")/..\" \"$(dirname \"$SM\")/../share/android-sdk\" \"$(dirname \"$SM\")/../libexec/android-sdk\" \"$(dirname \"$SM\")/../..\"; do if [ -d \"$C/platform-tools\" ] || [ -d \"$C/platforms\" ] || [ -d \"$C/system-images\" ]; then ANDROID_SDK_ROOT=\"$C\"; sdk_source=\"nix sdkmanager\"; break; fi; done; fi; fi", |
24 | | - "if [ -z \"$sdk_source\" ]; then if [ \"$(uname -s)\" = \"Darwin\" ]; then ANDROID_SDK_ROOT=\"$HOME/Library/Android/sdk\"; else ANDROID_SDK_ROOT=\"$HOME/Android/Sdk\"; fi; sdk_source=\"OS default\"; fi", |
25 | | - "export ANDROID_SDK_ROOT", |
26 | | - "if [ -z \"${ANDROID_HOME:-}\" ]; then export ANDROID_HOME=\"$ANDROID_SDK_ROOT\"; fi", |
27 | | - "if [ -n \"${ANDROID_SDK_ROOT:-}\" ]; then export PATH=\"$ANDROID_SDK_ROOT/emulator:$ANDROID_SDK_ROOT/platform-tools:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$PATH\"; fi", |
28 | | - "echo \"Using Android SDK: $ANDROID_SDK_ROOT (source: $sdk_source)\"", |
29 | | - "if [ \"$sdk_source\" = \"OS default\" ]; then echo \"Note: Nix flake android-sdk not detected; run 'devbox install' (or 'devbox add path:./nix#android-sdk') to ensure the flake SDK is pulled.\"; fi", |
| 17 | + "source \"$DEVBOX_PROJECT_ROOT/scripts/android-env.sh\"", |
| 18 | + "echo 'Android SDK env configured (details: wiki/devbox.md#devbox-android).'", |
30 | 19 | ], |
31 | 20 | "scripts": { |
32 | 21 | "clean": [ |
|
43 | 32 | "yarn test --coverage", |
44 | 33 | ], |
45 | 34 | "test-android": [ |
| 35 | + "devbox run setup-android", |
46 | 36 | "yarn install", |
47 | 37 | "yarn e2e install", |
48 | 38 | "yarn build", |
49 | 39 | "yarn e2e build:android", |
50 | 40 | "yarn e2e test:android", |
51 | 41 | ], |
52 | 42 | "test-ios": [ |
| 43 | + "devbox run setup-ios", |
53 | 44 | "yarn install", |
54 | 45 | "yarn e2e install", |
55 | 46 | "yarn e2e pods", |
|
58 | 49 | "yarn e2e test:ios", |
59 | 50 | ], |
60 | 51 | "setup-android": [ |
61 | | - "bash $DEVBOX_PROJECT_ROOT/scripts/setup-android.sh", |
| 52 | + "bash $DEVBOX_PROJECT_ROOT/scripts/android-setup.sh", |
62 | 53 | ], |
63 | 54 | "setup-ios": [ |
64 | | - "bash $DEVBOX_PROJECT_ROOT/scripts/setup-ios.sh", |
| 55 | + "bash $DEVBOX_PROJECT_ROOT/scripts/ios-setup.sh", |
| 56 | + ], |
| 57 | + "start-emulator": [ |
| 58 | + "bash $DEVBOX_PROJECT_ROOT/scripts/android-manager.sh start" |
| 59 | + ], |
| 60 | + "start-ios": [ |
| 61 | + "bash $DEVBOX_PROJECT_ROOT/scripts/ios-manager.sh start" |
| 62 | + ], |
| 63 | + "start-android-minsdk": [ |
| 64 | + "bash $DEVBOX_PROJECT_ROOT/scripts/android-manager.sh start" |
| 65 | + ], |
| 66 | + "start-android-latest": [ |
| 67 | + "AVD_FLAVOR=latest bash $DEVBOX_PROJECT_ROOT/scripts/android-manager.sh start" |
| 68 | + ], |
| 69 | + "start-android": [ |
| 70 | + "bash $DEVBOX_PROJECT_ROOT/scripts/android-manager.sh start" |
| 71 | + ], |
| 72 | + "release": [ |
| 73 | + "npm config set //registry.npmjs.org/:_authToken ${NPM_TOKEN}", |
| 74 | + "yarn install --immutable", |
| 75 | + "yarn build", |
| 76 | + "yarn release" |
| 77 | + ], |
| 78 | + "reset-android": [ |
| 79 | + "rm -rf ~/.android/avd", |
| 80 | + "rm -f ~/.android/adbkey*", |
| 81 | + "echo \"AVDs and adb keys removed. Recreate via devbox run start-android* as needed.\"" |
| 82 | + ], |
| 83 | + "reset-ios": [ |
| 84 | + "xcrun simctl shutdown all || true", |
| 85 | + "xcrun simctl erase all || true", |
| 86 | + "rm -rf ~/Library/Developer/CoreSimulator/Devices", |
| 87 | + "echo \"Simulators reset. Recreate via devbox run start-ios.\"" |
| 88 | + ], |
| 89 | + "stop-android": [ |
| 90 | + "if command -v adb >/dev/null 2>&1; then", |
| 91 | + " devices=$(adb devices -l 2>/dev/null | tail -n +2 | awk '{print $1}' | tr '\\n' ' ');", |
| 92 | + " if [[ -n \"$devices\" ]]; then", |
| 93 | + " echo \"Stopping Android emulators: $devices\";", |
| 94 | + " for d in $devices; do adb -s \"$d\" emu kill >/dev/null 2>&1 || true; done;", |
| 95 | + " else", |
| 96 | + " echo \"No Android emulators detected via adb.\";", |
| 97 | + " fi;", |
| 98 | + "else", |
| 99 | + " echo \"adb not found; skipping Android emulator shutdown.\";", |
| 100 | + "fi", |
| 101 | + "pkill -f \"emulator@\" >/dev/null 2>&1 || true", |
| 102 | + "echo \"Android emulators stopped (if any were running).\"" |
| 103 | + ], |
| 104 | + "stop-ios": [ |
| 105 | + "if command -v xcrun >/dev/null 2>&1 && xcrun -f simctl >/dev/null 2>&1; then", |
| 106 | + " if xcrun simctl list devices booted | grep -q \"Booted\"; then", |
| 107 | + " echo \"Shutting down booted iOS simulators...\";", |
| 108 | + " xcrun simctl shutdown all >/dev/null 2>&1 || true;", |
| 109 | + " else", |
| 110 | + " echo \"No booted iOS simulators detected.\";", |
| 111 | + " fi;", |
| 112 | + "else", |
| 113 | + " echo \"simctl not available; skipping iOS shutdown.\";", |
| 114 | + "fi", |
| 115 | + "echo \"iOS simulators shutdown (if any were running).\"" |
| 116 | + ], |
| 117 | + "stop": [ |
| 118 | + "devbox run stop-android", |
| 119 | + "devbox run stop-ios" |
65 | 120 | ], |
66 | 121 | "test": [ |
67 | 122 | "devbox run test-android", |
|
0 commit comments