89 lines
1.9 KiB
Bash
Executable File
89 lines
1.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -euf -o pipefail
|
|
|
|
curp="$(cd "$(dirname "$0")" && pwd)"
|
|
|
|
# unset all GITEA_* variables
|
|
unset "${!GITEA_@}"
|
|
|
|
[ -f "$curp/init.sh" ] && source "$curp/init.sh"
|
|
source "${curp}/include/gitea.sh"
|
|
|
|
# defaults
|
|
: ${GITEA_ADMIN_USERNAME:=$USER}
|
|
: ${GITEA_ADMIN_PASSWORD:=}
|
|
# example ssh://git@gitea.example.com:3022
|
|
: ${GITEA_SERVER_PUSH_URL:=}
|
|
|
|
ARGS=()
|
|
pos_arg_flag=0
|
|
while [[ $# -gt 0 ]]; do
|
|
if [ "${pos_arg_flag}" -eq "1" ]; then
|
|
ARGS+=("$1")
|
|
shift 1
|
|
continue
|
|
fi
|
|
case "$1" in
|
|
--url | -u)
|
|
GITEA_SERVER_URL="$2"
|
|
shift 2
|
|
;;
|
|
--token | -t)
|
|
GITEA_ADMIN_TOKEN="$2"
|
|
shift 2
|
|
;;
|
|
--admin | -a)
|
|
GITEA_ADMIN_USERNAME="$2"
|
|
shift 2
|
|
;;
|
|
--password | -p)
|
|
GITEA_ADMIN_PASSWORD="$2"
|
|
shift 2
|
|
;;
|
|
--pushurl | -s)
|
|
GITEA_SERVER_PUSH_URL="$2"
|
|
shift 2
|
|
;;
|
|
--)
|
|
pos_arg_flag=1
|
|
shift 1
|
|
;;
|
|
--*=*)
|
|
set -- "$(cat - <<<"$1" | cut -d '=' -f1)" "$(cat - <<<"$1" | cut -d '=' -f2-)" "${@:3}"
|
|
;;
|
|
*)
|
|
ARGS+=("$1")
|
|
shift 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
[ -z "${GITEA_SERVER_PUSH_URL}" ] &&
|
|
GITEA_SERVER_PUSH_URL="$(echo "${GITEA_SERVER_URL}" | perl -pe "s#(https?://)#\${1}${GITEA_ADMIN_USERNAME}:${GITEA_ADMIN_PASSWORD}@#")"
|
|
|
|
GITEA_SERVER_API_URL="${GITEA_SERVER_URL}/api/v1"
|
|
|
|
# init repos
|
|
for repo in "${ARGS[@]}"; do
|
|
repoPath="$(echo "$repo" | cut -d ':' -f1 | tr -d '[:space:]')"
|
|
repoOrg="$(echo "$repo" | cut -d ':' -f2 | tr -d '[:space:]')"
|
|
repoName="$(echo "$repo" | cut -d ':' -f3 | tr -d '[:space:]')"
|
|
[ -z "$repoName" ] && repoName="$(basename "$repoPath" ".git")"
|
|
if [ -z "$repoOrg" ]; then
|
|
repoAPIEP="/user/repos"
|
|
repoOwner="${GITEA_ADMIN_USERNAME}"
|
|
UTYPE=user
|
|
else
|
|
gitea_create_org "$repoOrg"
|
|
repoAPIEP="/org/$repoOrg/repos"
|
|
repoOwner="$repoOrg"
|
|
UTYPE=org
|
|
fi
|
|
gitea_create_repo "${repoOwner}" "${repoName}" "${UTYPE}" 1>&2
|
|
(
|
|
cd "$repoPath"
|
|
git push "${GITEA_SERVER_PUSH_URL}/${repoOwner}/${repoName}.git" --mirror
|
|
)
|
|
done
|