From 6dae15cb921a76702e7210131c5b29b83487696c Mon Sep 17 00:00:00 2001 From: Christian Date: Wed, 21 Oct 2020 23:53:40 +0200 Subject: [PATCH] Improved generate.sh --- admin/generate.sh | 124 ++++++++++++++++++++++++---------------------- 1 file changed, 66 insertions(+), 58 deletions(-) diff --git a/admin/generate.sh b/admin/generate.sh index e12e9ab..9554071 100755 --- a/admin/generate.sh +++ b/admin/generate.sh @@ -1,38 +1,41 @@ #!/bin/sh # Execute Hugo webiste generation and log all output into log file # In error case, existing blog content will not be touched +# If this script ist not stored in ~/hugogentmp/ change $DIR # Path to hugo executable -# HUGO=~/bin/hugo -HUGO=~/kred/hugo/hugo +HUGO=~/bin/hugo +# HUGO=~/kred/hugo/hugo # Path to output destination. Folder must exists -#PUBLIC_WWW=/var/www/virtual/$USER/html/kollegenrunde -PUBLIC_WWW=~/hugotest/public +PUBLIC_WWW=/var/www/virtual/$USER/html/kollegenrunde +#PUBLIC_WWW=~/hugotest/public -# Path to temp dir -# TMPDIR=$(mktemp -d) -TMPDIR=. +# Working dir: here is the script and git's working dirs +TMPDIR=~/hugogentmp + +TMPPUBLIC=$TMPDIR/public # Path to persisted log file, e.g. in web folder LOG=$TMPDIR/log.txt # Path to a temp log file for hugo's stdout -HUGO_LOG=$TMPDIR/hugolog.txt +TMPLOG=$TMPDIR/tmplog.txt # Path to a temp log file for hugo's errout -HUGO_ERR=$TMPDIR/hugoerr.txt +TMPERR=$TMPDIR/tmperr.txt # Tmp file with timestamp string -DATE=$TMPDIR/date.txt +TMPDATE=$TMPDIR/tmpdate.txt + +# Paths to the local gits +TMPGIT_HUGO=$TMPDIR/kollegen-hugo +TMPGIT_POSTS=$TMPDIR/kollegen-posts # Path to our repositories GIT_HUGO=https://kollegen.uber.space/gitea/kollegenrunde/kollegen-hugo.git GIT_POSTS=https://kollegen.uber.space/gitea/kollegenrunde/kollegen-posts.git -# Paths to the local gits -SUBGIT_HUGO=kollegen-hugo -SUBGIT_POSTS=kollegen-posts # Log a text file content log_file () { @@ -44,104 +47,109 @@ log_file () { # log a string argument log () { echo $1 - echo $1 >> "$LOG" + echo $1 >> $LOG } # Always produce a log file in the destination folder finish () { - date > $DATE - log_file $DATE + date > $TMPDATE + log_file $TMPDATE if [ -f $LOG ] then - mv $LOG $PUBLIC_WWW + echo "Moving log file to $LOG $PUBLIC_WWW" + mv -v $LOG $PUBLIC_WWW + fi + + if [ -f $TMPLOG ] + then + rm -v $TMPLOG + fi + + if [ -f $TMPERR ] + then + rm -v $TMPERR + fi + + if [ -f $TMPDATE ] + then + rm -v $TMPDATE fi + - rm -r -f $TMPDIR exit $1 } ### MAIN ############################################### -if [ ! -d $TMPDIR ] + +if [ -d $TMPPUBLIC ] then - mkdir $TMPDIR - log "Created $TMPDIR" + rm -r -f $TMPPUBLIC fi if [ -f $LOG ] then - log "Old log found: remove $LOG" - rm $LOG + rm -v $LOG + touch $LOG fi -log "Using tmp dir $TMPDIR" + # Document actual time into log file -date >> $DATE -log_file $DATE +date > $TMPDATE +log_file $TMPDATE -if [ -f $HUGO_ERR ] - then - log "Old err log found: remove $HUGO_ERR" - rm $HUGO_ERR -fi +log "Using tmp dir $TMPDIR" -if [ ! -d $SUBGIT_POSTS ] +if [ ! -d $TMPGIT_POSTS ] then # jetzt clonen wir das Repository in den temporären Ordner - echo "Clone $GIT_POSTS" - git clone $GIT_POSTS $SUBGIT_POSTS + mkdir -v $TMPGIT_POSTS 2>&1 | tee -a $LOG + git clone $GIT_POSTS $TMPGIT_POSTS 2>&1 | tee -a $LOG else - echo "Pulling from $GIT_POSTS" - cd $SUBGIT_POSTS - git pull $GIT_POSTS - cd .. + cd $TMPGIT_POSTS && git pull $GIT_POSTS 2>&1 | tee -a $LOG fi -if [ ! -d $SUBGIT_HUGO ] + +if [ ! -d $TMPGIT_HUGO ] then # jetzt clonen wir das Repository in den temporären Ordner - log "Clone $GIT_HUGO incl. Theme into $SUBGIT_HUGO" - git clone --recursive $GIT_HUGO $SUBGIT_HUGO + mkdir -v $TMPGIT_HUGO 2>&1 | tee -a $LOG + git clone $GIT_POSTS $TMPGIT_HUGO 2>&1 | tee -a $LOG else - log "Pulling from $GIT_HUGO" - cd $SUBGIT_HUGO - git pull $GIT_HUGO + cd $TMPGIT_HUGO && git pull $GIT_HUGO 2>&1 | tee -a $LOG fi # Hugo anschmeißen log "Starting hugo" -$HUGO --destination $TMPDIR > $HUGO_LOG 2> $HUGO_ERR +cd $TMPGIT_HUGO && $HUGO --destination $TMPPUBLIC > $TMPLOG 2> $TMPERR -if [ -f $HUGO_LOG ] +if [ -f $TMPLOG ] then - log_file $HUGO_LOG + log_file $TMPLOG fi -if [ -f $HUGO_ERR ] +if [ -f $TMPERR ] then - if grep -Fq "Error" $HUGO_ERR + if grep -Fq "Error" $TMPERR then log "Hugo failed" - log_file $HUGO_ERR + log_file $TMPERR log "Generation canceled. Check the error and try to fix it. Then push again." - rm $HUGO_ERR finish 1 fi fi if [ -d $PUBLIC_WWW ] - then - log "Remove $PUBLIC_WWW" - rm -r $PUBLIC_WWW +then + log "Remove $PUBLIC_WWW" + rm -r -f $PUBLIC_WWW 2>&1 | tee -a $LOG fi # Publish now -log "Delete old $PUBLIC_WWW" -rm -r $PUBLIC_WWW -log "Copy $TMPDIR to $PUBLIC_WWW" -cp -r $TMPDIR $PUBLIC_WWW +log "Copy $TMPPUBLIC to $PUBLIC_WWW" +mv -v $TMPPUBLIC $PUBLIC_WWW 2>&1 | tee -a $LOG log "Ready, Blog created in $PUBLIC_WWW!"