aerospace fork
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132#!/usr/bin/env bashcd "$(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 ;; esacdone
################ 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:# <unknown>:0: warning: legacy driver is now deprecated; consider avoiding specifying '-disallow-use-new-driver'# <unknown>:0: error: unable to execute command: <unknown>
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-buildcd -
git checkout .
cp -r "xcode/.xcode-build/Build/Products/$xcode_configuration/AeroSpace.app" .releasecp -r .build/apple/Products/Release/aerospace .release
################### SIGN CLI ###################
codesign -s "$codesign_identity" .release/aerospace
################### VALIDATE ###################
expected_layout=$(cat <<EOF.release/AeroSpace.app.release/AeroSpace.app/Contents.release/AeroSpace.app/Contents/_CodeSignature.release/AeroSpace.app/Contents/_CodeSignature/CodeResources.release/AeroSpace.app/Contents/MacOS.release/AeroSpace.app/Contents/MacOS/AeroSpace.release/AeroSpace.app/Contents/Resources.release/AeroSpace.app/Contents/Resources/default-config.toml.release/AeroSpace.app/Contents/Resources/AppIcon.icns.release/AeroSpace.app/Contents/Resources/Assets.car.release/AeroSpace.app/Contents/Info.plist.release/AeroSpace.app/Contents/PkgInfoEOF)
if test "$expected_layout" != "$(find .release/AeroSpace.app)"; then echo "!!! Expect/Actual layout don't match !!!" find .release/AeroSpace.app exit 1fi
check-universal-binary() { if ! file "$1" | grep --fixed-string -q "Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [arm64"; then echo "$1 is not a universal binary" exit 1 fi}
check-contains-hash() { hash=$(git rev-parse HEAD) if ! strings "$1" | grep --fixed-string "$hash" > /dev/null; then echo "$1 doesn't contain $hash" exit 1 fi}
check-universal-binary .release/AeroSpace.app/Contents/MacOS/AeroSpacecheck-universal-binary .release/aerospace
check-contains-hash .release/AeroSpace.app/Contents/MacOS/AeroSpacecheck-contains-hash .release/aerospace
codesign -v .release/AeroSpace.appcodesign -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