#!/bin/bash
set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO="${1:-}"
if [ -z "$REPO" ]; then
  echo "Usage: ./new-project repo-name"
  exit 1
fi

case "$REPO" in
  *[!A-Za-z0-9._-]*|"."|".."|"") echo "Repo name: only latin letters, digits, dot, underscore, dash"; exit 1;;
esac

USER="dauren_moldabayev"
TOKEN="$(head -n 1 "$SCRIPT_DIR/.git-credentials" | sed -E 's#^https?://[^:]+:([^@]+)@.*#\1#')"

echo "Creating repo $USER/$REPO..."
HTTP_CODE=$(curl -sS -o /tmp/gitea-create-repo.json -w "%{http_code}" -X POST "http://gitea:3000/api/v1/user/repos" \
  -H "Authorization: token $TOKEN" \
  -H "Content-Type: application/json" \
  -d "{\"name\":\"$REPO\",\"private\":false,\"auto_init\":true,\"default_branch\":\"main\"}")

if [ "$HTTP_CODE" != "201" ] && [ "$HTTP_CODE" != "409" ] && [ "$HTTP_CODE" != "422" ]; then
  cat /tmp/gitea-create-repo.json
  exit 1
fi

if [ ! -d "$REPO" ]; then
  echo "Cloning..."
  HOME="$SCRIPT_DIR" GIT_CONFIG_GLOBAL="$SCRIPT_DIR/.gitconfig" \
  git clone "http://gitea:3000/$USER/$REPO.git"
  git -C "$REPO" remote set-url origin "http://gitea:3000/$USER/$REPO.git"
fi

echo "Done: $REPO"
echo "Git: https://git.vibe42.kz/$USER/$REPO"
echo "Pages: https://pages.git.vibe42.kz/$USER/$REPO/"
