summary refs log tree commit diff
path: root/bin/enter
diff options
context:
space:
mode:
Diffstat (limited to 'bin/enter')
-rwxr-xr-xbin/enter24
1 files changed, 16 insertions, 8 deletions
diff --git a/bin/enter b/bin/enter
index 61c1fb7..9c625a7 100755
--- a/bin/enter
+++ b/bin/enter
@@ -8,6 +8,7 @@ dockerfile="${PWD}/Dockerfile"
 priv=
 opts=
 become=
+verbose=
 
 usage() {
 	printf "usage: %s OPTIONS -- [ARGS]\n" "$(basename "$0")"
@@ -18,12 +19,13 @@ usage() {
 	printf "  -o EXTRA OPTIONS\n"
 	printf "  -D (run with elevated privileged, but not privileged)\n"
 	printf "  -B (don't reassign uid/gid)\n"
+	printf "  -v (be verbose)\n"
 	printf "\n"
 	printf "Enter the container defined in Dockerfile, with \$PWD mounted at /src\n"
 	exit 2
 }
 
-while getopts t:i:f:o:BDh o; do
+while getopts t:i:f:o:vBDh o; do
 	case $o in
 	t) 	target="$OPTARG" ;;
 	i) 	img="$OPTARG" ;;
@@ -31,12 +33,21 @@ while getopts t:i:f:o:BDh o; do
 	o)	opts="$OPTARG" ;;
 	D)	priv=1 ;;
 	B)	become=1 ;;
+	v)	verbose=1 ;;
 	h|?) 	usage ;;
 	esac
 done
 shift $((OPTIND - 1))
 
-[ -z "$img" ] && img="$(basename "$(dirname "$(readlink -f -- "$dockerfile")")")"
+if [ -z "$img" ]; then
+	img="$(basename "$(dirname "$(readlink -f -- "$dockerfile")")")"
+
+	# allow setting this to some non-file value to skip building
+	# > enter -i alpine -f none
+	# for a quick alpine based container with $PWD mounted in
+	[ -f "$dockerfile" ] && \
+		docker build --tag="$img" --target="$target" --file="$dockerfile" "$PWD"
+fi
 
 extra_args=
 [ -n "$become" ] && extra_args="${extra_args} "
@@ -58,17 +69,14 @@ extra_args=
 
 [ -n "$opts" ] && extra_args="${extra_args} ${opts}"
 
-# allow setting this to some non-file value to skip building
-# > enter -i alpine -f none
-# for a quick alpine based container with $PWD mounted in
-[ -f "$dockerfile" ] && \
-	docker build --tag="$img" --target="$target" --file="$dockerfile" "$PWD"
-
 [ -z "$become" ] && \
 	extra_args="${extra_args} --user="$(id -u):$(id -g)""
 
 ep="sh"
 [ -n "$1" ] && { ep="$1"; shift; }
+
+[ -n "$verbose" ] && { set -x; }
+
 exec docker run --rm -it \
 	--entrypoint="$ep" \
 	--mount=type=bind,src="$PWD",dst=/src -w /src $extra_args "$img" $@