Skip to content
Snippets Groups Projects
deploy-site-env.sh 1.90 KiB
#!/usr/bin/env bash
LIGHT_GREEN='\x1B[92m';
NC='\x1B[39m';

if [[ -z $1 ]]; then
  echo;
  echo "Usage: $0 <site.env>";
  echo;
  echo;
fi

if [[ -z `which gdate` ]]; then
  echo "'coreutils' homebrew package not installed...";
  if [[ -z `which brew` ]]; then
    echo "Homebrew is NOT installed. Homebrew needs to be installed to proceed.";
    echo "Visit https://https://brew.sh/ for more information.";
    exit 1;
  else
    echo "Attempting to install 'coreutils'...";
    brew install coreutils;
  fi
fi

SITE_NAME=${1%.*};
ENV=${1##*.};
shift;

echo;
echo -e "${LIGHT_GREEN}==================================================================================${NC}";
printf "${LIGHT_GREEN}== %-30s ================================================${NC}\n" $SITE_NAME
echo -e "${LIGHT_GREEN}==================================================================================${NC}";
echo "SITE_NAME[$SITE_NAME]  ENV[$ENV]";
echo;

echo "Checking backup... ";

BACKUP_DATE=`terminus backup:info --field=date --format=string $SITE_NAME.$ENV`;
BACKUP_DATE=${BACKUP_DATE%.*};
echo "BACKUP_DATE: `gdate -d @$BACKUP_DATE`";

NOW=`gdate +%s -u`;
BACKUP_AGE=`expr $NOW - $BACKUP_DATE`;

if [[ $BACKUP_AGE -gt 3600 ]]; then
  echo "Backup is stale ($BACKUP_AGE seconds ago)...";
  echo "terminus backup:create $SITE_NAME.$ENV --keep-for=30 --element=db";
  terminus backup:create $SITE_NAME.$ENV --keep-for=30 --element=db;
else
  echo "Backup is less than an hour old.. skipping new backup.";
fi
echo;

if [[ $ENV == 'dev' ]]; then
  terminus site:upstream:clear-cache $SITE_NAME;
  terminus upstream:updates:list $SITE_NAME.$ENV;
  terminus upstream:updates:apply $SITE_NAME.$ENV --updatedb;
else
  if [[ -z $1 ]]; then
    while [[ -z $DEPLOY_MSG ]]; do
      echo;
      read -p "Enter deployment message: " DEPLOY_MSG;
      echo;
    done
  else
    DEPLOY_MSG=$@;
  fi
  terminus env:deploy $SITE_NAME.$ENV --updatedb --cc --note="$DEPLOY_MSG";
fi