Files
git.stella-ops.org/scripts/sdk/publish.sh
2025-12-25 19:52:30 +02:00

37 lines
979 B
Bash

#!/usr/bin/env bash
set -euo pipefail
# Publishes signed NuGet packages to a configured feed (file or HTTP).
PACKAGES_GLOB=${PACKAGES_GLOB:-"out/sdk/*.nupkg"}
SOURCE=${SDK_NUGET_SOURCE:-".nuget/packages/packages"}
API_KEY=${SDK_NUGET_API_KEY:-""}
mapfile -t packages < <(ls $PACKAGES_GLOB 2>/dev/null || true)
if [[ ${#packages[@]} -eq 0 ]]; then
echo "No packages found under glob '$PACKAGES_GLOB'; nothing to publish."
exit 0
fi
publish_file() {
local pkg="$1"
mkdir -p "$SOURCE"
cp "$pkg" "$SOURCE"/
}
publish_http() {
local pkg="$1"
dotnet nuget push "$pkg" --source "$SOURCE" --api-key "$API_KEY" --skip-duplicate
}
if [[ "$SOURCE" =~ ^https?:// ]]; then
if [[ -z "$API_KEY" ]]; then
echo "SDK_NUGET_API_KEY is required for HTTP source $SOURCE" >&2
exit 1
fi
for pkg in "${packages[@]}"; do publish_http "$pkg"; done
else
for pkg in "${packages[@]}"; do publish_file "$pkg"; done
fi
echo "Published ${#packages[@]} package(s) to $SOURCE"