Completed script that manages and builds jekyll site.
parent
ef85917a71
commit
97e446e480
@ -0,0 +1,115 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
function show_help {
|
||||||
|
echo "Usage: jekyll-chepec.sh [OPTION]..."
|
||||||
|
echo "Update, sync and rebuild jekyll blog on damietta"
|
||||||
|
echo ""
|
||||||
|
echo "Give no arguments at all to make this script run everything"
|
||||||
|
echo "-c convert *.Rmd files in _knitr/ to *.md files in _posts/"
|
||||||
|
echo "-o overwrite existing *.md files if necessary"
|
||||||
|
echo "-s sync the jekyll directories locally and on damietta"
|
||||||
|
echo "-b build the live jekyll site on damietta"
|
||||||
|
echo "-h show this help"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Three cases:
|
||||||
|
# 1. convert new/existing *.Rmd to *.md, with option to overwrite existing *.md
|
||||||
|
# 2. sync the jekyll website directory (for that, we use unison)
|
||||||
|
# 3. build the site (on the server)
|
||||||
|
# Note that the actions must be done in order, so if the user chooses case 2., 1. is executed first, then 2.
|
||||||
|
# Likewise, if the user chooses case 3., 1. and 2. are executed first.
|
||||||
|
|
||||||
|
|
||||||
|
# A POSIX variable
|
||||||
|
# Reset in case getopts has been used previously in the shell.
|
||||||
|
OPTIND=1
|
||||||
|
|
||||||
|
|
||||||
|
# initialise flags here
|
||||||
|
# convert new *.Rmd --> *.md?
|
||||||
|
convert=false
|
||||||
|
# convert existing *.md files as well?
|
||||||
|
overwrite_md=false
|
||||||
|
# sync jekyll directory?
|
||||||
|
unison_sync=false
|
||||||
|
# build jekyll site?
|
||||||
|
buildsite=false
|
||||||
|
|
||||||
|
|
||||||
|
# To do everything, the user could set all the flags (commmand-line options),
|
||||||
|
# but to make life a little easier, this script will interpret _no arguments_
|
||||||
|
# as "run everything"
|
||||||
|
if [ $# -eq 0 ] ; then
|
||||||
|
convert=true
|
||||||
|
overwrite_md=true
|
||||||
|
unison_sync=true
|
||||||
|
buildsite=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
while getopts "h?cosb" opt; do
|
||||||
|
case $opt in
|
||||||
|
c)
|
||||||
|
convert=true
|
||||||
|
;;
|
||||||
|
o)
|
||||||
|
overwrite_md=true
|
||||||
|
;;
|
||||||
|
s)
|
||||||
|
unison_sync=true
|
||||||
|
;;
|
||||||
|
b)
|
||||||
|
buildsite=true
|
||||||
|
;;
|
||||||
|
h|\?)
|
||||||
|
show_help
|
||||||
|
exit 0
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
shift $((OPTIND-1))
|
||||||
|
|
||||||
|
|
||||||
|
#### 1. convert new/existing *.Rmd to *.md
|
||||||
|
# use the function KnitPost() from the R-script render_post
|
||||||
|
if [ "$convert" = true ] ; then
|
||||||
|
echo ">>>> jc: Converting RMarkdown to Markdown (overwrite = $overwrite_md)"
|
||||||
|
if [ "$overwrite_md" = true ] ; then
|
||||||
|
Rscript -e "source('/home/taha/jekyll/chepec/_knitr/render_post.R'); KnitPost(overwrite=TRUE)"
|
||||||
|
else
|
||||||
|
Rscript -e "source('/home/taha/jekyll/chepec/_knitr/render_post.R'); KnitPost()"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
#### 2. sync the jekyll website directory
|
||||||
|
# sync local jekyll folder with damietta
|
||||||
|
if [ "$unison_sync" = true ] ; then
|
||||||
|
echo ">>>> jc: Syncing jekyll folder"
|
||||||
|
unison jekyll-chepec -auto
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
#### 3. build the site (on the server)
|
||||||
|
if [ "$buildsite" = true ] ; then
|
||||||
|
echo ">>>> jc: Building site on damietta"
|
||||||
|
# runs the build-jchepec.sh script (note that the path is local on damietta)
|
||||||
|
# this line is fubar and needs to be fixed or circumvented
|
||||||
|
ssh damietta bash --login -c /home/taha/jekyll/build-jchepec.sh
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# give the user a summary
|
||||||
|
# -- good idea, but do it better
|
||||||
|
#if [ "$buildsite" = true ] ; then
|
||||||
|
# echo ">>>> jc: Synced and built jekyll site (overwrite = $overwrite)"
|
||||||
|
#else
|
||||||
|
# echo ">>>> jc: Synced jekyll folder (overwrite = $overwrite)"
|
||||||
|
#fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue