#!/bin/sh # Requires: coreutils, curl, jq, git set -ue API_KEY="$(cat "$(dirname "$(readlink -f "$0")")"/gitea-api-token.txt)" [ "$#" -lt 2 ] && exit 1 if [ "$1" = "openSUSE:Factory" ] ; then OUT=$(osc develproject "$1" "$2") DEVPRJ="$(dirname "$OUT")" PKG="$(basename "$OUT")" else DEVPRJ="$1" PKG="$2" fi osc co -u -c "$DEVPRJ" "$PKG" || /bin/true cd "$PKG" # Fork # Whoami? LOGIN=$(curl -s -H 'accept: application/json' -H 'Content-Type: application/json' \ -H "Authorization: token $API_KEY" \ "https://src.opensuse.org/api/v1/user" 2>/dev/null | jq -r '.login') || /bin/true # Check whether the fork already exists FORKS="$(curl -s -H 'accept: application/json' -H 'Content-Type: application/json' \ -H "Authorization: token $API_KEY" \ "https://src.opensuse.org/api/v1/repos/pool/$PKG/forks" 2>/dev/null \ | jq -r '.[].full_name' | grep -s -v '^rpm/')" || /bin/true if [ -n "$FORKS" ] ; then MY_FORK="$(echo "$FORKS"|grep -s "$LOGIN")" || /bin/true fi # If not, make a fork if [ -z "$MY_FORK" ] ; then FRK_OUT="$(curl -s -X 'POST' -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -H "Authorization: token $API_KEY" \ "https://src.opensuse.org/api/v1/repos/pool/$PKG/forks" 2>/dev/null)" MY_FORK="$(echo $FRK_OUT | jq -r '.full_name')" fi # Add ignore echo '.osc/' >> .git/info/exclude echo '_scmsync.obsinfo' >> .git/info/exclude # Set URLs for the forked repository git remote add myproj "https://src.opensuse.org/$MY_FORK.git" git remote set-url --push myproj "gitea@src.opensuse.org:$MY_FORK.git"