···33333434## Build & Installation
35353636-Use the included `run.sh` helper script to streamline common tasks:
3636+Use the included `r` helper script to streamline common tasks:
37373838```bash
3939# 1) Generate timezone and airport data
4040-./run.sh generate
4040+./r generate
41414242# 2) Build the project
4343-./run.sh build
4343+./r build
44444545# 3) Install onto the emulator (Basalt)
4646-./run.sh install
4646+./r install
47474848# 4) Build and install in one step
4949-./run.sh debug
4949+./r debug
5050```
+69
r
···11+#!/bin/bash
22+33+# Exit immediately if a command exits with a non-zero status.
44+set -e
55+66+# Function to run the timezone generation script
77+generate_tz_list() {
88+ echo "Generating timezone lists..."
99+ uv run python scripts/generate_tz_list.py
1010+ uv run python scripts/generate_airport_tz_list.py
1111+}
1212+1313+# Function to build the project
1414+build() {
1515+ echo "Building project..."
1616+ rebble build
1717+}
1818+1919+# Function to install the project on the emulator
2020+install() {
2121+ echo "Installing project on emulator..."
2222+ rebble install --emulator basalt
2323+}
2424+2525+# Function to wipe the emulator
2626+wipe() {
2727+ echo "Wiping emulator..."
2828+ rebble wipe
2929+}
3030+3131+# Parse the command line argument
3232+COMMAND=$1
3333+USAGE="Usage: ./r {generate|build|install|debug|wipe}"
3434+3535+# Check if a command was provided
3636+if [ -z "$COMMAND" ]; then
3737+ echo "$USAGE"
3838+ exit 1
3939+fi
4040+4141+# Execute the corresponding command
4242+case "$COMMAND" in
4343+ generate)
4444+ generate_tz_list
4545+ ;;
4646+ wipe)
4747+ wipe
4848+ ;;
4949+ build)
5050+ build
5151+ ;;
5252+ install)
5353+ install
5454+ ;;
5555+ debug)
5656+ wipe
5757+ build
5858+ install
5959+ # Stream verbose emulator logs for live debugging
6060+ rebble logs --emulator basalt -v
6161+ ;;
6262+ *)
6363+ echo "$USAGE"
6464+ exit 1
6565+ ;;
6666+esac
6767+6868+echo "Command '$COMMAND' completed successfully."
6969+exit 0
-59
run.sh
···11-#!/bin/bash
22-33-# Exit immediately if a command exits with a non-zero status.
44-set -e
55-66-# Function to run the timezone generation script
77-generate_tz_list() {
88- echo "Generating timezone lists..."
99- uv run python scripts/generate_tz_list.py
1010- uv run python scripts/generate_airport_tz_list.py
1111-}
1212-1313-# Function to build the project
1414-build_project() {
1515- echo "Building project..."
1616- rebble build
1717-}
1818-1919-# Function to install the project on the emulator
2020-install_project() {
2121- echo "Installing project on emulator..."
2222- rebble install --emulator basalt
2323-}
2424-2525-# Parse the command line argument
2626-COMMAND=$1
2727-2828-# Check if a command was provided
2929-if [ -z "$COMMAND" ]; then
3030- echo "Usage: ./run.sh {generate|build|install|debug}"
3131- exit 1
3232-fi
3333-3434-# Execute the corresponding command
3535-case "$COMMAND" in
3636- generate)
3737- generate_tz_list
3838- ;;
3939- build)
4040- build_project
4141- ;;
4242- install)
4343- install_project
4444- ;;
4545- debug)
4646- echo "Running debug (build, install, and tail logs)..."
4747- build_project
4848- install_project
4949- # Stream verbose emulator logs for live debugging
5050- rebble logs --emulator basalt -v
5151- ;;
5252- *)
5353- echo "Usage: ./run.sh {generate|build|install|debug}"
5454- exit 1
5555- ;;
5656-esac
5757-5858-echo "Command '$COMMAND' completed successfully."
5959-exit 0