Created
September 5, 2015 07:24
-
-
Save bfintal/321080db75e562de7344 to your computer and use it in GitHub Desktop.
Test installer that works both in Travis CI & locally with VVV for newly scaffolded projects
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
if [ $# -lt 3 ]; then | |
echo "usage: $0 <db-name> <db-user> <db-pass> [db-host] [wp-version]" | |
exit 1 | |
fi | |
DB_NAME=$1 | |
DB_USER=$2 | |
DB_PASS=$3 | |
DB_HOST=${4-localhost} | |
WP_VERSION=${5-latest} | |
WP_TESTS_DIR=${WP_TESTS_DIR-/tmp/wordpress-tests-lib} | |
WP_CORE_DIR=${WP_CORE_DIR-/tmp/wordpress/} | |
set -ex | |
download() { | |
if [ `which curl` ]; then | |
curl -s "$1" > "$2"; | |
elif [ `which wget` ]; then | |
wget -nv -O "$2" "$1" | |
fi | |
} | |
install_wp() { | |
if [ -d $WP_CORE_DIR ]; then | |
return; | |
fi | |
mkdir -p $WP_CORE_DIR | |
if [ $WP_VERSION == 'latest' ]; then | |
local ARCHIVE_NAME='latest' | |
else | |
local ARCHIVE_NAME="wordpress-$WP_VERSION" | |
fi | |
# Original: Always download | |
# download https://wordpress.org/${ARCHIVE_NAME}.tar.gz /tmp/wordpress.tar.gz | |
# tar --strip-components=1 -zxmf /tmp/wordpress.tar.gz -C $WP_CORE_DIR | |
# Modified: Only do download if it hasn't been downloaded before | |
CURR_DIR=$(pwd) | |
cd /tmp | |
wget --timestamping -nv http://wordpress.org/${ARCHIVE_NAME}.tar.gz | |
cd ${CURR_DIR} | |
tar --strip-components=1 -zxmf /tmp/${ARCHIVE_NAME}.tar.gz -C $WP_CORE_DIR | |
# Original: Always download | |
# download https://raw.github.com/markoheijnen/wp-mysqli/master/db.php $WP_CORE_DIR/wp-content/db.php | |
# Modified: Only do download if it hasn't been downloaded before | |
CURR_DIR=$(pwd) | |
cd /tmp | |
wget --timestamping -nv https://raw.github.com/markoheijnen/wp-mysqli/master/db.php | |
cd ${CURR_DIR} | |
mv /tmp/db.php $WP_CORE_DIR/wp-content/db.php | |
} | |
install_test_suite() { | |
# portable in-place argument for both GNU sed and Mac OSX sed | |
if [[ $(uname -s) == 'Darwin' ]]; then | |
local ioption='-i .bak' | |
else | |
local ioption='-i' | |
fi | |
# set up testing suite if it doesn't yet exist | |
if [ ! -d $WP_TESTS_DIR ]; then | |
# set up testing suite | |
mkdir -p $WP_TESTS_DIR | |
svn co --quiet http://develop.svn.wordpress.org/trunk/tests/phpunit/includes/ $WP_TESTS_DIR/includes | |
fi | |
cd $WP_TESTS_DIR | |
if [ ! -f wp-tests-config.php ]; then | |
download https://develop.svn.wordpress.org/trunk/wp-tests-config-sample.php "$WP_TESTS_DIR"/wp-tests-config.php | |
sed $ioption "s:dirname( __FILE__ ) . '/src/':'$WP_CORE_DIR':" "$WP_TESTS_DIR"/wp-tests-config.php | |
sed $ioption "s/youremptytestdbnamehere/$DB_NAME/" "$WP_TESTS_DIR"/wp-tests-config.php | |
sed $ioption "s/yourusernamehere/$DB_USER/" "$WP_TESTS_DIR"/wp-tests-config.php | |
sed $ioption "s/yourpasswordhere/$DB_PASS/" "$WP_TESTS_DIR"/wp-tests-config.php | |
sed $ioption "s|localhost|${DB_HOST}|" "$WP_TESTS_DIR"/wp-tests-config.php | |
fi | |
} | |
install_db() { | |
# parse DB_HOST for port or socket references | |
local PARTS=(${DB_HOST//\:/ }) | |
local DB_HOSTNAME=${PARTS[0]}; | |
local DB_SOCK_OR_PORT=${PARTS[1]}; | |
local EXTRA="" | |
if ! [ -z $DB_HOSTNAME ] ; then | |
if [ $(echo $DB_SOCK_OR_PORT | grep -e '^[0-9]\{1,\}$') ]; then | |
EXTRA=" --host=$DB_HOSTNAME --port=$DB_SOCK_OR_PORT --protocol=tcp" | |
elif ! [ -z $DB_SOCK_OR_PORT ] ; then | |
EXTRA=" --socket=$DB_SOCK_OR_PORT" | |
elif ! [ -z $DB_HOSTNAME ] ; then | |
EXTRA=" --host=$DB_HOSTNAME --protocol=tcp" | |
fi | |
fi | |
# Modified: drop existing database | |
mysql -e "DROP DATABASE IF EXISTS ${DB_NAME};" --user="${DB_USER}" --password="${DB_PASS}"$EXTRA | |
# create database | |
mysqladmin create $DB_NAME --user="$DB_USER" --password="$DB_PASS"$EXTRA | |
} | |
install_wp | |
install_test_suite | |
install_db |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment