refactor: clean up zip entrypoint output
This commit is contained in:
+50
-13
@@ -1,23 +1,60 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
echo "=================================================="
|
set -euo pipefail
|
||||||
|
|
||||||
echo "參數檢查"
|
readonly BORDER='=================================================='
|
||||||
|
readonly DIVIDER='--------------------------------------------------'
|
||||||
|
|
||||||
echo "--------------------------------------------------"
|
log_section() {
|
||||||
|
printf '%s\n%s\n%s\n' "$BORDER" "$1" "$DIVIDER"
|
||||||
|
}
|
||||||
|
|
||||||
# 顯示 RELEASE_VERSION 參數,並檢查是否為空或 "null",如果是則輸出錯誤訊息並退出
|
log_kv() {
|
||||||
echo "RELEASE_VERSION=$RELEASE_VERSION" && ([ -z "$RELEASE_VERSION" ] || [ "$RELEASE_VERSION" = "null" ]) && exit 1
|
printf '%-16s %s\n' "$1" "$2"
|
||||||
|
}
|
||||||
|
|
||||||
# 顯示 RELEASE_FOLDER 參數,並檢查是否為空或 "null",如果是則輸出錯誤訊息並退出
|
fail() {
|
||||||
echo "RELEASE_FOLDER=$RELEASE_FOLDER" && ([ -z "$RELEASE_FOLDER" ] || [ "$RELEASE_FOLDER" = "null" ]) && exit 1
|
printf '錯誤: %s\n' "$1" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
echo "=================================================="
|
require_value() {
|
||||||
|
local name="$1"
|
||||||
|
local value="${2:-}"
|
||||||
|
|
||||||
echo "壓縮檔案"
|
log_kv "$name" "$value"
|
||||||
|
|
||||||
echo "--------------------------------------------------"
|
if [[ -z "$value" || "$value" == "null" ]]; then
|
||||||
|
fail "$name 不能為空"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
zip -r "$(basename "$PWD").$RELEASE_VERSION.zip" $RELEASE_FOLDER/*
|
log_section '參數檢查'
|
||||||
|
require_value 'RELEASE_VERSION' "${RELEASE_VERSION:-}"
|
||||||
|
require_value 'RELEASE_FOLDER' "${RELEASE_FOLDER:-}"
|
||||||
|
|
||||||
echo "=================================================="
|
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"
|
||||||
|
|||||||
Reference in New Issue
Block a user