127 lines
3.5 KiB
Bash
Executable File
127 lines
3.5 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Run script against every item in input file
|
|
|
|
if [[ -z $1 ]] ; then
|
|
echo "parse a list of parameters and execute script with those parameters"
|
|
echo "parse-list.sh <param file> <script> [<noisy> <additional> <additional> <additional>]"
|
|
echo "<param file|org='organisation'> name of file containing parameters"
|
|
echo " or the organisation list of repos"
|
|
echo "<script> script to run (e.g. rename-e-smith-pkh.sh)"
|
|
echo "optional params can appear in any order"
|
|
echo " <review> show line being executed but do NOTHING!"
|
|
echo " <noisy> show line being executed"
|
|
echo " <additional> additional params to be passed (up to 3)"
|
|
exit 0
|
|
fi
|
|
|
|
# parse the command line parameters
|
|
PROCESSORG=
|
|
EXTRAPARAMS=
|
|
if [[ $1 == org=* ]] ; then
|
|
# using a list of the repos in this organisatoin as input
|
|
PROCESSORG=${1#*=}
|
|
EXTRAPARAMS=$PROCESSORG # add the org as the first additional param
|
|
# Get the ini file and relevant parameters - only needed for org processing
|
|
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 $inifiename or /etc/smegit.ini"
|
|
exit 1
|
|
else
|
|
initfilename="/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"
|
|
else
|
|
# using a file as input
|
|
if [[ ! -f $1 ]] ; then
|
|
echo "Can NOT find $1 - Aborting"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
if [[ $(which $2 | grep "no $2") ]] ; then
|
|
echo "Can NOT find $2 - Aborting"
|
|
exit 1
|
|
fi
|
|
|
|
DEBUG=
|
|
REVIEW=
|
|
NOISY=
|
|
GITEAHOST=${remote_GITEAHOST}
|
|
ACCESSTOKEN=${remote_GITEAACCESSTOKEN}
|
|
for param in $3 $4 $5 $6; do
|
|
if [ $param ] ; then
|
|
case $param in
|
|
review )
|
|
REVIEW=true ;;
|
|
noisy )
|
|
NOISY=true ;;
|
|
local )
|
|
GITEAHOST=${local_GITEAHOST}
|
|
ACCESSTOKEN=${local_GITEAACCESSTOKEN}
|
|
EXTRAPARAMS=$EXTRAPARAMS" "$param
|
|
;;
|
|
debug )
|
|
DEBUG=true ;;
|
|
* )
|
|
EXTRAPARAMS=$EXTRAPARAMS" "$param ;;
|
|
esac
|
|
else
|
|
break
|
|
fi
|
|
done
|
|
|
|
# Build array of parameters to cycle through
|
|
PARAMLIST=()
|
|
if [ $PROCESSORG ] ; then
|
|
# get a list of repositories in the source organisation and store in array of parameters
|
|
for page in {1..10} ; do
|
|
if [ $DEBUG ] ; then echo "getting page $page of repos from $GITEAHOST $PROCESSORG" ; fi
|
|
RESPONSE=$(curl -s -X 'GET' \
|
|
"$GITEAHOST/api/v1/orgs/$PROCESSORG/repos?page=$page" \
|
|
-H 'accept: application/json' \
|
|
-H "Authorization: token $ACCESSTOKEN"
|
|
)
|
|
if [ $DEBUG ] ; then echo "RESPONSE=$RESPONSE" ; fi
|
|
|
|
if [[ $RESPONSE == '[]' ]] ; then
|
|
# we have them all
|
|
break
|
|
else
|
|
PARAMLIST="$PARAMLIST $(echo $RESPONSE | grep -oP '(?<="name":").+?(?=")')"
|
|
fi
|
|
done
|
|
else
|
|
# load array of parameters from input file
|
|
while read -r line ; do PARAMLIST+=($line) ; done < $1
|
|
fi
|
|
|
|
# Cycle through array of parameters and execute script
|
|
for param in ${PARAMLIST[@]}
|
|
do
|
|
if [[ $NOISY || $REVIEW ]] ; then echo "$2 $param $EXTRAPARAMS" ; fi
|
|
if [[ -z $REVIEW ]] ; then
|
|
if [[ $param ]] ; then
|
|
RESPONSE=$($2 $param $EXTRAPARAMS)
|
|
if [ $? -eq 0 ] ; then echo "($?) $RESPONSE" ; fi
|
|
if [ $DEBUG ] ; then echo "RESPONSE=$RESPONSE" ; fi
|
|
fi
|
|
fi
|
|
done
|
|
|
|
exit 0 |