#!/bin/bash # Pull in parameters from a ini file # # Pull in parameters from a config file ~/.smegit/config # inifilename=$(echo ~)"/.smegit/config" if [ ! -e $inifilename ] ; then # Not here, look at system default if [ ! -e /etc/smegit.ini ] ; then echo "No ini file found $inifilename or /etc/smegit.ini" echo "git-list-all-org-repos.sh [draftrelease | prerelease | release | allreleases] [cloneurl] [zipurl] [asseturls]" exit 1 else inifilename="/etc/smegit.ini" fi fi while read -r line || [[ -n "$line" ]]; do if [[ $line =~ ^\[.*\]$ ]] then section=${line#*[} section=${section%]*} else if [[ $line =~ ^[^#]*= ]] then key=${line%=*} value=${line#*=} declare "${section}_${key}=$value" fi fi done < "$inifilename" GITEAUser=${remote_USER} GITEAACCESSTOKEN=${remote_GITEAACCESSTOKEN} GITEAHOST=${remote_GITEAHOST} NOISY= EXTRAPARAMS= DEBUG= for param in $2 $3 $4 $5 $6 $7 $8 $9 $10; do if [ $param ] ; then case $param in local ) GITEAUser=${local_USER} GITEAACCESSTOKEN=${local_GITEAACCESSTOKEN} GITEAHOST=${local_GITEAHOST} ;; debug ) DEBUG=true ;; noisy ) NOISY=true ;; release ) SHOWRELEASE=true;SHOWPRERELEASE=false;SHOWDRAFT=false ;; draftrelease ) SHOWRELEASE=true;SHOWPRERELEASE=false;SHOWDRAFT=true ;; prerelease ) SHOWRELEASE=true;SHOWPRERELEASE=true;SHOWDRAFT=false ;; allreleases ) SHOWRELEASE=true;SHOWALLRELEASES=true ;; cloneurl ) SHOWCLONEURL=true ;; zipurl ) SHOWZIPURL=true ;; id ) SHOWID=true ;; asseturls ) SHOWASSETURLS=true ;; * ) EXTRAPARAMS=$EXTRAPARAMS" "$param ;; esac else break fi done if [[ -z $1 ]] ; then echo "git-list-all-org-repos.sh [draftrelease | prerelease | release | allreleases] [cloneurl] [zipurl] [asseturls]" exit 0 fi ORG_NAME="$1" PAGE_COUNTER=1 REPO_LIST="" while true; do REPO_PAGE=$(curl -s -H "Authorization: token $GITEAACCESSTOKEN" "$GITEAHOST/api/v1/orgs/$ORG_NAME/repos?page=$PAGE_COUNTER") if [[ $(echo $REPO_PAGE | jq length) -eq 0 ]]; then break fi REPO_LIST="$REPO_LIST $(echo $REPO_PAGE | jq -r .[].full_name | cut -d / -f 2 )" PAGE_COUNTER=$((PAGE_COUNTER+1)) done REPO_LIST=$(echo $REPO_LIST | tr -s '[:space:]' '\n' | sort) for item in $REPO_LIST ; do line=$item if [[ $SHOWID || $SHOWRELEASE || $SHOWCLONEURL || $ZIPURL || $SHOWALLRELEASES ]] ; then #Find and show releases # echo "$GITEAHOST/api/v1/repos/$ORG_NAME/$item/releases?draft=true&pre-release=true&limit=100" \ # -H 'accept: application/json' \ # -H "Authorization: token $GITEAACCESSTOKEN" if [ $SHOWALLRELEASES ] ; then RESPONSE=$(curl -s -X 'GET' \ "$GITEAHOST/api/v1/repos/$ORG_NAME/$item/releases" \ -H 'accept: application/json' \ -H "Authorization: token $GITEAACCESSTOKEN"); else RESPONSE=$(curl -s -X 'GET' \ "$GITEAHOST/api/v1/repos/$ORG_NAME/$item/releases?draft=$SHOWDRAFT&pre-release=$SHOWPRERELEASE&limit=100" \ -H 'accept: application/json' \ -H "Authorization: token $GITEAACCESSTOKEN"); fi if [ $DEBUG ] ; then echo "$RESPONSE"; fi if [ $SHOWRELEASE ] ; then # Will need to use " jq 'map(.name)'" once we have more than one release. REL=$(echo $RESPONSE | jq -r '.[0].tag_name') ID=$(echo $RESPONSE | jq -r '.[0].id') PRE=$(echo $RESPONSE | jq -r '.[0].prerelease') DRAFT=$(echo $RESPONSE | jq -r '.[0].draft') # Get assets - json for any files uploaded ASSETS=$(echo $RESPONSE | jq -r '.[0].assets') # Number of assets NUMASSETS=$(echo $ASSETS | jq length) if [ $DEBUG ]; then echo "Assets:$NUMASSETS"; fi if [ $PRE = "true" ] ; then PRE="pre"; else PRE=""; fi if [ $DRAFT = "true" ] ; then DRAFT="draft"; else DRAFT=""; fi if [ $DEBUG ] ; then echo "pre:$PRE Draft:$DRAFT"; fi if [ $DEBUG ] ; then echo $REL; fi if [ "$REL" ] ; then line="$line $REL $ID $PRE $DRAFT $NUMASSETS"; fi if [ $SHOWCLONEURL ] ; then URL=$(echo $RESPONSE | jq -r '.[0].url') if [ "$URL" ] ; then line="$line $URL"; fi fi if [ $SHOWZIPURL ] ; then URL=$(echo $RESPONSE | jq -r '.[0].zipball_url') if [ "$URL" ] ; then line="$line $URL"; fi fi if [[ $NUMASSETS -gt 0 && $SHOWASSETURLS ]]; then ASSETURLS=$(echo $ASSETS | jq 'map("\(.name):\(.browser_download_url).")') if [ $DEBUG ]; then echo "$ASSETURLS"; fi # Turn the json into a list one on each line ASSETURLS=$(echo $ASSETURLS | sed 's/\[//' | sed 's/\]//' | sed 's/,/\\n/g' | sed 's/\"//g') line="$line\n$ASSETURLS"; fi fi fi echo -e $line; done