diff options
Diffstat (limited to 'bin/container')
-rwxr-xr-x | bin/container | 41 |
1 files changed, 27 insertions, 14 deletions
diff --git a/bin/container b/bin/container index 3ab1a69..fb52687 100755 --- a/bin/container +++ b/bin/container @@ -1,6 +1,6 @@ #!/bin/sh -# Copyright (C) 2014-2020 Daniel Baumann <daniel.baumann@open-infrastructure.net> +# Copyright (C) 2014-2022 Daniel Baumann <daniel.baumann@open-infrastructure.net> # # SPDX-License-Identifier: GPL-3.0+ # @@ -15,7 +15,7 @@ # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. +# along with this program. If not, see <https://www.gnu.org/licenses/>. set -e @@ -23,7 +23,7 @@ PROJECT="open-infrastructure" SOFTWARE="compute-tools" PROGRAM="container" -HOOKS="/etc/${PROJECT}/${PROGRAM}/hooks" +HOOKS="/etc/${SOFTWARE}/hooks" # Parameter PARAMETER="${1}" @@ -32,6 +32,9 @@ if [ -z "${PARAMETER}" ] then echo "Usage: ${PROGRAM} COMMAND [OPTIONS]" >&2 echo "Usage: ${PROGRAM} COMMAND1,COMMAND2,... [COMMON_OPTIONS]" >&2 + echo + echo "See ${PROGRAM}(1) and ${PROJECT}(7) for more information." + exit 1 fi @@ -40,13 +43,13 @@ COMMANDS="${1}" # Options shift 1 -OPTIONS="${@}" +OPTIONS="${*}" -for COMMAND in $(echo ${COMMANDS} | sed -e 's|,| |g') +for COMMAND in $(echo "${COMMANDS}" | sed -e 's|,| |g') do - if [ ! -e "/usr/lib/${PROJECT}/${PROGRAM}/${COMMAND}" ] + if [ ! -e "/usr/libexec/${PROGRAM}/${COMMAND}" ] then - echo "'${COMMAND}': no such ${PROGRAM} command" >&2 + echo "'${COMMAND}': no such ${PROGRAM} command, see ${PROGRAM}(1)." >&2 exit 1 fi @@ -65,24 +68,34 @@ do OPTIONS="$(echo "${OPTIONS}" | sed -e 's|--no-notification||')" else case "${COMMAND}" in - create|cr|move|mv|remove|rm|restart|rt|start|s|stop|t) - USER="${SUDO_USER:-${USER}}" + build|b|get|g|move|mv|remove|rm|rebuild|rb|restart|rs|start|s|stop|t|update|u) + if [ -z "${CONTAINER_USER}" ] + then + CONTAINER_USER="${SUDO_USER:-${USER}}" + fi + DATE="$(date +%Y-%m-%d\ %H:%M:%S)" HOST="$(hostname -f 2> /dev/null || hostname)" # logfile - echo "${DATE} ${HOST} ${USER} ${PROGRAM} ${COMMAND} ${OPTIONS}" >> "/var/log/${PROJECT}/${PROGRAM}.log" + echo "${DATE} ${HOST} ${CONTAINER_USER} ${PROGRAM} ${COMMAND} ${OPTIONS}" >> "/var/log/${SOFTWARE}/${PROGRAM}.log" # irc - if [ -e /usr/bin/irk ] && [ -e "/etc/${PROJECT}/${PROGRAM}.conf" ] + if [ -e /usr/bin/irk ] then - . "/etc/${PROJECT}/${PROGRAM}.conf" + for FILE in "/etc/${SOFTWARE}/${PROGRAM}.conf" "/etc/${SOFTWARE}/${PROGRAM}.conf.d"/*.conf + do + if [ -e "${FILE}" ] + then + . "${FILE}" + fi + done if [ -n "${IRK_TARGETS}" ] then for TARGET in ${IRK_TARGETS} do - irk ${TARGET} "\x0300${USER}\x03@\x0312${HOST}:\x03 \x0303${PROGRAM}\x03 \x0307${COMMAND}\x03 ${OPTIONS}" + irk "${TARGET}" "\x0300${CONTAINER_USER}\x03@\x0312${HOST}:\x03 \x0303${PROGRAM}\x03 \x0307${COMMAND}\x03 ${OPTIONS}" done fi fi @@ -91,7 +104,7 @@ do fi # Run - "/usr/lib/${PROJECT}/${PROGRAM}/${COMMAND}" "${OPTIONS}" + "/usr/libexec/${PROGRAM}/${COMMAND}" "${OPTIONS}" # Post hooks for FILE in "${HOOKS}/post-${PROGRAM}".* "${HOOKS}/${NAME}.post-${PROGRAM}" |