38 lines
1.5 KiB
Bash
Executable File
38 lines
1.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -Eeuo pipefail
|
|
IFS=$'\n\t'
|
|
|
|
if [[ $# -ne 3 ]]; then
|
|
printf 'Usage: %s X86_64_BINARY AARCH64_BINARY OUTPUT_DIRECTORY\n' "$0" >&2
|
|
exit 2
|
|
fi
|
|
|
|
AMD64_BINARY="$1"
|
|
ARM64_BINARY="$2"
|
|
OUTPUT_DIRECTORY="$3"
|
|
|
|
[[ -x "$AMD64_BINARY" ]] || { printf 'amd64 binary is not executable\n' >&2; exit 1; }
|
|
[[ -x "$ARM64_BINARY" ]] || { printf 'arm64 binary is not executable\n' >&2; exit 1; }
|
|
command -v sha256sum >/dev/null || { printf 'sha256sum is required\n' >&2; exit 1; }
|
|
command -v file >/dev/null || { printf 'file is required\n' >&2; exit 1; }
|
|
|
|
AMD64_DESCRIPTION="$(file -b "$AMD64_BINARY")"
|
|
ARM64_DESCRIPTION="$(file -b "$ARM64_BINARY")"
|
|
[[ "$AMD64_DESCRIPTION" == *ELF* && "$AMD64_DESCRIPTION" == *x86-64* ]] || {
|
|
printf 'amd64 artifact is not an x86-64 Linux ELF binary\n' >&2; exit 1;
|
|
}
|
|
[[ "$ARM64_DESCRIPTION" == *ELF* && ("$ARM64_DESCRIPTION" == *aarch64* || "$ARM64_DESCRIPTION" == *ARM64*) ]] || {
|
|
printf 'arm64 artifact is not an aarch64 Linux ELF binary\n' >&2; exit 1;
|
|
}
|
|
install -d -m 0755 "$OUTPUT_DIRECTORY"
|
|
install -m 0755 "$AMD64_BINARY" "$OUTPUT_DIRECTORY/vps-agent-linux-amd64"
|
|
install -m 0755 "$ARM64_BINARY" "$OUTPUT_DIRECTORY/vps-agent-linux-arm64"
|
|
(
|
|
cd "$OUTPUT_DIRECTORY"
|
|
sha256sum vps-agent-linux-amd64 vps-agent-linux-arm64 > SHA256SUMS
|
|
if [[ -n "${VPS_AGENT_MINISIGN_SECRET_KEY:-}" ]]; then
|
|
command -v minisign >/dev/null || { printf 'minisign is required for signing\n' >&2; exit 1; }
|
|
minisign -Sm SHA256SUMS -s "$VPS_AGENT_MINISIGN_SECRET_KEY"
|
|
fi
|
|
)
|