contrib: add "journal" command to "nm-in-container.sh" for showing logs
This commit is contained in:
@@ -9,14 +9,17 @@ set -e
|
|||||||
# - build: build a new image, named "$CONTAINER_NAME_REPOSITORY:$CONTAINER_NAME_TAG" ("nm:nm")
|
# - build: build a new image, named "$CONTAINER_NAME_REPOSITORY:$CONTAINER_NAME_TAG" ("nm:nm")
|
||||||
# - run: start the container and tag it "$CONTAINER_NAME_NAME" ("nm")
|
# - run: start the container and tag it "$CONTAINER_NAME_NAME" ("nm")
|
||||||
# - exec: run bash inside the container
|
# - exec: run bash inside the container
|
||||||
|
# - journal|j: print the journal from inside the container
|
||||||
# - stop: stop the container
|
# - stop: stop the container
|
||||||
# - clean: delete the container and the image.
|
# - clean: delete the container and the image.
|
||||||
#
|
#
|
||||||
# Options:
|
# Options:
|
||||||
# --no-cleanup: don't delete the CONTAINERFILE and other artifacts
|
# --no-cleanup: don't delete the CONTAINERFILE and other artifacts
|
||||||
# --stop: only has effect with "run". It will stop the container afterwards.
|
# --stop: only has effect with "run". It will stop the container afterwards.
|
||||||
# -- [COMMAND]: with command "exec", provide a command to run in the container.
|
# -- [EXTRA_ARGS]:
|
||||||
# Defaults to "bash".
|
# - with command "exec", provide a command and arguments to run in the container.
|
||||||
|
# Defaults to "bash".
|
||||||
|
# - with command "journal", additional arguments that are passed to journalctl.
|
||||||
#
|
#
|
||||||
# It bind mounts the current working directory inside the container.
|
# It bind mounts the current working directory inside the container.
|
||||||
# You can run `make install` and run tests.
|
# You can run `make install` and run tests.
|
||||||
@@ -32,11 +35,13 @@ CONTAINER_NAME_REPOSITORY=${CONTAINER_NAME_REPOSITORY:-nm}
|
|||||||
CONTAINER_NAME_TAG=${CONTAINER_NAME_TAG:-nm}
|
CONTAINER_NAME_TAG=${CONTAINER_NAME_TAG:-nm}
|
||||||
CONTAINER_NAME_NAME=${CONTAINER_NAME_NAME:-nm}
|
CONTAINER_NAME_NAME=${CONTAINER_NAME_NAME:-nm}
|
||||||
|
|
||||||
|
EXEC_ENV=()
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
$0: build|run|exec|stop|clean [--no-cleanup] [--stop]
|
$0: build|run|exec|stop|clean|journal [--no-cleanup] [--stop] [-- EXTRA_ARGS]
|
||||||
EOF
|
EOF
|
||||||
echo
|
echo
|
||||||
awk '/^####*$/{ if(on) exit; on=1} { if (on) { if (on==2) print(substr($0,3)); on=2; } }' "$BASH_SOURCE"
|
awk '/^####*$/{ if(on) exit; on=1} { if (on) { if (on==2) print(substr($0,3)); on=2; } }' "$BASH_SOURCE"
|
||||||
@@ -428,18 +433,29 @@ do_run() {
|
|||||||
do_exec() {
|
do_exec() {
|
||||||
do_run
|
do_run
|
||||||
|
|
||||||
|
local e
|
||||||
local EXTRA_ARGS=("$@")
|
local EXTRA_ARGS=("$@")
|
||||||
if [ "${#EXTRA_ARGS[@]}" = 0 ]; then
|
if [ "${#EXTRA_ARGS[@]}" = 0 ]; then
|
||||||
EXTRA_ARGS=('bash')
|
EXTRA_ARGS=('bash')
|
||||||
fi
|
fi
|
||||||
|
|
||||||
podman exec --workdir "$BASEDIR_NM" -it "$CONTAINER_NAME_NAME" "${EXTRA_ARGS[@]}"
|
local ENV=()
|
||||||
|
for e in "${EXEC_ENV[@]}" ; do
|
||||||
|
ENV+=(-e "$e")
|
||||||
|
done
|
||||||
|
|
||||||
|
podman exec "${ENV[@]}" --workdir "$BASEDIR_NM" -it "$CONTAINER_NAME_NAME" "${EXTRA_ARGS[@]}"
|
||||||
|
|
||||||
if [ "$DO_STOP" = 1 ]; then
|
if [ "$DO_STOP" = 1 ]; then
|
||||||
do_stop
|
do_stop
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
do_journal() {
|
||||||
|
EXEC_ENV+=( "SYSTEMD_COLORS=0" )
|
||||||
|
do_exec "journalctl" --no-pager "$@"
|
||||||
|
}
|
||||||
|
|
||||||
do_stop() {
|
do_stop() {
|
||||||
container_is_running "$CONTAINER_NAME_NAME" || return 0
|
container_is_running "$CONTAINER_NAME_NAME" || return 0
|
||||||
podman stop "$CONTAINER_NAME_NAME"
|
podman stop "$CONTAINER_NAME_NAME"
|
||||||
@@ -460,7 +476,10 @@ for (( i=1 ; i<="$#" ; )) ; do
|
|||||||
--stop)
|
--stop)
|
||||||
DO_STOP=1
|
DO_STOP=1
|
||||||
;;
|
;;
|
||||||
build|run|exec|stop|clean)
|
j)
|
||||||
|
CMD=journal
|
||||||
|
;;
|
||||||
|
build|run|exec|stop|clean|journal)
|
||||||
CMD=$c
|
CMD=$c
|
||||||
;;
|
;;
|
||||||
--)
|
--)
|
||||||
@@ -472,8 +491,13 @@ for (( i=1 ; i<="$#" ; )) ; do
|
|||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
usage
|
if [ "$CMD" = "journal" ]; then
|
||||||
die "invalid argument: $c"
|
EXTRA_ARGS=( "${@:$((i-1))}" )
|
||||||
|
break;
|
||||||
|
else
|
||||||
|
usage
|
||||||
|
die "invalid argument: $c"
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
@@ -482,7 +506,7 @@ done
|
|||||||
|
|
||||||
test "$UID" != 0 || die "cannot run as root"
|
test "$UID" != 0 || die "cannot run as root"
|
||||||
|
|
||||||
if test $CMD != exec && test "${#EXTRA_ARGS[@]}" != 0 ; then
|
if test "$CMD" != exec -a "$CMD" != journal -a "${#EXTRA_ARGS[@]}" != 0 ; then
|
||||||
die "Extra arguments are only allowed with exec command"
|
die "Extra arguments are only allowed with exec command"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user