my-runtipi/_bin/runtipictl

90 lines
2.4 KiB
Bash
Executable File

#! /usr/bin/env bash
jlmkr () {
sudo VISUAL="${VISUAL:-}" EDITOR="${EDITOR:-}" $SCALE_POOL_ROOT/jailmaker/jlmkr.py "${@:---help}"
}
JAIL_UID=${JAIL_UID:-${UID}}
jlmkr-exec () {
local cli='cd /srv/runtipi; '"${1:?Must supply command} "${2:+"$(
printf '\"%s\" ' "${@:2}"
)"}
if jlmkr exec runtipi true; then
[ -n "$QUIET" ] || printf 'jlmkr UID:\t%s\ncli:\t\t%s\n' "${JAIL_UID}" "$cli"
jlmkr shell --uid "${JAIL_UID}" runtipi /bin/bash -c "$cli"
else
echo "ERROR: ${_ERROR_MGS:-"Please check if runtipi jail has started! Have you tried 'full-start'?"}" >&2
exit -1
fi
}
runtipi-cli() {
jlmkr-exec ./runtipi-cli "${@}"
}
runtipi-app-docker-compose() {
local APP="${1:-Must supply app name}"
local LOCAL_YML="user-config/${APP}/docker-compose.yml"
jlmkr exec runtipi test -e "/srv/runtipi/${LOCAL_YML}" || LOCAL_YML=""
[ -z "$LOCAL_YML" ] || LOCAL_YML="--file ${LOCAL_YML}"
jlmkr-exec docker compose \
--env-file user-config/.env.local \
--env-file app-data/${APP}/app.env \
--env-file user-config/${APP}/app.env \
--project-name ${APP} \
--file apps/${APP}/docker-compose.yml \
--file repos/29ca930bfdaffa1dfabf5726336380ede7066bc53297e3c0c868b27c97282903/apps/docker-compose.common.yml \
${LOCAL_YML} ${@:2}
}
case "${1}" in
cli)
runtipi-cli "${@:2}"
;;
log)
jlmkr-exec docker compose --env-file user-config/.env.local logs --tail=${TAIL:-40} "${2:-runtipi}" ${3:+"${@:3}"}
;;
start)
runtipi-cli start --env-file user-config/.env.local --no-permissions
;;
full-start)
if ! jlmkr exec runtipi true; then
jlmkr start runtipi
sleep 1s
fi
_ERROR_MSG="ERROR: failed to invoke a command inside the runtipi jail and can't start the jail." \
runtipi-cli start --env-file user-config/.env.local --no-permissions
;;
exec)
jlmkr-exec "${@:2}"
;;
docker)
jlmkr-exec docker "${@:2}"
;;
dcoapp)
runtipi-app-docker-compose "${@:2}"
;;
setup)
ln -s "${BASH_SOURCE[0]}" "$HOME/.local/bin/"
;;
*)
printf '%s\n' \
"Usage:" \
"" \
"cli" \
"log" \
"start" \
"full-start" \
"exec" \
"docker" \
"dcoapp" \
"setup"
;;
esac