Added runtime sync monitor.

This commit is contained in:
Cotes Chung 2019-11-05 17:18:31 +08:00
parent 342a28d6ed
commit 513ac76f1f
2 changed files with 81 additions and 26 deletions

View File

@ -0,0 +1,36 @@
#!/bin/bash
# Files sync monitoer
#
# © 2019 Cotes Chung
# MIT Licensed
# $1 -> the origin filen with absolute path.
# $2 -> the origin sync directory
# $3 -> the destination sync direcotry
# Pass the system temp file
if [[ ! -f $1 ]]; then
exit 0
fi
src_dir=`dirname $(realpath $1)`
dir_prefix="$(realpath $2)/"
related_dir="${src_dir:${#dir_prefix}}"
dest="$(realpath $3)/${related_dir}"
if [[ ! -d "$dest" ]]; then
mkdir -p "$dest"
fi
if [[ -f "$1" ]]; then
cp $1 $dest
fi
if [[ $related_dir == "_posts" ]]; then
python $3/_scripts/py/pages_generator.py
fi

53
run.sh
View File

@ -1,10 +1,20 @@
#!/bin/bash #!/bin/bash
#
# Run jekyll site at http://127.0.0.1:4000 # Run jekyll site at http://127.0.0.1:4000
#
# Requirement:
# fswatch http://emcrisostomo.github.io/fswatch/
#
# © 2019 Cotes Chung # © 2019 Cotes Chung
# Published under MIT License # Published under MIT License
WORK_DIR=$PWD
CONTAINER=.container
SYNC_TOOL=_scripts/sh/sync_monitor.sh
cmd="bundle exec jekyll s"
help() { help() {
echo "Usage:" echo "Usage:"
echo echo
@ -15,42 +25,53 @@ help() {
echo " -P, --port <PORT> Port to listen on" echo " -P, --port <PORT> Port to listen on"
echo " -b, --baseurl <URL> The site relative url that start with slash, e.g. '/project'" echo " -b, --baseurl <URL> The site relative url that start with slash, e.g. '/project'"
echo " -h, --help Print the help information" echo " -h, --help Print the help information"
echo " -t, --trace Show the full backtrace when an error occurs"
} }
cleanup() { cleanup() {
cd ../ cd $WORK_DIR
rm -rf .container rm -rf $CONTAINER
ps aux | grep fswatch | awk '{print $2}' | xargs kill -9 > /dev/null 2>&1
} }
init() { init() {
set -eu set -eu
if [[ -d .container ]]; then if [[ -d $CONTAINER ]]; then
rm -rf .container rm -rf $CONTAINER
fi fi
temp=$(mktemp -d) temp=$(mktemp -d)
cp -r * $temp cp -r * $temp
cp -r .git $temp cp -r .git $temp
mv $temp .container mv $temp $CONTAINER
trap cleanup INT trap cleanup INT
} }
check_unset() { check_unset() {
if [[ -z ${1:+unset} ]] if [[ -z ${1:+unset} ]]; then
then
help help
exit 1 exit 1
fi fi
} }
cmd="bundle exec jekyll s" main() {
init
cd $CONTAINER
python _scripts/py/init_all.py
fswatch -0 -e "\\$CONTAINER" -e "\.git" ${WORK_DIR} | xargs -0 -I {} bash ./${SYNC_TOOL} {} $WORK_DIR . &
echo "\$ $cmd"
eval $cmd
}
while (( $# )) while (( $# ))
do do
@ -80,6 +101,10 @@ do
shift shift
shift shift
;; ;;
-t|--trace)
cmd+=" -t"
shift
;;
-h|--help) -h|--help)
help help
exit 0 exit 0
@ -92,10 +117,4 @@ do
esac esac
done done
init main
cd .container
python _scripts/py/init_all.py
echo "\$ $cmd"
eval $cmd