|
| 1 | +set dotenv-load |
| 2 | +set dotenv-filename := ".env" |
| 3 | +set windows-shell := ["sh", "-cu"] |
| 4 | + |
| 5 | +gradle := "./gradlew" |
| 6 | + |
| 7 | +default: |
| 8 | + @just list |
| 9 | + |
| 10 | +list: |
| 11 | + @printf "%s\n" \ |
| 12 | + "list" \ |
| 13 | + "init" \ |
| 14 | + "compile" \ |
| 15 | + "run" \ |
| 16 | + "build [TASK]" \ |
| 17 | + "release" \ |
| 18 | + "install" \ |
| 19 | + "test" \ |
| 20 | + "test file PATTERN" \ |
| 21 | + "test android" \ |
| 22 | + "test lane LANE" \ |
| 23 | + "lint" \ |
| 24 | + "lint baseline" \ |
| 25 | + "format" \ |
| 26 | + "translations pull" \ |
| 27 | + "translations push source" \ |
| 28 | + "translations push all" \ |
| 29 | + "e2e [network|no geo|TASK] [TASK]" \ |
| 30 | + "changelog [all|next|hotfix]" \ |
| 31 | + "clean" |
| 32 | + |
| 33 | +init: |
| 34 | + #!/usr/bin/env sh |
| 35 | + set -eu |
| 36 | +
|
| 37 | + if [ -e .env ]; then |
| 38 | + echo ".env already exists" |
| 39 | + exit 0 |
| 40 | + fi |
| 41 | +
|
| 42 | + cp .env.example .env |
| 43 | + echo "Created .env" |
| 44 | +
|
| 45 | +compile: |
| 46 | + {{ gradle }} compileDevDebugKotlin |
| 47 | + |
| 48 | +run: |
| 49 | + #!/usr/bin/env sh |
| 50 | + set -eu |
| 51 | +
|
| 52 | + app_id="to.bitkit.dev" |
| 53 | + app_dir="app/build/outputs/apk/dev/debug" |
| 54 | +
|
| 55 | + if ! command -v adb >/dev/null 2>&1; then |
| 56 | + echo "adb is required to run the app." >&2 |
| 57 | + exit 1 |
| 58 | + fi |
| 59 | +
|
| 60 | + if [ -n "${ANDROID_SERIAL:-}" ]; then |
| 61 | + device_id="$ANDROID_SERIAL" |
| 62 | + else |
| 63 | + echo "Looking for connected Android devices..." |
| 64 | + device_id="$( |
| 65 | + adb devices -l \ |
| 66 | + | awk 'NR > 1 && $2 == "device" && $1 !~ /^emulator-/ { print $1; exit }' |
| 67 | + )" |
| 68 | +
|
| 69 | + if [ -z "$device_id" ]; then |
| 70 | + device_id="$( |
| 71 | + adb devices -l \ |
| 72 | + | awk 'NR > 1 && $2 == "device" { print $1; exit }' |
| 73 | + )" |
| 74 | + fi |
| 75 | + fi |
| 76 | +
|
| 77 | + if [ -z "$device_id" ]; then |
| 78 | + echo "No connected Android device found." >&2 |
| 79 | + exit 1 |
| 80 | + fi |
| 81 | +
|
| 82 | + device_name="$( |
| 83 | + adb -s "$device_id" shell getprop ro.product.model 2>/dev/null \ |
| 84 | + | tr -d '\r' \ |
| 85 | + || true |
| 86 | + )" |
| 87 | +
|
| 88 | + if [ -z "$device_name" ]; then |
| 89 | + device_name="$device_id" |
| 90 | + fi |
| 91 | +
|
| 92 | + echo "Using $device_name ($device_id)" |
| 93 | + echo "Building Debug app..." |
| 94 | + {{ gradle }} assembleDevDebug |
| 95 | +
|
| 96 | + app_path="$( |
| 97 | + find "$app_dir" -maxdepth 1 -name '*-universal.apk' -type f \ |
| 98 | + | sort \ |
| 99 | + | tail -n 1 |
| 100 | + )" |
| 101 | +
|
| 102 | + if [ -z "$app_path" ]; then |
| 103 | + app_path="$( |
| 104 | + find "$app_dir" -maxdepth 1 -name '*.apk' -type f \ |
| 105 | + | sort \ |
| 106 | + | tail -n 1 |
| 107 | + )" |
| 108 | + fi |
| 109 | +
|
| 110 | + if [ -z "$app_path" ]; then |
| 111 | + echo "No APK found in $app_dir." >&2 |
| 112 | + exit 1 |
| 113 | + fi |
| 114 | +
|
| 115 | + echo "Installing $app_path..." |
| 116 | + adb -s "$device_id" install -r "$app_path" |
| 117 | +
|
| 118 | + echo "Launching $app_id..." |
| 119 | + adb -s "$device_id" shell am force-stop "$app_id" |
| 120 | + adb -s "$device_id" shell monkey -p "$app_id" -c android.intent.category.LAUNCHER 1 >/dev/null |
| 121 | +
|
| 122 | + pid="$( |
| 123 | + adb -s "$device_id" shell pidof -s "$app_id" 2>/dev/null \ |
| 124 | + | tr -d '\r' \ |
| 125 | + || true |
| 126 | + )" |
| 127 | +
|
| 128 | + if [ -z "$pid" ]; then |
| 129 | + echo "Launched $app_id" |
| 130 | + exit 0 |
| 131 | + fi |
| 132 | +
|
| 133 | + echo "Streaming logs for $app_id (pid $pid). Press Ctrl-C to stop." |
| 134 | + adb -s "$device_id" logcat --pid "$pid" |
| 135 | +
|
| 136 | +build task="assembleDevDebug": |
| 137 | + {{ gradle }} {{ task }} |
| 138 | + |
| 139 | +release: |
| 140 | + {{ gradle }} assembleMainnetRelease bundleMainnetRelease |
| 141 | + |
| 142 | +install: |
| 143 | + {{ gradle }} installDevDebug |
| 144 | + |
| 145 | +test target="" value="": |
| 146 | + {{ if target == "" { gradle + " testDevDebugUnitTest" } else if target == "android" { gradle + " connectedDevDebugAndroidTest" } else if target == "file" { if value == "" { error("usage: just test file PATTERN") } else { gradle + " testDevDebugUnitTest --tests '" + value + "'" } } else if target == "lane" { if value == "" { error("usage: just test lane LANE") } else { gradle + " connectedDevDebug" + value + "AndroidTest" } } else { error("usage: just test [file PATTERN|android|lane LANE]") } }} |
| 147 | + |
| 148 | +lint target="": |
| 149 | + {{ if target == "" { gradle + " detekt --rerun-tasks" } else if target == "baseline" { gradle + " detektBaseline --rerun-tasks" } else { error("usage: just lint [baseline]") } }} |
| 150 | + |
| 151 | +format: |
| 152 | + {{ gradle }} detekt --auto-correct --rerun-tasks |
| 153 | + |
| 154 | +translations action value="": |
| 155 | + {{ if action == "pull" { "./scripts/pull-translations.sh" } else if action == "push" { if value == "source" { "tx push --source" } else if value == "all" { "./scripts/push-translations.sh" } else { error("usage: just translations pull|push source|push all") } } else { error("usage: just translations pull|push source|push all") } }} |
| 156 | + |
| 157 | +e2e mode="" value="" task="assembleDevRelease": |
| 158 | + {{ if mode == "" { "E2E=true " + gradle + " " + task } else if mode == "network" { "E2E=true E2E_BACKEND=network " + gradle + " " + if value == "" { task } else { value } } else if mode == "no" { if value == "geo" { "GEO=false E2E=true " + gradle + " " + task } else { error("usage: just e2e no geo [TASK]") } } else { "E2E=true " + gradle + " " + mode } }} |
| 159 | + |
| 160 | +changelog target="all": |
| 161 | + ./scripts/preview-changelog.sh --target {{ target }} |
| 162 | + |
| 163 | +clean: |
| 164 | + {{ gradle }} clean |
0 commit comments