agravity_client/upload_wheel_to_forgejo_pypi.sh

100 lines
2.5 KiB
Bash

#!/bin/bash
# upload_wheel_to_forgejo_pypi.sh
# Upload wheel to Forgejo PyPI for Agravity Client
#
# Prerequisites:
# 1. Create .pypirc file in project root
# 2. Copy from .pypirc.example and add your credentials
#
# Usage:
# ./upload_wheel_to_forgejo_pypi.sh [--build]
# Options: --build Force rebuild before upload
set -e
PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PYPIRC_SRC="$PROJECT_ROOT/.pypirc"
PYPIRC_DEST="$HOME/.pypirc"
echo ""
echo "========================================================================"
echo "Agravity Client - Upload to Forgejo PyPI"
echo "========================================================================"
echo ""
# Check for .pypirc
if [ ! -f "$PYPIRC_SRC" ]; then
echo "[!] .pypirc not found in project root!"
echo ""
echo "Setup instructions:"
echo " 1. cp .pypirc.example .pypirc"
echo " 2. Edit .pypirc with your Forgejo credentials"
echo " 3. Run this script again"
echo ""
exit 1
fi
# Copy .pypirc to user home
echo "Configuring credentials..."
cp "$PYPIRC_SRC" "$PYPIRC_DEST"
chmod 600 "$PYPIRC_DEST"
# Activate virtual environment (if exists)
if [ -f "$PROJECT_ROOT/.venv/bin/activate" ]; then
source "$PROJECT_ROOT/.venv/bin/activate"
fi
# Install twine if needed
if ! pip list 2>/dev/null | grep -q "^twine "; then
echo "Installing twine..."
pip install -q twine
fi
# Check for --build flag
if [ "$1" = "--build" ]; then
echo "Building wheel (forced)..."
rm -rf "$PROJECT_ROOT/dist"
cd "$PROJECT_ROOT"
python build_wheel.py
if [ $? -ne 0 ]; then
rm -f "$PYPIRC_DEST"
exit 1
fi
else
# Build wheel if not present
if ! ls "$PROJECT_ROOT/dist"/*.whl > /dev/null 2>&1; then
echo "Building wheel..."
cd "$PROJECT_ROOT"
python build_wheel.py
if [ $? -ne 0 ]; then
rm -f "$PYPIRC_DEST"
exit 1
fi
fi
fi
# Upload to Forgejo PyPI
echo ""
echo "========================================================================"
echo "Uploading to Forgejo PyPI..."
echo "========================================================================"
echo ""
cd "$PROJECT_ROOT"
twine upload -r forgejo dist/*.whl
UPLOAD_RESULT=$?
# Cleanup
rm -f "$PYPIRC_DEST"
echo ""
echo "========================================================================"
if [ $UPLOAD_RESULT -eq 0 ]; then
echo "Upload successful!"
else
echo "Upload failed"
fi
echo "========================================================================"
echo ""
exit $UPLOAD_RESULT