Prepare v0.4 release and open source docs
This commit is contained in:
64
scripts/make-tiny-archives.sh
Executable file
64
scripts/make-tiny-archives.sh
Executable file
@@ -0,0 +1,64 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
source "$ROOT_DIR/scripts/release-version.sh"
|
||||
|
||||
APP_NAME="I Hate PDFs"
|
||||
DIST_DIR="$ROOT_DIR/dist"
|
||||
STAGING_DIR="$DIST_DIR/tiny"
|
||||
ARCHS_TO_BUILD="${ARCHS_TO_BUILD:-arm64 x86_64}"
|
||||
|
||||
if ! command -v xz >/dev/null 2>&1; then
|
||||
echo "xz is required to build size-gated tiny archives with architecture filters." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
rm -rf "$STAGING_DIR"
|
||||
mkdir -p "$STAGING_DIR"
|
||||
|
||||
compression_args_for_arch() {
|
||||
local arch="$1"
|
||||
|
||||
if [[ -n "${XZ_OPT:-}" ]]; then
|
||||
# Preserve explicit caller overrides.
|
||||
echo "$XZ_OPT"
|
||||
return
|
||||
fi
|
||||
|
||||
case "$arch" in
|
||||
arm64)
|
||||
echo "--arm64 --lzma2=preset=9e"
|
||||
;;
|
||||
x86_64)
|
||||
echo "--x86 --lzma2=preset=9e"
|
||||
;;
|
||||
*)
|
||||
echo "--lzma2=preset=9e"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
for ARCH in $ARCHS_TO_BUILD; do
|
||||
APP_DIR="$STAGING_DIR/$ARCH/$APP_NAME.app"
|
||||
ARCHIVE_PATH="$DIST_DIR/IHatePDFs-v$RELEASE_VERSION-macos-$ARCH.tar.xz"
|
||||
|
||||
rm -f "$ARCHIVE_PATH"
|
||||
mkdir -p "$(dirname "$APP_DIR")"
|
||||
|
||||
ARCHS="$ARCH" \
|
||||
SIZE_OPTIMIZED=1 \
|
||||
ICON_MAX_SIZE="${ICON_MAX_SIZE:-32}" \
|
||||
APP_VERSION="$APP_VERSION" \
|
||||
BUILD_NUMBER="$BUILD_NUMBER" \
|
||||
APP_DIR="$APP_DIR" \
|
||||
"$ROOT_DIR/scripts/build-app.sh"
|
||||
|
||||
read -r -a XZ_ARGS <<< "$(compression_args_for_arch "$ARCH")"
|
||||
COPYFILE_DISABLE=1 tar -C "$(dirname "$APP_DIR")" -cf - "$APP_NAME.app" \
|
||||
| env XZ_OPT= xz "${XZ_ARGS[@]}" -c > "$ARCHIVE_PATH"
|
||||
|
||||
echo "Created $ARCHIVE_PATH"
|
||||
done
|
||||
|
||||
"$ROOT_DIR/scripts/verify-release-size.sh"
|
||||
Reference in New Issue
Block a user