Files
SwiftFormat/Scripts/spm-artifact-bundle.sh
Chris 74a534976f Add AArch64 variant to Artifact Bundle (#1922)
* Add AArch64 variant to Artifact Bundle
* Use Docker to build executable
* Update x64 Linux build
* Share build dependencies between architectures
2024-11-20 23:22:41 +00:00

49 lines
1.6 KiB
Bash
Executable File

#!/bin/sh
set -e
# By default, parses the current version from `Sources/SwiftFormat.swift`.
# Can be overridden by passing in custom version number as argument, e.g.
# `./Scripts/spm-artifact-bundle.sh VERSION_NUMBER`.
VERSION=${1:-$(./Scripts/get-version.sh)}
MAC_EXECUTABLE=${2:-CommandLineTool/swiftformat}
LINUX_EXECUTABLE=${3:-CommandLineTool/swiftformat_linux}
LINUX_AARCH64_EXECUTABLE=${4:-CommandLineTool/swiftformat_linux_aarch64}
ARTIFACT_BUNDLE=swiftformat.artifactbundle
INFO_TEMPLATE=Scripts/spm-artifact-bundle-info.template
MAC_BINARY_OUTPUT_DIR=$ARTIFACT_BUNDLE/swiftformat-$VERSION-macos/bin
LINUX_BINARY_OUTPUT_DIR=$ARTIFACT_BUNDLE/swiftformat-$VERSION-linux-gnu/bin
LINUX_AARCH64_BINARY_OUTPUT_DIR=$ARTIFACT_BUNDLE/swiftformat-$VERSION-linux-gnu/bin
rm -rf swiftformat.artifactbundle
rm -rf swiftformat.artifactbundle.zip
mkdir $ARTIFACT_BUNDLE
# Copy license into bundle
cp LICENSE.md $ARTIFACT_BUNDLE
# Create bundle info.json from template, replacing version
sed 's/__VERSION__/'"${VERSION}"'/g' $INFO_TEMPLATE > "${ARTIFACT_BUNDLE}/info.json"
# Copy macOS SwiftFormat binary into bundle
chmod +x $MAC_EXECUTABLE
mkdir -p $MAC_BINARY_OUTPUT_DIR
cp $MAC_EXECUTABLE $MAC_BINARY_OUTPUT_DIR
# Copy Linux SwiftFormat binary into bundle
chmod +x $LINUX_EXECUTABLE
mkdir -p $LINUX_BINARY_OUTPUT_DIR
cp $LINUX_EXECUTABLE $LINUX_BINARY_OUTPUT_DIR
# Copy Linux AArch64 SwiftFormat binary into bundle
chmod +x $LINUX_AARCH64_EXECUTABLE
mkdir -p $LINUX_AARCH64_BINARY_OUTPUT_DIR
cp $LINUX_AARCH64_EXECUTABLE $LINUX_AARCH64_BINARY_OUTPUT_DIR
# Create ZIP using 7z
7z a -tzip -mx=9 "${ARTIFACT_BUNDLE}.zip" "$ARTIFACT_BUNDLE"
rm -rf $ARTIFACT_BUNDLE