Files
gitea-cli-utils/publish_to_gitea.sh
Brad Cimbura e044c3fe45 update script
2024-07-25 15:33:41 -05:00

68 lines
2.0 KiB
Bash
Executable File

#!/bin/bash
# Variables
GITEA_URL=$1 # Gitea server URL, e.g., https://gitea.example.com
USERNAME=$2 # Your Gitea username
OWNER=$3 # The owner of the package (user or organization)
PROJECT_DIR=$4 # Path to the PHP project directory (not zipped)
VERSION=$5 # Package version (optional)
CONFIG_DIR="$HOME/.config/gitea-cli-tools"
TOKEN_FILE="$CONFIG_DIR/${USERNAME}_token"
echo "$TOKEN_FILE"
# Check if the token file exists and use it
if [ -f "$TOKEN_FILE" ]; then
echo "Using stored token..."
PASSWORD_OR_TOKEN=$(base64 --decode < "$TOKEN_FILE")
else
# Prompt for password securely
read -sp "Enter your Gitea password or token: " PASSWORD
echo
# Ask if the user wants to store the password/token
read -p "Do you want to store the token for future use? (y/n): " STORE_RESPONSE
if [[ $STORE_RESPONSE =~ ^[Yy]$ ]]; then
# Ensure the configuration directory exists
mkdir -p "$CONFIG_DIR"
# Encode and save the token/password
echo "$PASSWORD" | base64 > "$TOKEN_FILE"
echo "Token stored."
fi
PASSWORD_OR_TOKEN=$(printf '%q' "$PASSWORD")
fi
# Create a ZIP file from the project directory
ZIP_NAME="package-$(date +%Y%m%d%H%M%S).zip"
#zip -r "$ZIP_NAME" "$PROJECT_DIR" -x "*vendor/*" || { echo "Failed to create ZIP file"; exit 1; }
# Change to the project directory
cd "$PROJECT_DIR" || { echo "Failed to enter project directory $PROJECT_DIR"; exit 1; }
# Use git archive to respect .gitignore and exclude .git
git archive --format=zip -o "../$ZIP_NAME" HEAD
cd ..
# Check if version is provided
if [ -z "$VERSION" ]; then
URL="$GITEA_URL/api/packages/$OWNER/composer"
else
URL="$GITEA_URL/api/packages/$OWNER/composer?version=$VERSION"
fi
# Publish the package
curl --user $USERNAME:$PASSWORD_OR_TOKEN \
--upload-file $ZIP_NAME \
$URL
# Check for successful upload
if [ $? -eq 0 ]; then
echo "Package uploaded successfully."
else
echo "Failed to upload the package."
fi
# Optionally, remove the ZIP file after upload
rm $ZIP_NAME