Skip to content

Commit

Permalink
upload_all_boxes_to_vagrantup.sh and upload_box_to_vagrantup.sh rewri…
Browse files Browse the repository at this point in the history
…tten to pass shellcheck
  • Loading branch information
ruzickap committed Dec 10, 2019
1 parent 4a584d0 commit adcec77
Show file tree
Hide file tree
Showing 2 changed files with 72 additions and 47 deletions.
4 changes: 2 additions & 2 deletions upload_all_boxes_to_vagrantup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
115 changes: 70 additions & 45 deletions upload_box_to_vagrantup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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() {
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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
}

Expand All @@ -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
Expand All @@ -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"
}
Expand All @@ -188,7 +213,7 @@ vagrantup_upload() {
#######

main() {
cmdline $ARGS
cmdline "$ARGS"
}

main

0 comments on commit adcec77

Please sign in to comment.