139 lines
4.8 KiB
Bash
Executable File
139 lines
4.8 KiB
Bash
Executable File
#! /usr/bin/env bash
|
|
|
|
RPH_UID=${RPH_UID:-${UID}}
|
|
|
|
# Identify source path (even if symlinked)
|
|
SOURCE=${BASH_SOURCE[0]}
|
|
while [ -L "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
|
|
DIR=$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )
|
|
SOURCE=$(readlink "$SOURCE")
|
|
[[ $SOURCE != /* ]] && SOURCE=$DIR/$SOURCE # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
|
|
done
|
|
SCRIPT_DIR=$( cd -- "$( dirname -- "${SOURCE}" )" &> /dev/null && pwd )
|
|
|
|
BASE_NAME="$(basename -- "$0")"
|
|
BASE_BASE_NAME="${BASE_NAME%.*}"
|
|
|
|
RUNTIPI_ROOT="$(cd "${SCRIPT_DIR}/../.." && pwd)"
|
|
RUNTIPI_CLI="${RUNTIPI_ROOT}/runtipi-cli"
|
|
set -e
|
|
|
|
cd "${RUNTIPI_ROOT}" > /dev/null
|
|
|
|
runtipi-cli() {
|
|
if ! [ -x "${RUNTIPI_CLI}" ]; then
|
|
>&2 printf '%s\n' \
|
|
"ERROR: ${RUNTIPI_CLI} not found or not executable!"
|
|
return 1
|
|
fi
|
|
"${RUNTIPI_CLI}" "${@}"
|
|
}
|
|
|
|
append_file_param() {
|
|
[ -e "${2:?File name missing}" ] || return
|
|
echo "${*}"
|
|
}
|
|
|
|
runtipi-app-docker-compose() {
|
|
local APP="${1:-Must supply app name}"
|
|
|
|
docker compose \
|
|
$(append_file_param --env-file user-config/.env.local) \
|
|
$(append_file_param --env-file app-data/${APP}/app.env) \
|
|
$(append_file_param --env-file user-config/${APP}/app.env) \
|
|
--project-name ${APP} \
|
|
$(if [ "$APP" != "runtipi" ]; then
|
|
echo --file apps/${APP}/docker-compose.yml
|
|
append_file_param --file repos/29ca930bfdaffa1dfabf5726336380ede7066bc53297e3c0c868b27c97282903/apps/docker-compose.common.yml
|
|
append_file_param --file "user-config/${APP}/docker-compose.yml"
|
|
else
|
|
append_file_param --file "docker-compose.yml"
|
|
append_file_param --file "user-config/tipi-compose.yml"
|
|
fi) \
|
|
${@:2}
|
|
}
|
|
|
|
dls() {
|
|
local base='{{.Status}}\t{{.ID}}\t{{.Names}}\t{{.Image}}' #'\t{{.Networks}}\t{{.Ports}}\t{{.Mounts}}'
|
|
local compose='{{.Label "com.docker.compose.project"}}\t{{.Label "com.docker.compose.service"}}'
|
|
local format="table $compose\t$base"
|
|
docker container ls --all --format "$format" | ( sed -u '1s/.*/\U&/; q'; sed -Ee 's|^|555|; s|^555runtipi|000runtipi|;' | sort | sed -Ee 's/^[[:digit:]]{3}//' )
|
|
}
|
|
|
|
case "${1}" in
|
|
cli)
|
|
runtipi-cli "${@:2}"
|
|
;;
|
|
log|logs)
|
|
POSTGRES_PASSWORD=_ TIPI_VERSION=_ LOCAL_DOMAIN=_ DOMAIN=_ runtipi-app-docker-compose "${2:-runtipi}" logs ${3:+"${@:3}"}
|
|
;;
|
|
start)
|
|
ROOT_FOLDER_HOST="${RUNTIPI_ROOT}" RUNTIPI_APP_DATA_PATH="${RUNTIPI_ROOT}" \
|
|
runtipi-cli start --env-file user-config/.env.local --no-permissions
|
|
;;
|
|
update)
|
|
if [ -z "${2}" ]; then
|
|
${SCRIPT_DIR}/checkver.sh
|
|
else
|
|
runtipi-cli update --env-file user-config/.env.local --no-permissions "${2:?Must supply version}" "${@:3}"
|
|
fi
|
|
;;
|
|
docker)
|
|
docker "${@:2}"
|
|
;;
|
|
dls)
|
|
dls "${@:2}"
|
|
;;
|
|
app)
|
|
runtipi-app-docker-compose "${@:2}"
|
|
;;
|
|
dockge)
|
|
cd "${RUNTIPI_ROOT}/../dockge/stacks/${2:?Must supply stack name}" > /dev/null
|
|
docker compose "${@:3}"
|
|
;;
|
|
shell)
|
|
runtipi-app-docker-compose "${2:?}" exec ${5:+"${@:5}"} -it "${4:-${2}}" "${3:-bash}"
|
|
;;
|
|
setup)
|
|
ln -s $2 "$(cd -- "${SCRIPT_DIR}" && pwd)/${BASE_NAME}" "${3:-$HOME/.local/bin/}"
|
|
;;
|
|
edit)
|
|
${VISUAL:-${EDITOR:-vi}} $0
|
|
;;
|
|
*)
|
|
printf '%s %-12s %s\n' \
|
|
"" "" ""\
|
|
"Usage:" "" ""\
|
|
" ${BASE_NAME} <command> [args...]" "" ""\
|
|
"" "" "" \
|
|
"Available commands:" "" ""\
|
|
"" "" "" \
|
|
"runtipi" "" ""\
|
|
"" "cli" "runtipi-cli" \
|
|
"" "log" "runtipi docker stack logs" \
|
|
"" "start" "start runtipi" \
|
|
"" "update" "update runtipi to a specific version" \
|
|
"" "" "" \
|
|
"docker/docker-compose" "" ""\
|
|
"" "app" "docker compose for runtipi apps" \
|
|
"" "dls" "stylized docker ls" \
|
|
"" "docker" "docker" \
|
|
"" "dockge" "docker compose for dockge stacks" \
|
|
"" "shell" "enter an insteractive shell" \
|
|
"" "" "" \
|
|
"misc." "" ""\
|
|
"" "exec" "execute within the shell, START_DIR env applies" \
|
|
"" "" "" \
|
|
"" "setup" "setup runtipictl in user's .local/bin dir" \
|
|
"" "" "${BASE_NAME} setup" \
|
|
"" "" "${BASE_NAME} setup '' ~/.local/bin/${BASE_BASE_NAME}" \
|
|
"" "" "${BASE_NAME} setup '' ~/.local/bin/runtipictl" \
|
|
"" "" "" \
|
|
"Related env. vars:" "" "" \
|
|
"" "VISUAL EDITOR RPH_UID QUIET START_DIR ROOT_EXEC" ""
|
|
|
|
;;
|
|
esac
|
|
|
|
# vim: set ft=sh expandtab tabstop=4 shiftwidth=4:
|