github.com/letsencrypt/trillian@v1.1.2-0.20180615153820-ae375a99d36a/scripts/resetdb.sh (about)

     1  #!/bin/bash
     2  
     3  set -e
     4  
     5  usage() {
     6    echo "$0 [--force] [--verbose] ..."
     7    echo "accepts environment variables:"
     8    echo " - DB_NAME"
     9    echo " - DB_USER"
    10    echo " - DB_PASSWORD"
    11    echo " - DB_HOST"
    12    echo " - DB_PORT"
    13  }
    14  
    15  collect_vars() {
    16    # set unset environment variables to defaults
    17    [ -z ${DB_USER+x} ] && DB_USER="root"
    18    [ -z ${DB_NAME+x} ] && DB_NAME="test"
    19    [ -z ${DB_HOST+x} ] && DB_HOST="localhost"
    20    [ -z ${DB_PORT+x} ] && DB_PORT="3306"
    21    FLAGS=()
    22  
    23    # handle flags
    24    FORCE=false
    25    VERBOSE=false
    26    while [[ $# -gt 0 ]]; do
    27      case "$1" in
    28        --force) FORCE=true ;;
    29        --verbose) VERBOSE=true ;;
    30        *) FLAGS+=("$1")
    31      esac
    32      shift 1
    33    done
    34  
    35    FLAGS+=(-u "${DB_USER}")
    36    FLAGS+=(--host "${DB_HOST}")
    37    FLAGS+=(--port "${DB_PORT}")
    38  
    39    # Optionally print flags (before appending password)
    40    [[ ${VERBOSE} = 'true' ]] && echo "- Using MySQL Flags: ${FLAGS[@]}"
    41  
    42    # append password if supplied
    43    [ -z ${DB_PASSWORD+x} ] || FLAGS+=(-p"${DB_PASSWORD}")
    44  }
    45  
    46  main() {
    47    collect_vars "$@"
    48  
    49    readonly TRILLIAN_PATH=$(go list -f '{{.Dir}}' github.com/google/trillian)
    50  
    51    # what we're about to do
    52    echo "Warning: about to destroy and reset database '${DB_NAME}'"
    53  
    54    [[ ${FORCE} = true ]] || read -p "Are you sure? [Y/N]: " -n 1 -r
    55    echo # Print newline following the above prompt
    56  
    57    if [ -z ${REPLY+x} ] || [[ $REPLY =~ ^[Yy]$ ]]
    58    then
    59        echo "Resetting DB..."
    60        mysql "${FLAGS[@]}" -e "DROP DATABASE IF EXISTS ${DB_NAME};"
    61        mysql "${FLAGS[@]}" -e "CREATE DATABASE ${DB_NAME};"
    62        mysql "${FLAGS[@]}" -e "GRANT ALL ON ${DB_NAME}.* TO '${DB_NAME}' IDENTIFIED BY 'zaphod';"
    63        mysql "${FLAGS[@]}" -D ${DB_NAME} < ${TRILLIAN_PATH}/storage/mysql/storage.sql
    64        echo "Reset Complete"
    65    fi
    66  }
    67  
    68  main "$@"