#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" APP_NAME="Firelink" CONFIGURATION="${CONFIGURATION:-release}" MARKETING_VERSION="${MARKETING_VERSION:-0.1.0}" BUILD_NUMBER="${BUILD_NUMBER:-1}" APP_DIR="$ROOT_DIR/build/$APP_NAME.app" CONTENTS_DIR="$APP_DIR/Contents" MACOS_DIR="$CONTENTS_DIR/MacOS" RESOURCES_DIR="$CONTENTS_DIR/Resources" ICON_NAME="AppIcon" cd "$ROOT_DIR" swift build -c "$CONFIGURATION" rm -rf "$APP_DIR" mkdir -p "$MACOS_DIR" "$RESOURCES_DIR" cp ".build/$CONFIGURATION/$APP_NAME" "$MACOS_DIR/$APP_NAME" cp "$ROOT_DIR/Resources/$ICON_NAME.icns" "$RESOURCES_DIR/$ICON_NAME.icns" ARIA2C_PATH=$(which aria2c || true) if [[ -n "$ARIA2C_PATH" && -x "$ARIA2C_PATH" ]]; then echo "Bundling aria2c from $ARIA2C_PATH..." cp "$ARIA2C_PATH" "$RESOURCES_DIR/aria2c" if ! command -v dylibbundler &> /dev/null; then echo "Installing dylibbundler..." brew install dylibbundler fi FRAMEWORKS_DIR="$CONTENTS_DIR/Frameworks" dylibbundler -od -b -x "$RESOURCES_DIR/aria2c" -d "$FRAMEWORKS_DIR" -p "@executable_path/../Frameworks/" else echo "WARNING: aria2c not found! It will not be bundled. Please install it first." fi cat > "$CONTENTS_DIR/Info.plist" < CFBundleDevelopmentRegion en CFBundleExecutable $APP_NAME CFBundleIdentifier local.firelink.swiftui CFBundleInfoDictionaryVersion 6.0 CFBundleName $APP_NAME CFBundleIconFile $ICON_NAME CFBundlePackageType APPL CFBundleShortVersionString $MARKETING_VERSION CFBundleVersion $BUILD_NUMBER LSMinimumSystemVersion 14.0 LSApplicationCategoryType public.app-category.utilities NSHighResolutionCapable NSAppleEventsUsageDescription Firelink needs permission to control Finder so it can sleep, restart, or shut down your Mac after scheduled downloads finish. PLIST echo "Created $APP_DIR"