Files
steiermark/public/typo3conf/ext/femanager/shell-commands.sh
T
2026-10-06 19:40:28 +02:00

219 lines
7.2 KiB
Bash
Executable File

# NOTE
# Run this 'eval' command at the command line to define the helper
# function for the current terminal:
# eval "$(docker run --rm t3docs/render-documentation:v3.1.0 show-shell-commands)"
#
# As alternative, you can 'source' the code directly into the shell:
# source <(docker run --rm t3docs/render-documentation:v3.1.0 show-shell-commands)
# ATTENTION:
# No whitespace between '<('
#
# Or, use an intermediate file:
# docker run --rm t3docs/render-documentation:v3.1.0 show-shell-commands >shell-commands.sh
# source shell-commands.sh
# This function defines the helper function, usually named \'dockrun_t3rd\'
function dockrun_t3rd () {
# Environment variables the USER may find important (on the host!),
# no slash ('/') at the end,
# default is the current directory $(pwd):
#
# T3DOCS_PROJECT=/abspathto/MyProjectStartFolder (readonly)
# T3DOCS_RESULT=/abspathto/ResultFolder (readwrite)
# T3DOCS_TMP=/abspathto/TemporaryFolder (readwrite)
# T3DOCS_THEMES=/abspathto/MySphinxThemes (readonly)
#
# Environment variables only some DEVELOPERS may find important,
# no slash ('/') at the end,
#
# T3DOCS_MAKEDIR=/abspathto/MYALL/Makedir
# T3DOCS_MENU=/abspathto/MYALL/Menu
# T3DOCS_TOOLCHAINS=/abspathto/MYALL/Toolchains
# T3DOCS_USERHOME=/abspathto/MYALL/userhome
# T3DOCS_VENV=/abspathto/MYALL/venv
# T3DOCS_WHEELS=/abspathto/WheelsFolder
# T3DOCS_DEBUG=0 (0 or 1, talk to stdout)
# T3DOCS_DRY_RUN=0 (0 or 1, don't really execute)
# T3DOCS_GIT_RESTORE_MTIME=1 (0 or 1, usually 1=on)
local DEBUG=${T3DOCS_DEBUG:-0}
local GIT_RESTORE_MTIME=1
local DRY_RUN=${T3DOCS_DRY_RUN:-0}
local git_restore_mtime=$(which git-restore-mtime)
local exitcode=$?
if [[ $exitcode -ne 0 ]] || [[ "$GIT_RESTORE_MTIME" = "0" ]]; then git_restore_mtime=; fi
# start command building
local cmd="docker run --rm"
if [[ $# -eq 0 ]]; then
# create folders on host? (e.g. Documentation-GENERATED-temp)
local CREATING=1
cmd="$cmd --user=$(id -u):$(id -g)"
elif [[ "$@" = "/bin/bash" ]]; then
local CREATING=1
cmd="$cmd --entrypoint /bin/bash -it"
elif [[ "$@" = "/usr/bin/bash" ]]; then
local CREATING=1
cmd="$cmd --user=$(id -u):$(id -g)"
cmd="$cmd --entrypoint /bin/bash -it"
elif [[ "$1" = "serve4build" ]]; then
local CREATING=1
local PORT=${2:-9999}
cmd="$cmd --user=$(id -u):$(id -g) -it"
cmd="$cmd --publish=${PORT}:${PORT}/tcp"
elif [[ "$1" = "just1sphinxbuild" ]]; then
local CREATING=1
cmd="$cmd --user=$(id -u):$(id -g)"
elif [[ "$@" = "export-ALL" ]]; then
local CREATING=1
cmd="$cmd --entrypoint /bin/bash"
else
local CREATING=1
cmd="$cmd --user=$(id -u):$(id -g)"
fi
# PROJECT - read only!
# assume existing folder PROJECT/Documentation
# absolute path to existing folder PROJECT or current dir
local PROJECT=${T3DOCS_PROJECT:-$(pwd)}
cmd="$cmd -v $PROJECT:/PROJECT:ro"
if (($DEBUG)); then echo "PROJECT......: $PROJECT"; fi
# RESULT
# absolute path to existing folder RESULT of (RESULT/Documentation-GENERATED-temp)
local RESULT=${T3DOCS_RESULT:-$(pwd)}
# force special name to prevent create/delete disasters
RESULT=${RESULT}/Documentation-GENERATED-temp
cmd="$cmd -v $RESULT:/RESULT"
if (($CREATING)); then
if (($DEBUG)); then echo creating.....: mkdir -p "$RESULT" ; fi
mkdir -p "$RESULT" 2>/dev/null
fi
if (($DEBUG)); then echo "git_restore_mtime: $git_restore_mtime"; fi
if (($DEBUG)); then echo "RESULT.......: $RESULT"; fi
# TMP
# absolute path to existing folder TMP of (TMP/tmp-GENERATED-temp)
local TMP=${T3DOCS_TMP:-$(pwd)}
# force special name to prevent create/delete disasters
TMP=${TMP}/tmp-GENERATED-temp
if (($CREATING)) && [[ -n "${T3DOCS_TMP}" ]]; then
mkdir -p "$TMP" 2>/dev/null
fi
if [[ -d "${TMP}" ]]; then
cmd="$cmd -v $TMP:/tmp"
if (($CREATING)); then
/bin/bash -c "rm -rf $TMP/*"
fi
if (($DEBUG)); then echo "TMP..........: $TMP"; fi
fi
# USERHOME
# absolute path to existing folder 'userhome'
local USERHOME=${T3DOCS_USERHOME:-$(pwd)/tmp-GENERATED-userhome}
if [ -d "$USERHOME" ]; then
cmd="$cmd -v $USERHOME:/ALL/userhome"
if (($DEBUG)); then echo "USERHOME......: $USERHOME"; fi
fi
# MAKEDIR
# absolute path to existing folder MAKEDIR
local MAKEDIR=${T3DOCS_MAKEDIR:-$(pwd)/tmp-GENERATED-Makedir}
if [ -d "$MAKEDIR" ]; then
cmd="$cmd -v $MAKEDIR:/ALL/Makedir"
if (($DEBUG)); then echo "MAKEDIR......: $MAKEDIR"; fi
fi
# MENU
# absolute path to existing folder MENU
local MENU=${T3DOCS_MENU:-$(pwd)/tmp-GENERATED-Menu}
if [ -d "$MENU" ]; then
cmd="$cmd -v $MENU:/ALL/Menu"
if (($DEBUG)); then echo "MENU.........: $MENU"; fi
fi
# VENV (used to be 'Rundir')
# absolute path to existing folder VENV
local VENV=${T3DOCS_VENV:-$(pwd)/tmp-GENERATED-venv}
if [ -d "$VENV" ]; then
cmd="$cmd -v $VENV:/ALL/venv"
if (($DEBUG)); then echo "VENV.........: $VENV"; fi
fi
# THEMES
# absolute path to a folder containing Sphinx themes
local THEMES=${T3DOCS_THEMES:-$(pwd)/tmp-GENERATED-Themes}
if [ -d "$THEMES" ]; then
cmd="$cmd -v $THEMES:/THEMES"
if (($DEBUG)); then echo "THEMES.......: $THEMES"; fi
fi
# TOOLCHAINS
# absolute path to existing folder TOOLCHAINS
local TOOLCHAINS=${T3DOCS_TOOLCHAINS:-$(pwd)/tmp-GENERATED-Toolchains}
if [ -d "$TOOLCHAINS" ]; then
cmd="$cmd -v $TOOLCHAINS:/ALL/Toolchains"
if (($DEBUG)); then echo "TOOLCHAINS...: $TOOLCHAINS"; fi
fi
# WHEELS
# absolute path to a folder containing Python wheel packages
local WHEELS=${T3DOCS_WHEELS:-$(pwd)/tmp-GENERATED-Wheels}
if [ -d "$WHEELS" ]; then
cmd="$cmd -v $WHEELS:/WHEELS"
if (($DEBUG)); then echo "WHEELS.......: $WHEELS"; fi
fi
cmd="$cmd ghcr.io/t3docs/render-documentation:v3.1.0"
if (($DEBUG)); then echo "OUR_IMAGE....: t3docs/render-documentation:v3.1.0"; fi
# add remaining arguments
if [[ "$@" = "/bin/bash" ]]; then
true "do nothing here"
elif [[ "$@" = "/usr/bin/bash" ]]; then
true "do nothing here"
elif [[ "$1" = "serve4build" ]]; then
cmd="$cmd ${1} ${PORT}"
elif [[ "$1" = "just1sphinxbuild" ]]; then
cmd="$cmd $@"
echo "See 'Documentation-GENERATED-temp/sphinx-build' for build information"
elif [[ "$@" = "export-ALL" ]]; then
cmd="$cmd -c \"rsync -a --delete --chown=$(id -u):$(id -g) /ALL/ /RESULT/ALL-exported\""
echo The export will go to:
echo " $RESULT/ALL-exported"
else
cmd="$cmd $@"
# if script git-restore-mtime exists and '*make*' in args try the command
# See README: get 'git-restore-mtime' from https://github.com/MestreLion/git-tools
if [[ "$git_restore_mtime" != "" ]] && [[ $@ =~ .*make.* ]]; then
if (($DEBUG)); then
echo $git_restore_mtime
$git_restore_mtime
else
$git_restore_mtime 2>/dev/null
fi
fi
fi
if [[ -w "$RESULT" ]]; then true
echo "$cmd" | sed "s/-v /\\\\\\n -v /g" >"$RESULT/last-docker-run-command-GENERATED.sh.txt"
fi
if (($DEBUG || $DRY_RUN)); then
echo $cmd | sed "s/-v /\\\\\\n -v /g"
fi
if [[ "$DRY_RUN" = "0" ]]; then
eval "$cmd"
fi
}
if [[ ! -v DOCKRUN_FN_QUIET ]]; then true
DOCKRUN_FN_QUIET=0
fi
if [[ "$DOCKRUN_FN_QUIET" -ne 1 ]]; then true
echo "This function is now defined FOR THIS terminal window to run 'v3.1.0':"
echo " dockrun_v3.1.0"
echo ""
echo "(Define 'export DOCKRUN_FN_QUIET=1' to turn this message off)"
fi