From 7e9400406ab4a7213d4ca1c7af576bfa601a1712 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Tue, 7 Mar 2017 16:29:13 +0100 Subject: Allowing multiple container commands to be executed in a row. Signed-off-by: Daniel Baumann --- bin/container | 103 ++++++++++++++++++++------------------- share/man/container-create.1.txt | 3 ++ share/man/container.1.txt | 1 + 3 files changed, 57 insertions(+), 50 deletions(-) diff --git a/bin/container b/bin/container index a23f274..1b57193 100755 --- a/bin/container +++ b/bin/container @@ -33,66 +33,69 @@ then fi # Command -COMMAND="${1}" - -if [ ! -e "/usr/lib/${SOFTWARE}/${PROGRAM}/${COMMAND}" ] -then - echo "'${COMMAND}': no such ${PROGRAM} command" >&2 - exit 1 -fi +COMMANDS="${1}" # Options shift 1 OPTIONS="${@}" -# Pre hooks -for FILE in "${HOOKS}/pre-${PROGRAM}".* "${HOOKS}/${NAME}.pre-${PROGRAM}" +for COMMAND in $(echo ${COMMANDS} | sed -e 's|,| |g') do - if [ -x "${FILE}" ] + if [ ! -e "/usr/lib/${SOFTWARE}/${PROGRAM}/${COMMAND}" ] then - "${FILE}" + echo "'${COMMAND}': no such ${PROGRAM} command" >&2 + exit 1 fi -done -# Notification -if echo "${OPTIONS}" | grep -qs "\--no-notification" -then - OPTIONS="$(echo "${OPTIONS}" | sed -e 's|--no-notification||')" -else - case "${COMMAND}" in - create|remove|rm|restart|start|stop) - USER="${SUDO_USER:-${USER}}" - DATE="$(date +%Y-%m-%d\ %H:%M:%S)" - HOST="$(hostname -f)" - - # logfile - echo "${DATE} ${HOST} ${USER} ${PROGRAM} ${COMMAND} ${OPTIONS}" >> "/var/log/${SOFTWARE}/${PROGRAM}.log" - - # irc - if [ -e /usr/bin/irk ] && [ -e "/etc/default/${SOFTWARE}" ] - then - . /etc/default/${SOFTWARE} - - if [ -n "${IRK_TARGETS}" ] + # Pre hooks + for FILE in "${HOOKS}/pre-${PROGRAM}".* "${HOOKS}/${NAME}.pre-${PROGRAM}" + do + if [ -x "${FILE}" ] + then + "${FILE}" + fi + done + + # Notification + if echo "${OPTIONS}" | grep -qs "\--no-notification" + then + OPTIONS="$(echo "${OPTIONS}" | sed -e 's|--no-notification||')" + else + case "${COMMAND}" in + create|remove|rm|restart|start|stop) + USER="${SUDO_USER:-${USER}}" + DATE="$(date +%Y-%m-%d\ %H:%M:%S)" + HOST="$(hostname -f)" + + # logfile + echo "${DATE} ${HOST} ${USER} ${PROGRAM} ${COMMAND} ${OPTIONS}" >> "/var/log/${SOFTWARE}/${PROGRAM}.log" + + # irc + if [ -e /usr/bin/irk ] && [ -e "/etc/default/${SOFTWARE}" ] then - for TARGET in ${IRK_TARGETS} - do - irk ${TARGET} "\x0300${USER}\x03@\x0312${HOST}:\x03 \x0303${PROGRAM}\x03 \x0307${COMMAND}\x03 ${OPTIONS}" - done + . /etc/default/${SOFTWARE} + + 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}" + done + fi fi - fi - ;; - esac -fi - -# Run -exec "/usr/lib/${SOFTWARE}/${PROGRAM}/${COMMAND}" "${OPTIONS}" - -# Post hooks -for FILE in "${HOOKS}/post-${PROGRAM}".* "${HOOKS}/${NAME}.post-${PROGRAM}" -do - if [ -x "${FILE}" ] - then - "${FILE}" + ;; + esac fi + + # Run + exec "/usr/lib/${SOFTWARE}/${PROGRAM}/${COMMAND}" "${OPTIONS}" + + # Post hooks + for FILE in "${HOOKS}/post-${PROGRAM}".* "${HOOKS}/${NAME}.post-${PROGRAM}" + do + if [ -x "${FILE}" ] + then + "${FILE}" + fi + done done diff --git a/share/man/container-create.1.txt b/share/man/container-create.1.txt index 9176b84..a45c1f2 100644 --- a/share/man/container-create.1.txt +++ b/share/man/container-create.1.txt @@ -88,6 +88,9 @@ EXAMPLES *Create example.net container using debconf script:*:: sudo container create -n example.net -s debconf +*Create example.net container with the default create script and start it:*:: + sudo container create,start -n example.net + SEE ALSO -------- container-tools(7), diff --git a/share/man/container.1.txt b/share/man/container.1.txt index 7708c6a..fa94d7f 100644 --- a/share/man/container.1.txt +++ b/share/man/container.1.txt @@ -30,6 +30,7 @@ container - Manage systemd-nspawn containers SYNOPSIS -------- *container* 'COMMAND' ['OPTIONS'] +*container* 'COMMAND1','COMMAND2',... 'COMMANDn' DESCRIPTION -- cgit v1.2.3