Add upload script

This commit is contained in:
Tobias Strobel 2024-01-07 21:55:48 +01:00
parent 502f81ffdc
commit 114d14fc2f

72
upload-release.sh Executable file
View file

@ -0,0 +1,72 @@
#!/bin/bash
set -eu
# Check if the output directory is provided as the first parameter
if [ "$#" -lt 1 ]; then
echo "Error: Output directory not provided."
echo "Usage: $0 <output_directory>"
exit 1
fi
# Remove trailing slash from the provided output directory path
OUTPUT_DIRECTORY=$(echo "$1" | sed 's:/$::')
GITEA_USERNAME=${GITEA_USERNAME:?Please export GITEA_USERNAME to env first!}
GITEA_TOKEN=${GITEA_TOKEN:?Please export GITEA_TOKEN to env first!}
# Source environment variables
if [ -z "$GITEA_USERNAME" ] || [ -z "$GITEA_TOKEN" ]; then
echo "Error: GITEA_USERNAME or GITEA_TOKEN not set in the environment."
exit 1
fi
GITEA_BASEURL="https://code.strobel.one"
GITEA_OWNER="rafeOS"
IMAGE_ID="rafeOS"
IMAGE_VARIANT="server"
IMAGE_VERSION="$(cat mkosi.images/${IMAGE_VARIANT}/mkosi.version)"
PACKAGE_NAME="image"
PACKAGE_VERSION="server"
# Populate FILES array with all files found in the output directory
declare -a FILES=("$OUTPUT_DIRECTORY"/*)
for FILE in "${FILES[@]}"
do
# Check if file exists
FILE_NAME=$(basename "$FILE")
URL="${GITEA_BASEURL}/api/packages/${GITEA_OWNER}/generic/${PACKAGE_NAME}/${PACKAGE_VERSION}/${FILE_NAME}"
response=$(curl -s -o /dev/null -w "%{http_code}" \
--user "${GITEA_USERNAME}:${GITEA_TOKEN}" \
"$URL")
if [ "$response" == "200" ]; then
echo "File $FILE_NAME already exists. Skipping..."
continue
fi
# Upload new file
echo "Uploading file $FILE_NAME..."
URL="${GITEA_BASEURL}/api/packages/${GITEA_OWNER}/generic/${PACKAGE_NAME}/${PACKAGE_VERSION}/${FILE_NAME}"
curl --user "${GITEA_USERNAME}:${GITEA_TOKEN}" \
--upload-file "$FILE" --fail \
--progress-bar --output /dev/stderr \
"$URL"
if [ $? -eq 0 ]; then
echo "File $FILE_NAME successfully uploaded."
else
echo "Uploading $FILE_NAME failed!"
fi
done
# Query all files
UPLOADED_FILES=$(curl -s --user "${GITEA_USERNAME}:${GITEA_TOKEN}" \
"${GITEA_BASEURL}/api/v1/packages/${GITEA_OWNER}/generic/${PACKAGE_NAME}/${PACKAGE_VERSION}/files")
# Display the list of uploaded files in table format
echo -e "\nCurrent files in package ${PACKAGE_NAME} (${IMAGE_VARIANT}):"
echo "$UPLOADED_FILES" | jq -r '.[] | "- \(.name)"'
# Display total count of files
TOTAL_COUNT=$(echo "$UPLOADED_FILES" | jq -r 'length')
echo -e "\nTotal count of files: $TOTAL_COUNT"