Files
sap-architecture/git-sync
T
2026-07-24 20:49:34 +00:00

53 lines
1.6 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
GIT_HOST="git.alexzaw.dev"
GIT_OWNER="alexz"
GIT_TOKEN="dc76c4827cf0c77fe51680b2fadcec879357b821"
REPO_NAME="${1:-$(basename "$(pwd)")}"
API_ROOT="https://${GIT_HOST}/api/v1"
REPO_API="${API_ROOT}/repos/${GIT_OWNER}/${REPO_NAME}"
echo "Checking repository ${GIT_OWNER}/${REPO_NAME}…"
status="$(curl -s -o /dev/null -w "%{http_code}" \
-H "Authorization: token ${GIT_TOKEN}" \
"${REPO_API}")"
if [[ "${status}" == "404" ]]; then
echo "Repository not found; creating…"
payload="$(printf '{"name":"%s","private":true}' "${REPO_NAME}")"
create_status="$(curl -s -o /dev/null -w "%{http_code}" \
-X POST "${API_ROOT}/user/repos" \
-H "Authorization: token ${GIT_TOKEN}" \
-H "Content-Type: application/json" \
-d "${payload}")"
[[ "${create_status}" == "201" ]] || { echo "Create failed (HTTP ${create_status})."; exit 1; }
elif [[ "${status}" == "200" ]]; then
echo "Repository already exists."
else
echo "Unexpected status while checking repo (HTTP ${status})."
exit 1
fi
echo "Preparing local repository…"
git init >/dev/null
git branch -M main 2>/dev/null || true
if ! git remote get-url origin >/dev/null 2>&1; then
git remote add origin "https://${GIT_HOST}/${GIT_OWNER}/${REPO_NAME}.git"
fi
if [[ -n "$(git status --porcelain)" ]]; then
git add .
git commit -m "upload current sources" || true
else
echo "Nothing new to commit; skipping commit step."
fi
echo "Pushing to origin/main…"
git -c credential.helper= \
-c credential.useHttpPath=true \
-c http.extraHeader="Authorization: token ${GIT_TOKEN}" \
push -u origin main
echo "Done."