mirror of
https://github.com/logos-co/logos-logoscore-cli.git
synced 2026-08-27 19:01:07 +00:00
Add ci/macos.Jenkinsfile and supporting scripts for producing signed and notarized macOS builds of the CLI: - scripts/sign-and-notarize.sh: signs all Mach-O files in the cli-bundle-dir output (dylibs, Qt framework binaries, bin/ executables) with Developer ID + hardened runtime + timestamp, then submits to Apple notary service. - No stapling since tickets can't be stapled to flat dirs/tarballs, Gatekeeper verifies online. Ref.: https://github.com/logos-co/logos-logoscore-cli/issues/53
31 lines
864 B
Bash
Executable File
31 lines
864 B
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# Usage: ./scripts/create-tarball.sh --dir PATH --output PATH
|
|
|
|
DIR_PATH=""
|
|
OUTPUT_PATH=""
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
case "$1" in
|
|
--dir) DIR_PATH="$2"; shift 2 ;;
|
|
--output) OUTPUT_PATH="$2"; shift 2 ;;
|
|
*) echo "Unknown option: $1" >&2; exit 1 ;;
|
|
esac
|
|
done
|
|
|
|
[[ -n "$DIR_PATH" ]] || { echo "Error: --dir is required" >&2; exit 1; }
|
|
[[ -n "$OUTPUT_PATH" ]] || { echo "Error: --output is required" >&2; exit 1; }
|
|
[[ -d "$DIR_PATH" ]] || { echo "Error: Directory not found: $DIR_PATH" >&2; exit 1; }
|
|
|
|
mkdir -p "$(dirname "$OUTPUT_PATH")"
|
|
|
|
TOP_DIR=$(basename "$OUTPUT_PATH" .tar.gz)
|
|
STAGING=$(mktemp -d)
|
|
trap "chmod -R u+w '${STAGING}' 2>/dev/null; rm -rf '${STAGING}'" EXIT
|
|
|
|
cp -a "$DIR_PATH" "${STAGING}/${TOP_DIR}"
|
|
|
|
tar -czf "$OUTPUT_PATH" -C "$STAGING" "$TOP_DIR"
|
|
|
|
echo "Tarball created: ${OUTPUT_PATH}" |