68 lines
2.0 KiB
Bash
Executable File
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
|