Add create-and-push-gitea.sh
This commit is contained in:
153
create-and-push-gitea.sh
Normal file
153
create-and-push-gitea.sh
Normal file
@@ -0,0 +1,153 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Create Gitea repository via API and push code
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
GITEA_URL="192.168.68.53:3000"
|
||||||
|
GITEA_API="http://${GITEA_URL}/api/v1"
|
||||||
|
TOKEN="77d13be9a7dbae402cb21c08d9231047a645e050"
|
||||||
|
|
||||||
|
# Get username and repo name
|
||||||
|
if [ -z "$1" ] || [ -z "$2" ]; then
|
||||||
|
echo "Usage: $0 <username> <repository-name>"
|
||||||
|
echo ""
|
||||||
|
echo "Example: $0 kyle ha-kiosk-dashboard"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
USERNAME="$1"
|
||||||
|
REPO_NAME="$2"
|
||||||
|
REPO_URL="http://${TOKEN}@${GITEA_URL}/${USERNAME}/${REPO_NAME}.git"
|
||||||
|
|
||||||
|
cd /home/kyle/scripts
|
||||||
|
|
||||||
|
echo "Gitea Repository Setup"
|
||||||
|
echo "====================="
|
||||||
|
echo "Username: ${USERNAME}"
|
||||||
|
echo "Repository: ${REPO_NAME}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Check if git is installed
|
||||||
|
if ! command -v git &> /dev/null; then
|
||||||
|
echo "Installing git..."
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y git
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if curl is installed
|
||||||
|
if ! command -v curl &> /dev/null; then
|
||||||
|
echo "Installing curl..."
|
||||||
|
sudo apt-get install -y curl
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if repository exists via API
|
||||||
|
echo "Checking if repository exists..."
|
||||||
|
REPO_EXISTS=$(curl -s -o /dev/null -w "%{http_code}" \
|
||||||
|
-H "Authorization: token ${TOKEN}" \
|
||||||
|
"${GITEA_API}/repos/${USERNAME}/${REPO_NAME}")
|
||||||
|
|
||||||
|
if [ "$REPO_EXISTS" = "200" ]; then
|
||||||
|
echo "✓ Repository already exists"
|
||||||
|
elif [ "$REPO_EXISTS" = "404" ]; then
|
||||||
|
echo "Repository doesn't exist, creating via API..."
|
||||||
|
|
||||||
|
# Create repository via API
|
||||||
|
RESPONSE=$(curl -s -w "\n%{http_code}" -X POST \
|
||||||
|
-H "Authorization: token ${TOKEN}" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d "{
|
||||||
|
\"name\": \"${REPO_NAME}\",
|
||||||
|
\"description\": \"Home Assistant Kiosk Dashboard Setup\",
|
||||||
|
\"private\": false,
|
||||||
|
\"auto_init\": false
|
||||||
|
}" \
|
||||||
|
"${GITEA_API}/user/repos")
|
||||||
|
|
||||||
|
HTTP_CODE=$(echo "$RESPONSE" | tail -n1)
|
||||||
|
BODY=$(echo "$RESPONSE" | sed '$d')
|
||||||
|
|
||||||
|
if [ "$HTTP_CODE" = "201" ]; then
|
||||||
|
echo "✓ Repository created successfully!"
|
||||||
|
elif [ "$HTTP_CODE" = "409" ]; then
|
||||||
|
echo "Repository already exists (409 conflict)"
|
||||||
|
else
|
||||||
|
echo "✗ Failed to create repository"
|
||||||
|
echo "HTTP Code: ${HTTP_CODE}"
|
||||||
|
echo "Response: ${BODY}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "✗ Unexpected response: ${REPO_EXISTS}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Initialize git if needed
|
||||||
|
if [ ! -d .git ]; then
|
||||||
|
echo "Initializing git repository..."
|
||||||
|
git init
|
||||||
|
git config user.name "kyle"
|
||||||
|
git config user.email "kyle@localhost"
|
||||||
|
git branch -M main
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create .gitignore if needed
|
||||||
|
if [ ! -f .gitignore ]; then
|
||||||
|
cat > .gitignore << 'EOF'
|
||||||
|
# Logs
|
||||||
|
*.log
|
||||||
|
/tmp/
|
||||||
|
|
||||||
|
# Backup files
|
||||||
|
*.backup
|
||||||
|
*~
|
||||||
|
|
||||||
|
# Python cache
|
||||||
|
__pycache__/
|
||||||
|
*.pyc
|
||||||
|
*.pyo
|
||||||
|
|
||||||
|
# OS files
|
||||||
|
.DS_Store
|
||||||
|
Thumbs.db
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Configure credential helper
|
||||||
|
git config credential.helper "store --file=/home/kyle/scripts/.git-credentials" || true
|
||||||
|
|
||||||
|
# Add all files
|
||||||
|
echo "Adding files..."
|
||||||
|
git add -A
|
||||||
|
|
||||||
|
# Commit if there are changes
|
||||||
|
if ! git diff --staged --quiet; then
|
||||||
|
echo "Committing changes..."
|
||||||
|
git commit -m "Home Assistant kiosk dashboard setup
|
||||||
|
|
||||||
|
- Dashboard YAML configurations with card-mod
|
||||||
|
- Browser Mod automation for auto-scrolling
|
||||||
|
- Display rotation and sleep disable scripts
|
||||||
|
- Home Assistant API query scripts
|
||||||
|
- Dashboard launcher scripts
|
||||||
|
- Setup guides and documentation"
|
||||||
|
else
|
||||||
|
echo "No changes to commit"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Remove existing remote if it exists
|
||||||
|
git remote remove origin 2>/dev/null || true
|
||||||
|
|
||||||
|
# Add remote with token authentication
|
||||||
|
echo "Adding remote repository..."
|
||||||
|
git remote add origin "${REPO_URL}"
|
||||||
|
|
||||||
|
# Push to repository
|
||||||
|
echo "Pushing to Gitea..."
|
||||||
|
echo "Repository: http://${GITEA_URL}/${USERNAME}/${REPO_NAME}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
git push -u origin main
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "✓ Successfully pushed to Gitea!"
|
||||||
|
echo "Repository URL: http://${GITEA_URL}/${USERNAME}/${REPO_NAME}"
|
||||||
Reference in New Issue
Block a user