Files
zip/entrypoint.sh
T

61 lines
1.3 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
readonly BORDER='=================================================='
readonly DIVIDER='--------------------------------------------------'
log_section() {
printf '%s\n%s\n%s\n' "$BORDER" "$1" "$DIVIDER"
}
log_kv() {
printf '%-16s %s\n' "$1" "$2"
}
fail() {
printf '錯誤: %s\n' "$1" >&2
exit 1
}
require_value() {
local name="$1"
local value="${2:-}"
log_kv "$name" "$value"
if [[ -z "$value" || "$value" == "null" ]]; then
fail "$name 不能為空"
fi
}
log_section '參數檢查'
require_value 'RELEASE_VERSION' "${RELEASE_VERSION:-}"
require_value 'RELEASE_FOLDER' "${RELEASE_FOLDER:-}"
if [[ ! -d "$RELEASE_FOLDER" ]]; then
fail "找不到資料夾: $RELEASE_FOLDER"
fi
if ! command -v zip >/dev/null 2>&1; then
fail '找不到 zip 指令,請確認映像檔已安裝 zip'
fi
archive_name="$(basename "$PWD").${RELEASE_VERSION}.zip"
archive_path="$PWD/$archive_name"
file_count="$(find "$RELEASE_FOLDER" -type f | wc -l | tr -d ' ')"
log_section '壓縮檔案'
log_kv '來源資料夾' "$RELEASE_FOLDER"
log_kv '檔案數量' "$file_count"
log_kv '輸出檔案' "$archive_name"
(
cd "$RELEASE_FOLDER"
zip -qr "$archive_path" .
)
log_kv '狀態' '壓縮完成'
log_kv '檔案位置' "$archive_path"
printf '%s\n' "$BORDER"