#!/usr/bin/env bash # --------------------------------------------------------------------------- # This script uploads the latest application release for all supported # platforms. # --------------------------------------------------------------------------- readonly RELEASE=$(git describe --abbrev=0 --tags) readonly APP_NAME=$(cut -d= -f2 ./src/main/resources/bootstrap.properties) readonly APP_NAME_LC=${APP_NAME,,} readonly URL=$(cat "tokens/publish.url") readonly FILE_VERSION="version.txt" # --------------------------------------------------------------------------- # Adds download URLs to a release. # # $1 - The system (Linux, Windows, MacOS, Java) # --------------------------------------------------------------------------- release() { local -r OS="${1}" local FILE_PREFIX="${APP_NAME_LC}" local FILE_SUFFIX="bin" case ${OS} in MacOS) FILE_SUFFIX="app" ;; Windows) FILE_PREFIX="${APP_NAME}" FILE_SUFFIX="exe" ;; Java) FILE_SUFFIX="jar" ;; *) # Linux, others ;; esac local -r BINARY="${FILE_PREFIX}.${FILE_SUFFIX}" upload "${BINARY}" } # --------------------------------------------------------------------------- # Uploads a file to the remote host. # # $1 - The relative path to the file to upload. # --------------------------------------------------------------------------- upload() { local -r FILENAME="${1}" if [ -f "${FILENAME}" ]; then scp "${FILENAME}" "${URL}" else $log "Skipping ${FILENAME} ..." fi } #release "Windows" release "MacOS" release "Linux" release "Java" echo "${RELEASE}" > "${FILE_VERSION}" upload "${FILE_VERSION}"