#!/usr/bin/env bash cd "$(dirname "$0")" source ./script/setup.sh build_version="0.0.0-SNAPSHOT" codesign_identity="aerospace-codesign-certificate" while test $# -gt 0; do case $1 in --build-version) build_version="$2"; shift 2;; --codesign-identity) codesign_identity="$2"; shift 2;; *) echo "Unknown option $1" > /dev/stderr; exit 1 ;; esac done ############# ### BUILD ### ############# ./build-docs.sh --release ./build-shell-completion.sh ./generate.sh ./script/check-uncommitted-files.sh ./generate.sh --build-version "$build_version" --codesign-identity "$codesign_identity" --generate-git-hash swift build -c release --arch arm64 --arch x86_64 --product aerospace -Xswiftc -warnings-as-errors # CLI # todo: make xcodebuild use the same toolchain as swift # toolchain="$(plutil -extract CFBundleIdentifier raw ~/Library/Developer/Toolchains/swift-6.1-RELEASE.xctoolchain/Info.plist)" # xcodebuild -toolchain "$toolchain" \ # Unfortunately, Xcode 16 fails with: # 2025-05-05 15:51:15.618 xcodebuild[4633:13690815] Writing error result bundle to /var/folders/s1/17k6s3xd7nb5mv42nx0sd0800000gn/T/ResultBundle_2025-05-05_15-51-0015.xcresult # xcodebuild: error: Could not resolve package dependencies: # :0: warning: legacy driver is now deprecated; consider avoiding specifying '-disallow-use-new-driver' # :0: error: unable to execute command: rm -rf .release && mkdir .release cd ./xcode xcode_configuration="Release" xcodebuild -version xcodebuild-pretty ../.release/xcodebuild.log clean build \ -scheme AeroSpace \ -destination "generic/platform=macOS" \ -configuration "$xcode_configuration" \ -derivedDataPath .xcode-build cd - git checkout . cp -r "xcode/.xcode-build/Build/Products/$xcode_configuration/AeroSpace.app" .release cp -r .build/apple/Products/Release/aerospace .release ################ ### SIGN CLI ### ################ codesign -s "$codesign_identity" .release/aerospace ################ ### VALIDATE ### ################ expected_layout=$(cat < /dev/null; then echo "$1 doesn't contain $hash" exit 1 fi } check-universal-binary .release/AeroSpace.app/Contents/MacOS/AeroSpace check-universal-binary .release/aerospace check-contains-hash .release/AeroSpace.app/Contents/MacOS/AeroSpace check-contains-hash .release/aerospace codesign -v .release/AeroSpace.app codesign -v .release/aerospace ############ ### PACK ### ############ mkdir -p ".release/AeroSpace-v$build_version/manpage" && cp .man/*.1 ".release/AeroSpace-v$build_version/manpage" cp -r ./legal ".release/AeroSpace-v$build_version/legal" cp -r .shell-completion ".release/AeroSpace-v$build_version/shell-completion" cd .release mkdir -p "AeroSpace-v$build_version/bin" && cp -r aerospace "AeroSpace-v$build_version/bin" cp -r AeroSpace.app "AeroSpace-v$build_version" zip -r "AeroSpace-v$build_version.zip" "AeroSpace-v$build_version" cd - ################# ### Brew Cask ### ################# for cask_name in aerospace aerospace-dev; do ./script/build-brew-cask.sh \ --cask-name "$cask_name" \ --zip-uri ".release/AeroSpace-v$build_version.zip" \ --build-version "$build_version" done