Dave Jarvis' Repositories

#!/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}"