#!/bin/bash

set +x

export ENVIRONMENT=${ENVIRONMENT}

declare -a arr=(\
'consumer_key' \
'consumer_secret' \
'refresh_token' \
)
for i in "${arr[@]}"
do
 declare $i=$(aws secretsmanager get-secret-value --secret-id "${ENVIRONMENT}/salesforce/sf.$i" --query SecretString --output text)
done


# Set url to login.salesforce.com only if deploying to production
if [ "${ENVIRONMENT}" = "production" ]; then
  LOGIN_URL='https://login.salesforce.com'
else
  LOGIN_URL='https://test.salesforce.com'
fi


CURL_RESPONSE=$(curl --location --request POST ${LOGIN_URL}/services/oauth2/token \
--data-urlencode 'grant_type=refresh_token' \
--data-urlencode client_id=${consumer_key} \
--data-urlencode refresh_token=${refresh_token} \
--data-urlencode client_secret=${consumer_secret})

ACCESS_TOKEN=$(echo "${CURL_RESPONSE}"| jq -r '.access_token')
INSTANCE_URL=$(echo "${CURL_RESPONSE}"| jq -r '.instance_url')

printf '%s\n' "INSTANCE_URL is ${INSTANCE_URL}"

cd sfdx-project
printf '%s\n' "${PWD##*/}"

# Set destination url
sfdx config:set instanceUrl=${INSTANCE_URL}

# Pass in access token and deploy from manifest
sfdx force:source:deploy --manifest manifest/package.xml --targetusername ${ACCESS_TOKEN} -l RunLocalTests
