Lego2012
7/23/2017 - 8:08 PM

Leo's Hugo build scripts

Leo's Hugo build scripts

#!/bin/zsh
source domains.sh

DIR=$(pwd -P)
BUILD_DIR="/build/stage"

if [ -d $DIR$BUILD_DIR ]
then
  rm -rf $DIR$BUILD_DIR
  echo Directory $DIR$BUILD_DIR deleted
else
  echo Directory $DIR$BUILD_DIR not existing
fi

# The variable $BASE_STAGE comes from domains.sh
# You can start Hugo with server or not like here
HUGO_ENV="stage" Hugo --baseURL $BASE_STAGE --destination $DIR$BUILD_DIR
#!/bin/zsh
source domains.sh

DIR=$(pwd -P)
BUILD_DIR="/build/public"

if [ -d $DIR$BUILD_DIR ]
then
  rm -rf $DIR$BUILD_DIR
  echo Directory $DIR$BUILD_DIR deleted
else
  echo Directory $DIR$BUILD_DIR not existing
fi

# The variable $BASE_PROD comes from domains.sh
# You can start Hugo with server or not like here
HUGO_ENV="production" Hugo --baseURL $BASE_PROD --destination $DIR$BUILD_DIR
#!/bin/zsh
DIR=$(pwd -P)
BUILD_DIR="/build/dev"

if [ -d $DIR$BUILD_DIR ]
then
  rm -rf $DIR$BUILD_DIR
  echo Directory $DIR$BUILD_DIR deleted
else
  echo Directory $DIR$BUILD_DIR not existing
fi

HUGO_ENV="development" hugo server --buildDrafts --buildFuture --destination $DIR$BUILD_DIR
#!/bin/zsh

# These are the BaseURLs for do-stage.sh and do-prod.sh
export BASE_STAGE="http://test.domain.tld/"
export BASE_PROD="http://domain.tld/"

# These are the directories on the server where the builds are published to
export DIR_STAGE="/test.domain.tld/"
export DIR_PROD="/domain.tld/"

The BaseURL in config.yml is set to /.

The domains.sh holds the URLs for Production Build and Stage Build.

do-dev.sh takes just the BaseURL from config.yml. When it comes to Stage or Build Production the BaseURLs are taken from do-prod.sh or do-stage.sh. And those are feeded by domains.sh.

Although this is a convenient way to create different builds be aware of the risk of the source command in the do- files. If you like to know more about it: Google is your friend.