Files
snivy/.vscode/tasks.json
shweet f594ba3889
Some checks failed
Build / Build Game (push) Has been cancelled
Just last little bits of polish
2026-03-01 03:19:49 -05:00

166 lines
8.4 KiB
JSON

{
"version": "2.0.0",
"tasks": [
{
"label": "cmake: configure debug",
"type": "shell",
"linux": {
"command": "cmake --preset linux-debug"
},
"windows": {
"command": "cmake --preset x64-Debug"
},
"problemMatcher": []
},
{
"label": "cmake: build debug",
"type": "shell",
"linux": {
"command": "cmake --build --preset linux-debug"
},
"windows": {
"command": "cmake --build --preset x64-Debug"
},
"dependsOn": "cmake: configure debug",
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": [
"$gcc"
]
},
{
"label": "cmake: configure release",
"type": "shell",
"linux": {
"command": "cmake --preset linux-release"
},
"windows": {
"command": "cmake --preset x64-Release"
},
"problemMatcher": []
},
{
"label": "cmake: build release",
"type": "shell",
"linux": {
"command": "cmake --build --preset linux-release"
},
"windows": {
"command": "cmake --build --preset x64-Release"
},
"dependsOn": "cmake: configure release",
"problemMatcher": [
"$gcc"
]
},
{
"label": "linux: run debug",
"type": "shell",
"linux": {
"command": "${workspaceFolder}/out/build/linux-debug/bin/Debug/snivy"
},
"options": {
"cwd": "${workspaceFolder}/out/build/linux-debug/bin/Debug"
},
"windows": {
"command": "echo \"linux: run debug is Linux-only\" && exit 1"
},
"dependsOn": "cmake: build debug",
"problemMatcher": []
},
{
"label": "linux: run release",
"type": "shell",
"linux": {
"command": "${workspaceFolder}/out/build/linux-release/bin/Release/snivy"
},
"options": {
"cwd": "${workspaceFolder}/out/build/linux-release/bin/Release"
},
"windows": {
"command": "echo \"linux: run release is Linux-only\" && exit 1"
},
"dependsOn": "cmake: build release",
"problemMatcher": []
},
{
"label": "web: configure",
"type": "shell",
"linux": {
"command": "sh -lc 'if ! command -v emcmake >/dev/null 2>&1; then if [ -n \"$EMSDK\" ] && [ -f \"$EMSDK/emsdk_env.sh\" ]; then . \"$EMSDK/emsdk_env.sh\" >/dev/null 2>&1; elif [ -f \"$HOME/emsdk/emsdk_env.sh\" ]; then . \"$HOME/emsdk/emsdk_env.sh\" >/dev/null 2>&1; elif [ -f \"../emsdk/emsdk_env.sh\" ]; then . \"../emsdk/emsdk_env.sh\" >/dev/null 2>&1; else echo \"Emscripten not found. Install emsdk or set EMSDK env var.\"; exit 1; fi; fi; emcmake cmake -S . -B out/build/web -DCMAKE_BUILD_TYPE=Release'"
},
"windows": {
"command": "echo \"web tasks are configured for Linux (emsdk + python + chromium).\" && exit 1"
},
"problemMatcher": []
},
{
"label": "web: build",
"type": "shell",
"linux": {
"command": "sh -lc 'if ! command -v emcmake >/dev/null 2>&1; then if [ -n \"$EMSDK\" ] && [ -f \"$EMSDK/emsdk_env.sh\" ]; then . \"$EMSDK/emsdk_env.sh\" >/dev/null 2>&1; elif [ -f \"$HOME/emsdk/emsdk_env.sh\" ]; then . \"$HOME/emsdk/emsdk_env.sh\" >/dev/null 2>&1; elif [ -f \"../emsdk/emsdk_env.sh\" ]; then . \"../emsdk/emsdk_env.sh\" >/dev/null 2>&1; else echo \"Emscripten not found. Install emsdk or set EMSDK env var.\"; exit 1; fi; fi; cmake --build out/build/web -j$(nproc)'"
},
"windows": {
"command": "echo \"web tasks are configured for Linux (emsdk + python + chromium).\" && exit 1"
},
"dependsOn": "web: configure",
"problemMatcher": []
},
{
"label": "web: serve",
"type": "shell",
"linux": {
"command": "sh -lc 'PID_FILE=/tmp/snivy-web-http.pid; LOG_FILE=/tmp/snivy-web-http.log; WEB_ROOT=out/build/web; URL=http://127.0.0.1:8000/bin/Release/index.html; [ -f \"$WEB_ROOT/bin/Release/index.html\" ] || { echo \"Web output not found at $WEB_ROOT/bin/Release/index.html (run web: build)\"; exit 1; }; if [ -f \"$PID_FILE\" ] && kill -0 \"$(cat \"$PID_FILE\")\" 2>/dev/null; then kill \"$(cat \"$PID_FILE\")\" >/dev/null 2>&1 || true; rm -f \"$PID_FILE\"; fi; nohup python3 -m http.server 8000 --bind 127.0.0.1 --directory \"$WEB_ROOT\" >\"$LOG_FILE\" 2>&1 & echo $! >\"$PID_FILE\"; echo \"Started web server on http://127.0.0.1:8000 (root: $WEB_ROOT)\"; READY=0; for _ in $(seq 1 40); do if command -v curl >/dev/null 2>&1; then curl -fsS \"$URL\" >/dev/null 2>&1 && READY=1 && break; elif command -v wget >/dev/null 2>&1; then wget -qO- \"$URL\" >/dev/null 2>&1 && READY=1 && break; fi; sleep 0.1; done; [ \"$READY\" = \"1\" ] || { echo \"Web server did not become ready. See /tmp/snivy-web-http.log\"; exit 1; }'"
},
"windows": {
"command": "echo \"web tasks are configured for Linux (emsdk + python + chromium).\" && exit 1"
},
"problemMatcher": []
},
{
"label": "web: stop server",
"type": "shell",
"linux": {
"command": "sh -lc 'PID_FILE=/tmp/snivy-web-http.pid; if [ -f \"$PID_FILE\" ] && kill -0 \"$(cat \"$PID_FILE\")\" 2>/dev/null; then kill \"$(cat \"$PID_FILE\")\" && rm -f \"$PID_FILE\" && echo \"Stopped web server\"; else rm -f \"$PID_FILE\" && echo \"Web server not running\"; fi'"
},
"windows": {
"command": "echo \"web tasks are configured for Linux (emsdk + python + chromium).\" && exit 1"
},
"problemMatcher": []
},
{
"label": "web: open chromium",
"type": "shell",
"linux": {
"command": "sh -lc 'URL=http://127.0.0.1:8000/bin/Release/index.html; (xdg-open \"$URL\" >/dev/null 2>&1 || chromium --new-tab \"$URL\" >/dev/null 2>&1 || chromium-browser --new-tab \"$URL\" >/dev/null 2>&1 || google-chrome --new-tab \"$URL\" >/dev/null 2>&1 || google-chrome-stable --new-tab \"$URL\" >/dev/null 2>&1 || python3 -m webbrowser \"$URL\" >/dev/null 2>&1) & sleep 0.15; echo \"Requested browser open: $URL\"'"
},
"windows": {
"command": "start http://127.0.0.1:8000/index.html"
},
"problemMatcher": []
},
{
"label": "web: prepare",
"dependsOrder": "sequence",
"dependsOn": [
"web: build",
"web: serve"
],
"problemMatcher": []
},
{
"label": "web: run",
"type": "shell",
"linux": {
"command": "sh -lc 'set -e; if ! command -v emcmake >/dev/null 2>&1; then if [ -n \"$EMSDK\" ] && [ -f \"$EMSDK/emsdk_env.sh\" ]; then . \"$EMSDK/emsdk_env.sh\" >/dev/null 2>&1; elif [ -f \"$HOME/emsdk/emsdk_env.sh\" ]; then . \"$HOME/emsdk/emsdk_env.sh\" >/dev/null 2>&1; elif [ -f \"../emsdk/emsdk_env.sh\" ]; then . \"../emsdk/emsdk_env.sh\" >/dev/null 2>&1; else echo \"Emscripten not found. Install emsdk or set EMSDK env var.\"; exit 1; fi; fi; emcmake cmake -S . -B out/build/web -DCMAKE_BUILD_TYPE=Release; cmake --build out/build/web -j$(nproc); PID_FILE=/tmp/snivy-web-http.pid; LOG_FILE=/tmp/snivy-web-http.log; WEB_ROOT=out/build/web; URL=http://127.0.0.1:8000/bin/Release/index.html; [ -f \"$WEB_ROOT/bin/Release/index.html\" ] || { echo \"Web output not found at $WEB_ROOT/bin/Release/index.html\"; exit 1; }; if [ -f \"$PID_FILE\" ] && kill -0 \"$(cat \"$PID_FILE\")\" 2>/dev/null; then kill \"$(cat \"$PID_FILE\")\" >/dev/null 2>&1 || true; rm -f \"$PID_FILE\"; fi; nohup python3 -m http.server 8000 --bind 127.0.0.1 --directory \"$WEB_ROOT\" >\"$LOG_FILE\" 2>&1 & echo $! >\"$PID_FILE\"; echo \"Started web server on http://127.0.0.1:8000 (root: $WEB_ROOT)\"; READY=0; for _ in $(seq 1 40); do if command -v curl >/dev/null 2>&1; then curl -fsS \"$URL\" >/dev/null 2>&1 && READY=1 && break; elif command -v wget >/dev/null 2>&1; then wget -qO- \"$URL\" >/dev/null 2>&1 && READY=1 && break; fi; sleep 0.1; done; [ \"$READY\" = \"1\" ] || { echo \"Web server did not become ready. See /tmp/snivy-web-http.log\"; exit 1; }; (xdg-open \"$URL\" >/dev/null 2>&1 || chromium --new-tab \"$URL\" >/dev/null 2>&1 || chromium-browser --new-tab \"$URL\" >/dev/null 2>&1 || google-chrome --new-tab \"$URL\" >/dev/null 2>&1 || google-chrome-stable --new-tab \"$URL\" >/dev/null 2>&1 || python3 -m webbrowser \"$URL\" >/dev/null 2>&1 || { echo \"Could not launch browser automatically. Open: $URL\"; exit 0; }) & sleep 0.15; echo \"Requested browser open: $URL\"'"
},
"windows": {
"command": "echo \"web tasks are configured for Linux (emsdk + python + chromium).\" && exit 1"
},
"problemMatcher": []
}
]
}