From adcec77ced36b1c2372ad407e1f62cf6ba4a25b9 Mon Sep 17 00:00:00 2001 From: Petr Ruzicka Date: Tue, 10 Dec 2019 06:03:30 +0100 Subject: [PATCH] upload_all_boxes_to_vagrantup.sh and upload_box_to_vagrantup.sh rewritten to pass shellcheck --- upload_all_boxes_to_vagrantup.sh | 4 +- upload_box_to_vagrantup.sh | 115 +++++++++++++++++++------------ 2 files changed, 72 insertions(+), 47 deletions(-) diff --git a/upload_all_boxes_to_vagrantup.sh b/upload_all_boxes_to_vagrantup.sh index 8134e49e..31cc75e6 100755 --- a/upload_all_boxes_to_vagrantup.sh +++ b/upload_all_boxes_to_vagrantup.sh @@ -5,12 +5,12 @@ set -o pipefail VAGRANT_CLOUD_USER=${VAGRANT_CLOUD_USER:-peru} TMPDIR="/tmp" LOGFILE="$TMPDIR/vagrant_init_destroy_boxes.log" -export BOX_VERSION=${BOX_VERSION:-`date +%Y%m%d`.01} +export BOX_VERSION=${BOX_VERSION:-$(date +%Y%m%d).01} ( for BOX in *.box; do echo "*** $BOX" - ./upload_box_to_vagrantup.sh ${VAGRANT_CLOUD_USER}@${BOX} + ./upload_box_to_vagrantup.sh "${VAGRANT_CLOUD_USER}@${BOX}" done ) 2>&1 | tee $LOGFILE diff --git a/upload_box_to_vagrantup.sh b/upload_box_to_vagrantup.sh index 09a70b03..40b3209c 100755 --- a/upload_box_to_vagrantup.sh +++ b/upload_box_to_vagrantup.sh @@ -2,11 +2,11 @@ set -o pipefail -export BOX_VERSION=${BOX_VERSION:-`date +%Y%m%d`.01} +export BOX_VERSION=${BOX_VERSION:-$(date +%Y%m%d).01} export LOGDIR=${LOGDIR:-/var/tmp} -readonly PROGNAME=$(basename $0) -readonly ARGS="$@" +readonly PROGNAME=$(basename "$0") +readonly ARGS=$* usage() { @@ -51,7 +51,7 @@ EOF } cmdline() { - local VAGRANT_CLOUD_USER_BOXES=$@ + local VAGRANT_CLOUD_USER_BOXES=$* if [ -z "$VAGRANT_CLOUD_USER_BOXES" ] || [ -z "$VAGRANTUP_ACCESS_TOKEN" ]; then usage @@ -61,11 +61,12 @@ cmdline() { for VAGRANT_CLOUD_USER_BOX in $VAGRANT_CLOUD_USER_BOXES; do export VAGRANT_CLOUD_USER="${VAGRANT_CLOUD_USER_BOX%@*}" VAGRANT_CLOUD_BOX_FILE="${VAGRANT_CLOUD_USER_BOX##*@}" - VAGRANT_CLOUD_BOX_NAME=`basename $VAGRANT_CLOUD_BOX_FILE .box` - MY_NAME=`echo $VAGRANT_CLOUD_BOX_NAME | awk -F '-' '{ print $1 }'` - export VAGRANT_PROVIDER=`echo $VAGRANT_CLOUD_BOX_NAME | awk -F '-' '{ print $NF }'` + VAGRANT_CLOUD_BOX_NAME=$(basename "$VAGRANT_CLOUD_BOX_FILE" .box) + MY_NAME=$(echo "$VAGRANT_CLOUD_BOX_NAME" | awk -F '-' '{ print $1 }') + VAGRANT_PROVIDER=$(echo "$VAGRANT_CLOUD_BOX_NAME" | awk -F '-' '{ print $NF }') + export VAGRANT_PROVIDER - if [ ! -f $VAGRANT_CLOUD_BOX_FILE ]; then + if [ ! -f "$VAGRANT_CLOUD_BOX_FILE" ]; then echo -e "*** ERROR: \"$VAGRANT_CLOUD_BOX_FILE\" does not exist!\n" exit 1 fi @@ -74,60 +75,84 @@ cmdline() { case $VAGRANT_CLOUD_BOX_NAME in *centos*) - export CENTOS_VERSION=`echo $VAGRANT_CLOUD_BOX_NAME | awk -F '-' '{ print $2 }'` - export CENTOS_TAG=`curl -s ftp://ftp.cvut.cz/centos/$CENTOS_VERSION/isos/x86_64/sha256sum.txt | sed -n 's/.*-\(..\)\(..\)\.iso/\1\2/p' | head -1` - export CENTOS_ARCH=`echo $VAGRANT_CLOUD_BOX_NAME | awk -F '-' '{ print $3 }'` + CENTOS_VERSION=$(echo "$VAGRANT_CLOUD_BOX_NAME" | awk -F '-' '{ print $2 }') + export CENTOS_VERSION + CENTOS_TAG=$(curl -s "ftp://ftp.cvut.cz/centos/$CENTOS_VERSION/isos/x86_64/sha256sum.txt" | sed -n 's/.*-\(..\)\(..\)\.iso/\1\2/p' | head -1) + export CENTOS_TAG + CENTOS_ARCH=$(echo "$VAGRANT_CLOUD_BOX_NAME" | awk -F '-' '{ print $3 }') + export CENTOS_ARCH export CENTOS_TYPE="NetInstall" export NAME="${MY_NAME}-${CENTOS_VERSION}-${CENTOS_ARCH}" export SHORT_DESCRIPTION="My CentOS ${CENTOS_VERSION} ${CENTOS_ARCH} for libvirt and virtualbox" - export LONG_DESCRIPTION=$(envsubst < templates/my_centos.md) + LONG_DESCRIPTION=$(envsubst < templates/my_centos.md) + export LONG_DESCRIPTION ;; *ubuntu*) - export UBUNTU_TYPE=`echo $VAGRANT_CLOUD_BOX_NAME | awk -F '-' '{ print $3 }'` + UBUNTU_TYPE=$(echo "$VAGRANT_CLOUD_BOX_NAME" | awk -F '-' '{ print $3 }') + export UBUNTU_TYPE export UBUNTU_TYPE_UC=${UBUNTU_TYPE^} - export UBUNTU_MAJOR_VERSION=`echo $VAGRANT_CLOUD_BOX_NAME | awk -F '-' '{ print $2 }'` - export UBUNTU_ARCH=`echo $VAGRANT_CLOUD_BOX_NAME | awk -F '-' '{ print $4 }'` - export UBUNTU_VERSION=`curl -s http://releases.ubuntu.com/${UBUNTU_MAJOR_VERSION}/SHA1SUMS | sed -n "s/.*ubuntu-\([^-]*\)-.*-${UBUNTU_ARCH}.iso/\1/p" | head -1` + UBUNTU_MAJOR_VERSION=$(echo "$VAGRANT_CLOUD_BOX_NAME" | awk -F '-' '{ print $2 }') + export UBUNTU_MAJOR_VERSION + UBUNTU_ARCH=$(echo "$VAGRANT_CLOUD_BOX_NAME" | awk -F '-' '{ print $4 }') + export UBUNTU_ARCH + UBUNTU_VERSION=$(curl -s "http://releases.ubuntu.com/${UBUNTU_MAJOR_VERSION}/SHA1SUMS" | sed -n "s/.*ubuntu-\([^-]*\)-.*-${UBUNTU_ARCH}.iso/\1/p" | head -1) + export UBUNTU_VERSION export NAME="${MY_NAME}-${UBUNTU_MAJOR_VERSION}-${UBUNTU_TYPE}-${UBUNTU_ARCH}" export SHORT_DESCRIPTION="Ubuntu ${UBUNTU_MAJOR_VERSION} ${UBUNTU_TYPE} (${UBUNTU_ARCH}) for libvirt and virtualbox" - export LONG_DESCRIPTION=$(envsubst < templates/${MY_NAME}.md) + LONG_DESCRIPTION=$(envsubst < "templates/${MY_NAME}.md") + export LONG_DESCRIPTION ;; *windows-10*) - export WINDOWS_VERSION=`echo $VAGRANT_CLOUD_BOX_NAME | awk -F '-' '{ print $2 }'` - export WINDOWS_ARCH=`echo $VAGRANT_CLOUD_BOX_NAME | awk -F '-' '{ print $4 }'` - export WINDOWS_EDITION=`echo $VAGRANT_CLOUD_BOX_NAME | awk -F '-' '{ print $3 }'` + WINDOWS_VERSION=$(echo "$VAGRANT_CLOUD_BOX_NAME" | awk -F '-' '{ print $2 }') + export WINDOWS_VERSION + WINDOWS_ARCH=$(echo "$VAGRANT_CLOUD_BOX_NAME" | awk -F '-' '{ print $4 }') + export WINDOWS_ARCH + WINDOWS_EDITION=$(echo "$VAGRANT_CLOUD_BOX_NAME" | awk -F '-' '{ print $3 }') + export WINDOWS_EDITION export WINDOWS_EDITION_UC=${WINDOWS_EDITION^} export NAME="${MY_NAME}-${WINDOWS_VERSION}-${WINDOWS_EDITION}-${WINDOWS_ARCH}-eval" export SHORT_DESCRIPTION="Windows $WINDOWS_VERSION ${WINDOWS_EDITION_UC} ($WINDOWS_ARCH) Evaluation for libvirt and virtualbox" - export LONG_DESCRIPTION=$(envsubst < templates/${MY_NAME}-${WINDOWS_VERSION}-${WINDOWS_EDITION}-eval.md) + LONG_DESCRIPTION=$(envsubst < "templates/${MY_NAME}-${WINDOWS_VERSION}-${WINDOWS_EDITION}-eval.md") + export LONG_DESCRIPTION ;; *windows-*-2012*) - export WINDOWS_VERSION=`echo $VAGRANT_CLOUD_BOX_NAME | awk -F '[-_]' '{ print $3 }'` - export WINDOWS_RELEASE=`echo $VAGRANT_CLOUD_BOX_NAME | awk -F '[-_]' '{ print $4 }'` + WINDOWS_VERSION=$(echo "$VAGRANT_CLOUD_BOX_NAME" | awk -F '[-_]' '{ print $3 }') + export WINDOWS_VERSION + WINDOWS_RELEASE=$(echo "$VAGRANT_CLOUD_BOX_NAME" | awk -F '[-_]' '{ print $4 }') + export WINDOWS_RELEASE export WINDOWS_RELEASE_UC=${WINDOWS_RELEASE^} - export WINDOWS_ARCH=`echo $VAGRANT_CLOUD_BOX_NAME | awk -F '-' '{ print $5 }'` - export WINDOWS_TYPE=`echo $VAGRANT_CLOUD_BOX_NAME | awk -F '-' '{ print $2 }'` + WINDOWS_ARCH=$(echo "$VAGRANT_CLOUD_BOX_NAME" | awk -F '-' '{ print $5 }') + export WINDOWS_ARCH + WINDOWS_TYPE=$(echo "$VAGRANT_CLOUD_BOX_NAME" | awk -F '-' '{ print $2 }') + export WINDOWS_TYPE export WINDOWS_TYPE_UC=${WINDOWS_TYPE^} - export WINDOWS_EDITION=`echo $VAGRANT_CLOUD_BOX_NAME | awk -F '-' '{ print $4 }'` + WINDOWS_EDITION=$(echo "$VAGRANT_CLOUD_BOX_NAME" | awk -F '-' '{ print $4 }') + export WINDOWS_EDITION export WINDOWS_EDITION_UC=${WINDOWS_EDITION^} export NAME="${MY_NAME}-${WINDOWS_TYPE}-${WINDOWS_VERSION}_${WINDOWS_RELEASE}-${WINDOWS_EDITION}-${WINDOWS_ARCH}-eval" export SHORT_DESCRIPTION="Windows ${WINDOWS_TYPE_UC} $WINDOWS_VERSION ${WINDOWS_RELEASE_UC} ${WINDOWS_EDITION_UC} ($WINDOWS_ARCH) Evaluation for libvirt and virtualbox" - export LONG_DESCRIPTION=$(envsubst < templates/${MY_NAME}-${WINDOWS_TYPE}-${WINDOWS_VERSION}-eval.md) + LONG_DESCRIPTION=$(envsubst < "templates/${MY_NAME}-${WINDOWS_TYPE}-${WINDOWS_VERSION}-eval.md") + export LONG_DESCRIPTION ;; *windows-*-201[69]*) - export WINDOWS_VERSION=`echo $VAGRANT_CLOUD_BOX_NAME | awk -F '-' '{ print $3 }'` - export WINDOWS_ARCH=`echo $VAGRANT_CLOUD_BOX_NAME | awk -F '-' '{ print $5 }'` - export WINDOWS_TYPE=`echo $VAGRANT_CLOUD_BOX_NAME | awk -F '-' '{ print $2 }'` + WINDOWS_VERSION=$(echo "$VAGRANT_CLOUD_BOX_NAME" | awk -F '-' '{ print $3 }') + export WINDOWS_VERSION + WINDOWS_ARCH=$(echo "$VAGRANT_CLOUD_BOX_NAME" | awk -F '-' '{ print $5 }') + export WINDOWS_ARCH + WINDOWS_TYPE=$(echo "$VAGRANT_CLOUD_BOX_NAME" | awk -F '-' '{ print $2 }') + export WINDOWS_TYPE export WINDOWS_TYPE_UC=${WINDOWS_TYPE^} - export WINDOWS_EDITION=`echo $VAGRANT_CLOUD_BOX_NAME | awk -F '-' '{ print $4 }'` + WINDOWS_EDITION=$(echo "$VAGRANT_CLOUD_BOX_NAME" | awk -F '-' '{ print $4 }') + export WINDOWS_EDITION export WINDOWS_EDITION_UC=${WINDOWS_EDITION^} export NAME="${MY_NAME}-${WINDOWS_TYPE}-${WINDOWS_VERSION}-${WINDOWS_EDITION}-${WINDOWS_ARCH}-eval" export SHORT_DESCRIPTION="Windows ${WINDOWS_TYPE_UC} $WINDOWS_VERSION ${WINDOWS_EDITION_UC} ($WINDOWS_ARCH) Evaluation for libvirt and virtualbox" - export LONG_DESCRIPTION=$(envsubst < templates/${MY_NAME}-${WINDOWS_TYPE}-${WINDOWS_VERSION}-eval.md) + LONG_DESCRIPTION=$(envsubst < "templates/${MY_NAME}-${WINDOWS_TYPE}-${WINDOWS_VERSION}-eval.md") + export LONG_DESCRIPTION ;; esac - vagrantup_upload $VAGRANT_CLOUD_BOX_FILE | tee $LOGDIR/${VAGRANT_CLOUD_BOX_NAME}-upload.log + vagrantup_upload "$VAGRANT_CLOUD_BOX_FILE" | tee "$LOGDIR/${VAGRANT_CLOUD_BOX_NAME}-upload.log" done } @@ -137,25 +162,25 @@ create_vagrantup_box() { else #Create box, because it doesn't exists echo "*** Creating box: ${NAME}, Short Description: $SHORT_DESCRIPTION" - curl -s https://app.vagrantup.com/api/v1/boxes -X POST -d box[name]="$NAME" -d box[short_description]="${SHORT_DESCRIPTION}" -d box[is_private]=false -d access_token="$VAGRANTUP_ACCESS_TOKEN" -o /dev/null + curl -s https://app.vagrantup.com/api/v1/boxes -X POST -d "box[name]=$NAME" -d "box[short_description]=${SHORT_DESCRIPTION}" -d "box[is_private]=false" -d "access_token=$VAGRANTUP_ACCESS_TOKEN" -o /dev/null fi } upload_boxfile_to_vagrantup() { #Get the current version before uploading anything echo "*** Getting current version of the box (if exists)" - local CURRENT_VERSION=$(curl -s https://app.vagrantup.com/api/v1/box/$VAGRANT_CLOUD_USER/$NAME | jq -r ".current_version.version") + CURRENT_VERSION=$(curl -s "https://app.vagrantup.com/api/v1/box/$VAGRANT_CLOUD_USER/$NAME" | jq -r ".current_version.version") echo "*** Current version of the box: $CURRENT_VERSION" - curl -sS https://app.vagrantup.com/api/v1/box/$VAGRANT_CLOUD_USER/$NAME/versions -X POST -d version[version]="$BOX_VERSION" -d access_token="$VAGRANTUP_ACCESS_TOKEN" -o /dev/null - curl -sS https://app.vagrantup.com/api/v1/box/$VAGRANT_CLOUD_USER/$NAME/version/$BOX_VERSION -X PUT -d version[description]="$LONG_DESCRIPTION" -d access_token="$VAGRANTUP_ACCESS_TOKEN" -o /dev/null - curl -sS https://app.vagrantup.com/api/v1/box/$VAGRANT_CLOUD_USER/$NAME/version/$BOX_VERSION/providers -X POST -d provider[name]="$VAGRANT_PROVIDER" -d access_token="$VAGRANTUP_ACCESS_TOKEN" -o /dev/null - local UPLOAD_PATH=$(curl -sS https://app.vagrantup.com/api/v1/box/$VAGRANT_CLOUD_USER/$NAME/version/$BOX_VERSION/provider/$VAGRANT_PROVIDER/upload?access_token=$VAGRANTUP_ACCESS_TOKEN | jq -r '.upload_path') + curl -sS "https://app.vagrantup.com/api/v1/box/$VAGRANT_CLOUD_USER/$NAME/versions" -X POST -d "version[version]=$BOX_VERSION" -d "access_token=$VAGRANTUP_ACCESS_TOKEN" -o /dev/null + curl -sS "https://app.vagrantup.com/api/v1/box/$VAGRANT_CLOUD_USER/$NAME/version/$BOX_VERSION" -X PUT -d "version[description]=$LONG_DESCRIPTION" -d "access_token=$VAGRANTUP_ACCESS_TOKEN" -o /dev/null + curl -sS "https://app.vagrantup.com/api/v1/box/$VAGRANT_CLOUD_USER/$NAME/version/$BOX_VERSION/providers" -X POST -d "provider[name]=$VAGRANT_PROVIDER" -d "access_token=$VAGRANTUP_ACCESS_TOKEN" -o /dev/null + UPLOAD_PATH=$(curl -sS "https://app.vagrantup.com/api/v1/box/$VAGRANT_CLOUD_USER/$NAME/version/$BOX_VERSION/provider/$VAGRANT_PROVIDER/upload?access_token=$VAGRANTUP_ACCESS_TOKEN" | jq -r '.upload_path') echo "*** Uploading \"${VAGRANT_CLOUD_BOX_FILE}\" to \"https://app.vagrantup.com/api/v1/box/$VAGRANT_CLOUD_USER/$NAME\" as version [$BOX_VERSION]" - curl -s -X PUT --upload-file ${VAGRANT_CLOUD_BOX_FILE} $UPLOAD_PATH + curl -s -X PUT --upload-file "${VAGRANT_CLOUD_BOX_FILE}" "$UPLOAD_PATH" - if ! curl -s --output /dev/null https://app.vagrantup.com/api/v1/box/$VAGRANT_CLOUD_USER/$NAME/version/$BOX_VERSION/release -X PUT -d access_token="$VAGRANTUP_ACCESS_TOKEN"; then + if ! curl -s --output /dev/null "https://app.vagrantup.com/api/v1/box/$VAGRANT_CLOUD_USER/$NAME/version/$BOX_VERSION/release" -X PUT -d "access_token=$VAGRANTUP_ACCESS_TOKEN"; then echo -e "\nUpload failed !\nOne more try..." - curl -s --output /dev/null https://app.vagrantup.com/api/v1/box/$VAGRANT_CLOUD_USER/$NAME/version/$BOX_VERSION/release -X PUT -d access_token="$VAGRANTUP_ACCESS_TOKEN" + curl -s --output /dev/null "https://app.vagrantup.com/api/v1/box/$VAGRANT_CLOUD_USER/$NAME/version/$BOX_VERSION/release" -X PUT -d "access_token=$VAGRANTUP_ACCESS_TOKEN" fi # Check if uploaded file really exists @@ -166,10 +191,10 @@ upload_boxfile_to_vagrantup() { exit 1 fi # Check if previous version really exists and then remove it (always keep just one - latest version - recently uploaded) - CURRENT_VERSION_STATUS=$(curl -s https://app.vagrantup.com/api/v1/box/$VAGRANT_CLOUD_USER/$NAME/version/$CURRENT_VERSION | jq -r '.status') + CURRENT_VERSION_STATUS=$(curl -s "https://app.vagrantup.com/api/v1/box/$VAGRANT_CLOUD_USER/$NAME/version/$CURRENT_VERSION" | jq -r '.status') if [ "$CURRENT_VERSION" != "null" ] && [ "$CURRENT_VERSION" != "$BOX_VERSION" ] && [ "$CURRENT_VERSION_STATUS" = "active" ]; then echo "*** Removing previous version: https://vagrantcloud.com/api/v1/box/$VAGRANT_CLOUD_USER/$NAME/version/$CURRENT_VERSION" - curl -s https://app.vagrantup.com/api/v1/box/$VAGRANT_CLOUD_USER/$NAME/version/$CURRENT_VERSION -X DELETE -d access_token="$VAGRANTUP_ACCESS_TOKEN" -o /dev/null + curl -s "https://app.vagrantup.com/api/v1/box/$VAGRANT_CLOUD_USER/$NAME/version/$CURRENT_VERSION" -X DELETE -d "access_token=$VAGRANTUP_ACCESS_TOKEN" -o /dev/null fi echo "*** Done" } @@ -188,7 +213,7 @@ vagrantup_upload() { ####### main() { - cmdline $ARGS + cmdline "$ARGS" } main