summary refs log tree commit diff
diff options
context:
space:
mode:
-rwxr-xr-xbin/hibiki/compose10
-rwxr-xr-xbin/hibiki/enter44
2 files changed, 54 insertions, 0 deletions
diff --git a/bin/hibiki/compose b/bin/hibiki/compose
new file mode 100755
index 0000000..e4a5dbd
--- /dev/null
+++ b/bin/hibiki/compose
@@ -0,0 +1,10 @@
+#!/bin/sh
+cwd="$PWD"
+container_cwd="/run/cwd/$(basename "$cwd")"
+exec docker run \
+    --rm -it \
+    --net host \
+    --mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
+    --mount type=bind,src="$cwd",dst="$container_cwd" \
+    -w "$container_cwd" \
+    docker/compose:latest $@
diff --git a/bin/hibiki/enter b/bin/hibiki/enter
new file mode 100755
index 0000000..67a9806
--- /dev/null
+++ b/bin/hibiki/enter
@@ -0,0 +1,44 @@
+#!/bin/sh
+set -e
+[ -n "$DEBUG" ] && set -x
+
+target=
+img=""
+dockerfile="${PWD}/Dockerfile"
+become=
+
+usage() {
+	printf "usage: %s OPTIONS -- [DOCKER RUN ARGS]\n" "$(basename "$0")"
+	printf "\n"
+	printf "  -t TARGET\n"
+	printf "  -i IMAGE\n"
+	printf "  -f DOCKERFILE\n"
+	printf "  -u (become user)\n"
+	printf "\n"
+	printf "Enter the container defined in Dockerfile, with \$PWD mounted at /src\n"
+	exit 2
+}
+
+while getopts t:i:f:uh o; do
+	case $o in
+	t) 	target="$OPTARG" ;;
+	i) 	img="$OPTARG" ;;
+	f) 	dockerfile="$OPTARG" ;;
+	u) 	become=1 ;;
+	h|?) 	usage ;;
+	esac
+done
+shift $((OPTIND - 1))
+
+[ -z "$img" ] && img="$(basename "$(dirname "$(readlink -f -- "$dockerfile")")")"
+
+extra_args=
+[ -n "$become" ] && extra_args="--user=$(id -u):$(id -g)"
+
+# 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" "$(dirname "$dockerfile")"
+
+exec docker run --rm -it --mount=type=bind,src="$PWD",dst=/src -w /src $@ $extra_args "$img"