Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
meltmedia/meltconsole / melt-pull-db.sh
Size: Mime:
#!/bin/bash

# Parse arguments with `=`
# https://stackoverflow.com/questions/192249/how-do-i-parse-command-line-arguments-in-bash
for i in "$@"
do
    case $i in
        --env=*)
        ENVIRONMENT="${i#*=}"
        shift # past argument=value
        ;;
        *)
            # unknown option
        ;;
    esac
done

# Exit if no environment was detected
if [ -z "${ENVIRONMENT}" ]; then
    echo "Value for --env missing."
    exit 1
fi


# Final prompt to ensure user is chose the right environment and branch
PROMPT="Are you sure you want create a backup on ${ENVIRONMENT}? (n/Y)"
while true; do
    read -p "$PROMPT" yn
    case $yn in
        [Yy]* ) break;;
        [Nn]* ) exit;;
        * ) break;; # defaults to yes
    esac
done

# Create timestamp for our backup file
DATE=$(date +"%Y%m%d%H%M")
BACKUP_NAME="${ENVIRONMENT}-backup-${DATE}.sql"

# Create a backup of the database inside of a `backups/` directory
echo "Backing up database on ${ENVIRONMENT}..."
drush @melt.${ENVIRONMENT} ssh "mkdir -p backups && lando db-export backups/${ENVIRONMENT}-backup-${DATE}.sql"

echo "Pulling database to local.."
drush rsync @melt.${ENVIRONMENT}:backups/${BACKUP_NAME}.gz @self:../${BACKUP_NAME}.gz -y

# Prompt user if they would
PROMPT="Would you like to automatically import the backup? (N/y)"
while true; do
    read -p "$PROMPT" yn
    case $yn in
        [Yy]* ) break;;
        [Nn]* ) exit;;
        * ) exit;; # defaults to yes
    esac
done

echo "Importing database..."
gzip -d ${BACKUP_NAME}.gz
drush sql-drop -y && drush sql-cli < ${BACKUP_NAME} && rm ${BACKUP_NAME}

echo "Import Complete!"