#!/usr/bin/env bash set -euo pipefail separator() { printf '%s\n' "==================================================" } section() { printf '\n%s\n' "$1" printf '%s\n' "--------------------------------------------------" } require_var() { local name="$1" local value="${!name:-}" printf '%s=%s\n' "$name" "$value" if [ -z "$value" ] || [ "$value" = "null" ]; then printf '錯誤: %s 不可為空或 null\n' "$name" >&2 exit 1 fi } separator section "參數檢查" require_var GITEA_SERVER_URL require_var GITEA_REPOSITORY require_var CONFIGURATION require_var RELEASE_PROJECT require_var RELEASE_VERSION require_var RELEASE_AUTHOR require_var RELEASE_COMPANY require_var RELEASE_DESCRIPTION readonly RELEASE_COPYRIGHT="Copyright (c) $(date +%Y) ${RELEASE_COMPANY}" readonly RELEASE_URL="${GITEA_SERVER_URL}/${GITEA_REPOSITORY}/src/branch/master" readonly OUTPUT_DIR="${WORKSPACE}/output" printf 'RELEASE_COPYRIGHT=%s\n' "$RELEASE_COPYRIGHT" printf 'RELEASE_URL=%s\n' "$RELEASE_URL" printf 'OUTPUT_DIR=%s\n' "$OUTPUT_DIR" section "打包 NUGET 套件" if [ ! -d "$RELEASE_PROJECT" ]; then printf '錯誤: 找不到專案目錄 %s\n' "$RELEASE_PROJECT" >&2 exit 1 fi mkdir -p "$OUTPUT_DIR" printf '專案目錄=%s\n' "$RELEASE_PROJECT" printf '組建配置=%s\n' "$CONFIGURATION" printf '版本號=%s\n' "$RELEASE_VERSION" cd "$RELEASE_PROJECT" dotnet pack \ -c "$CONFIGURATION" \ -o "$OUTPUT_DIR" \ /p:PackageVersion="$RELEASE_VERSION" \ /p:RepositoryUrl="$RELEASE_URL" \ /p:RepositoryType=git \ /p:Authors="$RELEASE_AUTHOR" \ /p:Company="$RELEASE_COMPANY" \ /p:Copyright="$RELEASE_COPYRIGHT" \ /p:Description="$RELEASE_DESCRIPTION" section "完成" printf '輸出位置=%s\n' "$OUTPUT_DIR" separator