2019-01-12 23:23:55 +00:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
# Make sure the current directory is the location of this script to simplify matters
|
|
|
|
cd "$(dirname $(readlink -f $0))";
|
|
|
|
################
|
|
|
|
### Settings ###
|
|
|
|
################
|
|
|
|
|
|
|
|
# The name of this project
|
|
|
|
project_name="Air Quality Mapper";
|
|
|
|
|
|
|
|
# The path to the lantern build engine git submodule
|
|
|
|
lantern_path="./lantern-build-engine";
|
|
|
|
|
|
|
|
###
|
|
|
|
# Custom Settings
|
|
|
|
###
|
|
|
|
|
|
|
|
# Put any custom settings here.
|
|
|
|
build_output_folder="./dist";
|
|
|
|
|
|
|
|
###############################################################################
|
|
|
|
|
|
|
|
# Check out the lantern git submodule if needed
|
2019-01-13 12:50:47 +00:00
|
|
|
if [ ! -f "${lantern_path}/lantern.sh" ]; then git submodule update --init "${lantern_path}"; fi
|
2019-01-12 23:23:55 +00:00
|
|
|
|
|
|
|
source "${lantern_path}/lantern.sh";
|
|
|
|
|
|
|
|
if [[ "$#" -lt 1 ]]; then
|
|
|
|
echo -e "${FBLE}${project_name}${RS} build script";
|
|
|
|
echo -e " by Starbeamrainbowlabs";
|
|
|
|
echo -e "${LC}Powered by the lantern build engine, v${version}${RS}";
|
|
|
|
echo -e "";
|
|
|
|
echo -e "${CSECTION}Usage${RS}";
|
|
|
|
echo -e " ./build ${CTOKEN}{action}${RS} ${CTOKEN}{action}${RS} ${CTOKEN}{action}${RS} ...";
|
|
|
|
echo -e "";
|
|
|
|
echo -e "${CSECTION}Available actions${RS}";
|
|
|
|
echo -e " ${CACTION}setup${RS} - Perform initial setup";
|
2019-01-12 23:38:05 +00:00
|
|
|
echo -e " ${CACTION}setup-dev${RS} - Perform additional setup for development environments. Run after ${CACTION}setup${RS}.";
|
2019-01-12 23:23:55 +00:00
|
|
|
echo -e " ${CACTION}database${RS} - Connect to the database via SSH & open MariaDB CLI connection, prompting for a password";
|
|
|
|
echo -e " ${CACTION}dev-server${RS} - Start a development server";
|
|
|
|
echo -e " ${CACTION}dev-server-stop${RS} - Stop the currently running development server";
|
2019-01-13 13:15:11 +00:00
|
|
|
echo -e " ${CACTION}client${RS} - Build the client web app";
|
|
|
|
echo -e " ${CACTION}client-watch${RS} - Watch for changes to the client code & rebuild automatically";
|
2019-01-12 23:23:55 +00:00
|
|
|
echo -e "";
|
|
|
|
|
|
|
|
exit 1;
|
|
|
|
fi
|
|
|
|
|
|
|
|
###############################################################################
|
|
|
|
|
|
|
|
function task_setup {
|
|
|
|
stage_begin "Setting up";
|
|
|
|
|
|
|
|
task_begin "Checking environment";
|
|
|
|
check_command git true;
|
|
|
|
check_command php true;
|
|
|
|
check_command node true;
|
|
|
|
check_command composer true;
|
|
|
|
check_command npm true;
|
|
|
|
task_end $?;
|
|
|
|
|
|
|
|
task_begin "Initialising submodules";
|
|
|
|
git submodule update --init;
|
|
|
|
task_end $?;
|
|
|
|
|
|
|
|
task_begin "Installing client dependencies";
|
|
|
|
echo "${HC}Not including developement dependencies. To complete setup for development, execute the ${CACTION}setup-dev${RS} ${HC}build task.${RS}";
|
|
|
|
npm install --production;
|
|
|
|
task_end $?;
|
|
|
|
|
|
|
|
task_begin "Installing server dependencies";
|
|
|
|
composer install --no-dev;
|
|
|
|
task_end $?;
|
|
|
|
|
|
|
|
stage_end $?;
|
|
|
|
}
|
|
|
|
|
|
|
|
function task_setup-dev {
|
|
|
|
task_begin "Checking environment";
|
|
|
|
check_command mysql true optional;
|
|
|
|
task_end $?;
|
|
|
|
|
|
|
|
task_begin "Installing client development dependencies";
|
|
|
|
npm install;
|
|
|
|
task_end $?;
|
|
|
|
|
|
|
|
task_begin "Installing server development dependencies";
|
2019-01-13 12:50:47 +00:00
|
|
|
composer install;
|
|
|
|
task_end $?;
|
|
|
|
}
|
|
|
|
|
|
|
|
function task_database {
|
|
|
|
task_begin "Connecting to the database";
|
|
|
|
|
|
|
|
ssh -TN db.connectedhumber.org -L 3306:localhost:3306 &
|
|
|
|
ssh_pid=$!;
|
|
|
|
mysql --host localhost --port 3306 -u "${USER}" -p;
|
|
|
|
|
|
|
|
kill $!; wait; sleep 0.5;
|
2019-01-12 23:23:55 +00:00
|
|
|
task_end $?;
|
|
|
|
}
|
|
|
|
|
|
|
|
function task_dev-server {
|
|
|
|
task_begin "Starting development server";
|
|
|
|
php -S [::1]:40482 -t "${build_output_folder}" &
|
|
|
|
exit_code=$?;
|
|
|
|
echo $! >/tmp/micro-lantern-dev-server.pid;
|
|
|
|
task_end $?; # Should be 0 unless php died for some reason
|
|
|
|
sleep 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
function task_dev-server-stop {
|
|
|
|
task_begin "Stopping development server";
|
|
|
|
|
|
|
|
kill "$(cat /tmp/micro-lantern-dev-server.pid)";
|
|
|
|
rm /tmp/micro-lantern-dev-server.pid;
|
|
|
|
|
|
|
|
task_end $?;
|
|
|
|
}
|
|
|
|
|
2019-01-13 13:15:11 +00:00
|
|
|
|
|
|
|
function task_client {
|
|
|
|
task_begin "Packaging Javascript";
|
|
|
|
node_modules/rollup/bin/rollup --sourcemap --config rollup.config.js;
|
|
|
|
exit_code=$?;
|
|
|
|
task_end ${exit_code};
|
|
|
|
if [[ "${exit_code}" -ne 0 ]]; then
|
|
|
|
exit ${exit_code};
|
|
|
|
fi
|
2019-01-12 23:23:55 +00:00
|
|
|
|
|
|
|
task_begin "Copying html";
|
|
|
|
cp index.html "${build_output_folder}";
|
|
|
|
task_end $?;
|
|
|
|
|
|
|
|
task_begin "Copying css";
|
|
|
|
cp theme.css "${build_output_folder}";
|
|
|
|
task_end $?;
|
|
|
|
}
|
|
|
|
|
2019-01-13 13:15:11 +00:00
|
|
|
function task_client-watch {
|
|
|
|
echo -e "Watching for changes.";
|
|
|
|
while inotifywait -qr --event modify --format '%:e %f' client_src; do
|
|
|
|
stage_begin "Rebuilding client code";
|
|
|
|
task_client;
|
|
|
|
stage_end $?;
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|
2019-01-12 23:23:55 +00:00
|
|
|
#########################################################################
|
|
|
|
|
|
|
|
tasks_run $@;
|