#!/usr/bin/env bash # Run this script to deploy the app to Github Pages # Parse cmd arguments SRC_BRANCH="master" DEPLOY_BRANCH="gh-pages" USAGE_MSG="usage: deploy [-h|--help] [-u|--user] [-s|--src SRC_BRANCH] [-d|--deploy DEPLOY_BRANCH]" while [[ $# > 0 ]]; do key="$1" case $key in -h|--help) echo $USAGE_MSG exit 0 ;; -u|--user) SRC_BRANCH="source" DEPLOY_BRANCH="master" shift ;; -s|--src) SRC_BRANCH="$2" shift ;; -d|--deploy) DEPLOY_BRANCH="$2" shift ;; *) echo "Option $1 is unknown." echo $USAGE_MSG exit 0 ;; esac shift done # Exit if any subcommand fails set -e echo "Deploying..." echo "Source branch: $SRC_BRANCH" echo "Deploy branch: $DEPLOY_BRANCH" # Switch to source branch (creates it if necessary from the current branch) if [ `git branch | grep $SRC_BRANCH | tr ' ' '\n' | tail -1` ] then git checkout $SRC_BRANCH else git checkout -b $SRC_BRANCH fi # Checkout DEPLOY_BRANCH branch if [ `git branch | grep $DEPLOY_BRANCH` ] then git branch -D $DEPLOY_BRANCH fi git checkout -b $DEPLOY_BRANCH # Build site bundle exec jekyll build # Delete and move files find . -maxdepth 1 ! -name '_site' ! -name '.git' ! -name '.gitignore' -exec rm -rf {} \; mv _site/* . rm -R _site/ # Push to DEPLOY_BRANCH git add -fA git commit --allow-empty -m "$(git log -1 --pretty=%B) [ci skip]" git push -f -q origin $DEPLOY_BRANCH # Move back to SRC_BRANCH git checkout $SRC_BRANCH echo "Deployed successfully!" exit 0