#!/bin/bash # エラーが出たら止まるように設定 set -e echo "🚀 Starting custom VSCode + Android Emulator environment..." # --------------------------------------------------------- # 1. 永続ストレージ (/data) のセットアップ # --------------------------------------------------------- if [ -d "/data" ]; then echo "💾 Persistent storage detected provided at /data" mkdir -p /data/User mkdir -p /data/extensions mkdir -p /data/workspace mkdir -p /home/user/.local/share rm -rf /home/user/.local/share/code-server ln -s /data/extensions /home/user/.local/share/code-server mkdir -p /home/user/.config rm -rf /home/user/.config/code-server ln -s /data/User /home/user/.config/code-server WORKING_DIR="/data/workspace" else echo "⚠️ No persistent storage found. Using ephemeral storage." WORKING_DIR="/home/user" fi # --------------------------------------------------------- # 2. SQLite データベースの準備 # --------------------------------------------------------- DB_PATH="$WORKING_DIR/user_data.sqlite" if [ ! -f "$DB_PATH" ]; then echo "📦 Initializing SQLite database at $DB_PATH..." sqlite3 "$DB_PATH" "CREATE TABLE IF NOT EXISTS system_logs (id INTEGER PRIMARY KEY, message TEXT, created_at DATETIME DEFAULT CURRENT_TIMESTAMP);" sqlite3 "$DB_PATH" "INSERT INTO system_logs (message) VALUES ('System initialized');" echo "✅ SQLite database created." else echo "📂 SQLite database found. Ready to use." fi # --------------------------------------------------------- # 3. Android Emulator (headless, ARM image) の起動 # --------------------------------------------------------- echo "📱 Launching Android Emulator (ARM, headless)..." emulator -avd MyDeviceARM -no-window -gpu swiftshader_indirect -no-snapshot -noaudio -no-boot-anim & # Give emulator time to boot sleep 15 # --------------------------------------------------------- # 4. code-server (VSCode) の起動 # --------------------------------------------------------- echo "💻 Launching VSCode Server on port 7860..." if [ -z "$PASSWORD" ]; then export PASSWORD="123" echo "⚠️ WARNING: No password set. Using default: '123'" fi exec code-server \ --bind-addr 0.0.0.0:7860 \ --auth password \ --disable-telemetry \ "$WORKING_DIR"