#!/bin/sh # vim: set ft=sh: # Set defaults BASEDIR="$(pwd)" ACTION="watch" DOCKER_IMAGE=glenux/teaching-boilerplate:latest DOCKER_OPT_TTY="-t" # Parse arguments while [ $# -gt 0 ]; do ARG="${1:-}" OPT="${2:-}" shift # echo "DEBUG: ARG=$ARG OPT=$OPT" case "$ARG" in -d|--data-dir) shift # argument requires a parameter if [ -z "$OPT" ]; then >&2 echo "ERROR: missing argument for --data-dir" exit 1 fi if [ ! -d "$OPT" ]; then >&2 echo "ERROR: argument for --data-dir must be a directory" exit 1 fi BASEDIR="$(cd "$OPT" && pwd)" ;; -a|--action) shift # argument requires a parameter if [ -z "$OPT" ]; then >&2 echo "ERROR: missing argument for --action" exit 1 fi ACTION="$OPT" ;; -T|--no-tty) DOCKER_OPT_TTY="" ;; -h|--help) echo "Usage: $0 [options]" echo "" echo "-d, --data-dir DIR Content directory" echo "-a, --action ACTION Action (watch, build, shell, etc.)" echo "-t, --tty Enable TTY mode (needed for shell)" echo "-h, --help Show this help" ;; *) >&2 echo "ERROR: unknown option '$ARG'" exit 1 ;; esac done echo "basedir = $BASEDIR" echo "docker_image = $DOCKER_IMAGE" echo "action = $ACTION" if [ -f "$BASEDIR/.marp/theme.scss" ]; then DOCKER_OPT_MARP_THEME="-v $BASEDIR/.marp:/app/.marp" echo "Theme: detected Marp files. Adding option to command line ($DOCKER_OPT_MARP_THEME)" else echo "Theme: no theme detected. Using default files" fi if [ -f "$BASEDIR/mkdocs.yml" ]; then DOCKER_OPT_MKDOCS_CONFIG="-v $BASEDIR/mkdocs.yml:/app/mkdocs.yml" echo "Mkdocs: detected mkdocs.yml file. Adding option to command line ($DOCKER_OPT_MKDOCS_CONFIG)" else echo "Mkdocs: no mkdocs.yml detected. Using default files" fi if [ -d "$BASEDIR/slides" ]; then DOCKER_OPT_MARP_PORT="-p 5200:5200" fi if [ -d "$BASEDIR/docs" ]; then DOCKER_OPT_MKDOCS_PORT="-p 5100:5100" fi set -x docker run -i $DOCKER_OPT_TTY \ --shm-size=1gb \ -e "EXT_UID=$(id -u)" \ -e "EXT_GID=$(id -g)" \ -v "$BASEDIR/docs:/app/docs" \ -v "$BASEDIR/slides:/app/slides" \ -v "$BASEDIR/images:/app/images" \ -v "$BASEDIR/_build:/app/_build" \ $DOCKER_OPT_MKDOCS_CONFIG \ $DOCKER_OPT_MARP_THEME \ $DOCKER_OPT_MKDOCS_PORT \ $DOCKER_OPT_MARP_PORT \ "$DOCKER_IMAGE" "$ACTION" set +x # TODO: ask current user permissions # TODO: fix permissions on generated files