| @@ -0,0 +1,88 @@ | |||
| #!/bin/sh - | |||
| set -e | |||
| set -x | |||
| # using ssh-agent to make this quicker: | |||
| # eval $(ssh-agent) | |||
| # ssh-add | |||
| # Token file must contain: | |||
| # Authorization: token <token> | |||
| # where <token> is generated from: Settings -> Applications, or: | |||
| # <basegiteaurl>/user/settings/applications | |||
| tokenfile="$PWD/.gitea.token" | |||
| # domain used to detect if it's a repo that we can update | |||
| gitdomain=funkthat.com | |||
| # the gitea API url | |||
| giteabaseurl="https://www.funkthat.com/gitea/api/v1" | |||
| echo "start" | |||
| # Command to list all the repos that have master as it's default branch. | |||
| #curl -s -X GET "https://www.funkthat.com/gitea/api/v1/users/jmg/repos" -H "accept: application/json" | jq -r '(.[]) | select(.default_branch == "master") | .name' | |||
| if ! [ -x $(which jq) ]; then | |||
| echo 'Error: jq needs to be installed' | |||
| exit 1 | |||
| fi | |||
| # -H @"$tokenfile" | |||
| # Set the default branch: | |||
| # curl -v -i -d "$(jq -n '{ default_branch: "main" }')" -X PATCH "https://www.funkthat.com/gitea/api/v1/repos/jmg/projects" -H "Content-Type: application/json" -H "accept: application/json" -H @"$tokenfile" | |||
| #curl -s -X GET "https://www.funkthat.com/gitea/api/v1/repos/jmg/ggate" -H "accept: application/json" | jq '.default_branch' | |||
| #echo 'list' | |||
| # make sure we are in a correct repo | |||
| cd /Users/jmg/git/fbsdembdev | |||
| r=$(git remote -v | grep git.funkthat.com 2>&1) | |||
| if [ x"$r" = x"" ]; then | |||
| echo 'not a gitea repo' | |||
| exit 1 | |||
| fi | |||
| # get the remote that we need to update | |||
| gitremote=$(echo "$r" | awk '{ print $1; exit 0 }') | |||
| # get the gitea user/project, this currently assumes that whatever | |||
| # the url is, it ends with <username>/<reponame>.git | |||
| giteauserproj=$(echo "$r" | awk '{ url=$2; cnt = split(url, surl, "/"); proj = split(surl[cnt], sproj, "."); printf("%s/%s", surl[cnt - 1], sproj[1]); exit 0; }') | |||
| # see if there's a master branch | |||
| r=$(git branch | grep master || true) | |||
| if [ x"$r" = x"" ]; then | |||
| echo 'no master branch' | |||
| exit 1 | |||
| fi | |||
| # Check if we are on that branch | |||
| onotherbranch=1 | |||
| if [ x"${r#\* }" != x"$r" ]; then | |||
| onotherbranch=0 | |||
| git checkout $(git log | head -n 1 | awk '{print $2}') >/dev/null 2>&1 | |||
| fi | |||
| # rename the branch | |||
| git branch -m master main | |||
| # change upstream | |||
| upmerge=$(git config branch.main.merge) | |||
| if [ x"${upmerge%master}" != x"$upmerge" ]; then | |||
| git config branch.main.merge refs/heads/main | |||
| fi | |||
| # push new main branch | |||
| git push origin main | |||
| # update gitea | |||
| curl -v -i -d "$(jq -n '{ default_branch: "main" }')" -X PATCH "${giteabaseurl}/repos/${giteauserproj}" -H "Content-Type: application/json" -H "accept: application/json" -H @"$tokenfile" | |||
| # delete old branch on server | |||
| git push -d origin master | |||
| # restore our checkout | |||
| if [ x"$onotherbranch" = x"0" ]; then | |||
| git checkout main | |||
| fi | |||