83 lines
1.8 KiB
Bash
Executable File
83 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# Pubblica manifest update e package per canale free/licensed.
|
|
# Uso:
|
|
# scripts/ops/netgescon-publish-manifest.sh \
|
|
# --channel free \
|
|
# --version 0.8.1 \
|
|
# --package /var/www/netgescon/storage/app/distribution/free/netgescon-0.8.1.zip \
|
|
# --base-url https://updates.netgescon.it
|
|
|
|
CHANNEL="free"
|
|
VERSION=""
|
|
PACKAGE=""
|
|
BASE_URL=""
|
|
MIGRATE_REQUIRED="true"
|
|
STORAGE_ROOT="/var/www/netgescon/storage/app/distribution"
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
case "$1" in
|
|
--channel)
|
|
CHANNEL="$2"
|
|
shift 2
|
|
;;
|
|
--version)
|
|
VERSION="$2"
|
|
shift 2
|
|
;;
|
|
--package)
|
|
PACKAGE="$2"
|
|
shift 2
|
|
;;
|
|
--base-url)
|
|
BASE_URL="$2"
|
|
shift 2
|
|
;;
|
|
--migrate-required)
|
|
MIGRATE_REQUIRED="$2"
|
|
shift 2
|
|
;;
|
|
--storage-root)
|
|
STORAGE_ROOT="$2"
|
|
shift 2
|
|
;;
|
|
*)
|
|
echo "Unknown option: $1"
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [[ -z "$VERSION" || -z "$PACKAGE" || -z "$BASE_URL" ]]; then
|
|
echo "Usage: $0 --channel <free|licensed> --version <x.y.z> --package <file.zip> --base-url <https://updates...>"
|
|
exit 1
|
|
fi
|
|
|
|
if [[ ! -f "$PACKAGE" ]]; then
|
|
echo "Package non trovato: $PACKAGE"
|
|
exit 1
|
|
fi
|
|
|
|
TARGET_DIR="$STORAGE_ROOT/$CHANNEL"
|
|
mkdir -p "$TARGET_DIR"
|
|
|
|
PKG_NAME="$(basename "$PACKAGE")"
|
|
cp "$PACKAGE" "$TARGET_DIR/$PKG_NAME"
|
|
|
|
SHA="$(sha256sum "$TARGET_DIR/$PKG_NAME" | awk '{print $1}')"
|
|
DATE_UTC="$(date -u +"%Y-%m-%dT%H:%M:%SZ")"
|
|
|
|
cat > "$TARGET_DIR/manifest.json" <<EOF
|
|
{
|
|
"channel": "$CHANNEL",
|
|
"version": "$VERSION",
|
|
"published_at_utc": "$DATE_UTC",
|
|
"sha256": "$SHA",
|
|
"migrate_required": $MIGRATE_REQUIRED,
|
|
"package_url": "$BASE_URL/api/v1/distribution/updates/package?channel=$CHANNEL&file=$PKG_NAME"
|
|
}
|
|
EOF
|
|
|
|
echo "Manifest pubblicato: $TARGET_DIR/manifest.json"
|