chore: import upstream snapshot with attribution
CI / lint (push) Has been cancelled
CI / js-syntax (push) Successful in 10m24s
CI / deps-audit (push) Has been cancelled
CI / test (push) Failing after 24m55s
CI / sast-bandit (push) Failing after 11m13s
CI / trivy (push) Failing after 9m32s
Docker Publish / build-and-push (push) Failing after 34m3s
CI / lint (push) Has been cancelled
CI / js-syntax (push) Successful in 10m24s
CI / deps-audit (push) Has been cancelled
CI / test (push) Failing after 24m55s
CI / sast-bandit (push) Failing after 11m13s
CI / trivy (push) Failing after 9m32s
Docker Publish / build-and-push (push) Failing after 34m3s
This commit is contained in:
Executable
+74
@@ -0,0 +1,74 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
ARCH="${ARCH:-arm64}"
|
||||
REPO_ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
|
||||
# Default the version to the current git tag so local builds match the tag with
|
||||
# no VERSION passed; falls back to a dev label outside a tagged checkout. (#169)
|
||||
VERSION="${VERSION:-$(git -C "$REPO_ROOT" describe --tags --always 2>/dev/null || echo 0.0.0-dev)}"
|
||||
VERSION="${VERSION#v}"
|
||||
BUILD_DIR="${REPO_ROOT}/.build"
|
||||
|
||||
if [[ "$(uname)" != "Darwin" ]]; then
|
||||
echo "ERROR: make-app.sh must run on macOS" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "$ARCH" != "arm64" && "$ARCH" != "x64" ]]; then
|
||||
echo "ERROR: ARCH must be arm64 or x64, got '${ARCH}'" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for cmd in node npm cargo; do
|
||||
if ! command -v "$cmd" >/dev/null 2>&1; then
|
||||
echo "ERROR: required command not found on PATH: $cmd" >&2
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
mkdir -p "$BUILD_DIR"
|
||||
|
||||
echo "==> Stamping version ${VERSION}"
|
||||
sed -i '' "s/^version = \".*\"/version = \"${VERSION}\"/" "$REPO_ROOT/desktop/src-tauri/Cargo.toml"
|
||||
sed -i '' "s/\"version\": \".*\"/\"version\": \"${VERSION}\"/" "$REPO_ROOT/desktop/src-tauri/tauri.conf.json"
|
||||
sed -i '' "s/\"version\": \".*\"/\"version\": \"${VERSION}\"/" "$REPO_ROOT/desktop/package.json"
|
||||
|
||||
cd "$REPO_ROOT/desktop"
|
||||
|
||||
# Tauri CLI reads CI env var as a boolean flag; Woodpecker sets CI=woodpecker
|
||||
# which fails the boolean parser. Force a valid value.
|
||||
export CI=true
|
||||
|
||||
npm ci
|
||||
if [[ "$ARCH" == "arm64" ]]; then
|
||||
npx tauri build --bundles app --target aarch64-apple-darwin
|
||||
TARGET_DIR="$REPO_ROOT/desktop/src-tauri/target/aarch64-apple-darwin/release"
|
||||
else
|
||||
npx tauri build --bundles app --target x86_64-apple-darwin
|
||||
TARGET_DIR="$REPO_ROOT/desktop/src-tauri/target/x86_64-apple-darwin/release"
|
||||
fi
|
||||
|
||||
APP_DIR="${TARGET_DIR}/bundle/macos/StemDeck.app"
|
||||
if [[ ! -d "$APP_DIR" ]]; then
|
||||
APP_DIR="$(find "$REPO_ROOT/desktop/src-tauri/target" -path '*/bundle/macos/StemDeck.app' -type d | head -1)"
|
||||
fi
|
||||
if [[ -z "$APP_DIR" || ! -d "$APP_DIR" ]]; then
|
||||
echo "ERROR: could not find built StemDeck.app" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
RESOURCES="${APP_DIR}/Contents/Resources"
|
||||
mkdir -p "$RESOURCES"
|
||||
|
||||
if [[ -f "$BUILD_DIR/runtime-manifest-${ARCH}.json" ]]; then
|
||||
cp "$BUILD_DIR/runtime-manifest-${ARCH}.json" "$RESOURCES/runtime-manifest.json"
|
||||
else
|
||||
cp "$REPO_ROOT/desktop/ui/runtime-manifest.json" "$RESOURCES/runtime-manifest.json"
|
||||
fi
|
||||
|
||||
if [[ -f "$REPO_ROOT/packaging/macos/THIRD_PARTY_NOTICES.txt" ]]; then
|
||||
cp "$REPO_ROOT/packaging/macos/THIRD_PARTY_NOTICES.txt" "$RESOURCES/THIRD_PARTY_NOTICES.txt"
|
||||
fi
|
||||
|
||||
echo "$APP_DIR" > "$BUILD_DIR/app-path-${ARCH}.txt"
|
||||
echo "==> App ready: $APP_DIR"
|
||||
Reference in New Issue
Block a user