diff --git a/shellscripts/getfile.sh b/shellscripts/getfile.sh index 449711e4f5af6dfc07e227559e75ad14943153bc..c3ae3b72a5d4ee350a4f63f0472047c07ef2ecf1 100755 --- a/shellscripts/getfile.sh +++ b/shellscripts/getfile.sh @@ -12,6 +12,7 @@ # ---------------------------------------------------------------------- line="----------------------------------------------------------------------" +bDebug=0 . $0.cfg @@ -20,27 +21,21 @@ line="----------------------------------------------------------------------" # ---------------------------------------------------------------------- function showhelp(){ -echo " -SYNTAX: - -s SECRET override secret in IMLCI_PKG_SECRET - -u URL URL of iml ci server without trailing /; overrides env variable IMLCI_URL +echo "SYNTAX: + -d enable debug infos -e PHASE phase; overrides env variable IMLCI_PHASE + -f FILE filename to get; overrides env variable IMLCI_FILE + -o OUTFILE optional output file; default; given filename in current directory -p PROJECT ci project id; overrides env variable IMLCI_PROJECT - -f PROJECT filename; overrides env variable IMLCI_FILE - -ACTION: - ... without given project and secret - projects show projects + -s SECRET override secret in IMLCI_PKG_SECRET + -u URL URL of iml ci server without trailing /; overrides env variable IMLCI_URL - ... with project and secret - buildinfo [branch] - show infos about what happens on build - build [branch] - execute build - phases show status of phases +DEFAULTS: + You don't need to set all values by command line. Use a config to set defaults + $0.cfg EXAMPLES: - `basename $0` -u https://ci.example.com -s newsecret [FILE] + `basename $0` -u https://ci.example.com -f [FILE] " } @@ -49,9 +44,10 @@ function makeRequest(){ local apiMethod=$1 local apiRequest=$2 - local secret=$3 + local outfile=$3 + local secret=$4 - local outfile=$( mktemp ) + # local outfile=$( mktemp ) echo $line echo $apiMethod ${apiHost}${apiRequest} @@ -75,33 +71,30 @@ ${apiTS} myHash=`echo -n "$data" | openssl sha1 -hmac "${secret}" | cut -f 2 -d" "` myHash=`echo -n "$myHash" | base64` - curl \ + curl\ -H "Accept: application/json" -H "Content-Type: application/json" \ -H "Date: ${apiTS}" \ -H "Authorization: demo-bash-client:${myHash}" \ -X $apiMethod \ - ${IMLCI_URL}${apiRequest} | tee -a $outfile + -o "${outfile}.downloading" \ + --fail \ + ${IMLCI_URL}${apiRequest} + if [ $? -eq 0 ]; then + echo Download OK. + mv "${outfile}.downloading" "${outfile}" + ls -l "${outfile}" + else + echo ERROR: Download failed. + # rm -f "${outfile}.downloading" + fi else - curl -i \ + curl\ -H "Accept: application/json" -H "Content-Type: application/json" \ -X $apiMethod \ - ${IMLCI_URL}${apiRequest} | tee -a $outfile + -o "${outfile}.downloading" \ + ${IMLCI_URL}${apiRequest} fi - grep "^HTTP\/" $outfile | head -1 | grep " 200 " >/dev/null - local rccurl=$? - - echo $line - echo OUTPUT: - cat $outfile - echo $line - - rm -f $outfile - if [ $rccurl -ne 0 ]; then - echo - echo "ERROR: API request failed. CURL request did not get respond status code 200." - exit 4 - fi } @@ -121,50 +114,43 @@ fi -while getopts "a:b:u:p:e:f:s:" option; do -case ${option} in - a) - apiAction=$OPTARG - ;; - b) - branch=$OPTARG - ;; - u) - export IMLCI_URL=$OPTARG - ;; - p) - export IMLCI_PROJECT=$OPTARG - ;; - e) - export IMLCI_PHASE=$OPTARG - ;; - f) - export IMLCI_FILE=$OPTARG - ;; - s) - export IMLCI_PKG_SECRET=$OPTARG - ;; - *) - echo ERROR: invalid option [${option}] - exit 2 -esac +while getopts "de:f:o:p:s:u:" option; do + case ${option} in + d) bDebug=1 ;; + e) export IMLCI_PHASE=$OPTARG ;; + f) export IMLCI_FILE=$OPTARG ;; + o) export IMLCI_OUTFILE=$OPTARG ;; + p) export IMLCI_PROJECT=$OPTARG ;; + s) export IMLCI_PKG_SECRET=$OPTARG ;; + u) export IMLCI_URL=$OPTARG ;; + *) + echo ERROR: invalid option [${option}] + exit 2 + esac done -echo Params: $* -echo "IMLCI_URL = $IMLCI_URL" -echo "IMLCI_PROJECT = $IMLCI_PROJECT" -echo "IMLCI_PHASE = $IMLCI_PHASE" -echo "IMLCI_FILE = $IMLCI_FILE" -echo "IMLCI_PKG_SECRET = $IMLCI_PKG_SECRET" -echo - +test -z ${IMLCI_OUTFILE} && IMLCI_OUTFILE=$IMLCI_FILE -makeRequest GET "/packages/$IMLCI_PHASE/$IMLCI_PROJECT/$IMLCI_FILE" "$IMLCI_PKG_SECRET" +if [ $bDebug = 1 ]; then + echo $line + echo + echo DEBUG INFOS + echo + echo ----- content of $0.cfg + cat $0.cfg 2>/dev/null + echo + echo '----- Params (override config values)' + echo $* + echo + echo ----- used values + echo "IMLCI_URL = $IMLCI_URL" + echo "IMLCI_PKG_SECRET = $IMLCI_PKG_SECRET" + echo "IMLCI_PROJECT = $IMLCI_PROJECT" + echo "IMLCI_PHASE = $IMLCI_PHASE" + echo "IMLCI_FILE = $IMLCI_FILE" + echo "IMLCI_OUTFILE = $IMLCI_OUTFILE" -rc=$? -echo -echo $line -date -echo rc=$rc + echo +fi -exit $rc +makeRequest GET "/packages/$IMLCI_PHASE/$IMLCI_PROJECT/$IMLCI_FILE" "$IMLCI_OUTFILE" "$IMLCI_PKG_SECRET"