#!/usr/bin/env bash
[[ -n $DEBUG ]] && set -x

set -eou pipefail

usage() {
  cat <<"EOF"
USAGE:
  nodegroup.sh --action freeze --env dev                 : freeze in the currently using VM image
  nodegroup.sh --action upgrade --env dev                : upgrade to the latest VM image
  nodegroup.sh -h                                        : print the usage message
EOF
}

main() {
  while [[ $# -gt 0 ]]
  do
      key="$1"
      case "$key" in
          --env)
              env="$2"
              shift
              shift
              ;;
          --action)
              action="${2}"
              shift
              shift
              ;;
          -h|--help)
              usage
              exit 0
              ;;
          *)
              usage
              exit 1
              ;;
      esac
  done
  if [[ ${action} == "freeze" ]]; then
    param="currentAMI"
  elif [[ ${action} == "upgrade" ]]; then
    param="latestAMI"
  else
    usage
    exit 1
  fi

  ROOT=$(cd $(dirname ${BASH_SOURCE[0]}) && pwd)
  cd $ROOT

  stacks=$(ls -1 Pulumi.${env}*)
  for stack in ${stacks}; do
    stack=${stack#Pulumi.}
    stack=${stack%.yaml}
    pulumi --stack=${stack} config set image-id $(pulumi stack --stack=${stack} output $param)
  done
}

main "$@"
