#!/usr/bin/env bash
set -xeo pipefail
if test -v PULUMI_CONFIG_PASSPHRASE || test -v PULUMI_CONFIG_PASSPHRASE_FILE; then
echo "PULUMI_CONFIG_PASSPHRASE is set, using a local login"
pulumi login --local
fi
# Using Pulumi SaaS
# We need to check for an existing stack with the name
# If it exists, refresh the config
# If it doesn't, create the stack
if test -v PULUMI_ACCESS_TOKEN; then
if (pulumi stack ls | grep -e "^${STACK_NAME}"); then
echo "Stack exists, let's refresh"
pulumi stack select "${PULUMI_STACK}"
# Could be first deployment, so let's not worry about this failing
pulumi config refresh --force || true
else
echo "Stack does not exist, let's create"
pulumi stack init "${PULUMI_STACK}"
# Not using Pulumi SaaS, relying on local stack files
if test -v PULUMI_STACK_CREATE && test ! -f "Pulumi.${PULUMI_STACK}.yaml"; then
case "$PULUMI_RUNTIME" in
nodejs)
npm install
;;
*)
echo -n "unknown"
esac
pulumi up --stack "${PULUMI_STACK}" --yes