aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/dev.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/dev.sh')
-rwxr-xr-xscripts/dev.sh45
1 files changed, 45 insertions, 0 deletions
diff --git a/scripts/dev.sh b/scripts/dev.sh
new file mode 100755
index 0000000..490021f
--- /dev/null
+++ b/scripts/dev.sh
@@ -0,0 +1,45 @@
+#!/usr/bin/env sh
+
+# Sets up a development environment and runs a shell in a docker container.
+# Usage: dev.sh [--build [--clean]] [ash_args ...]
+
+if [ "$1" = "--build" ]; then
+ shift
+ printf "Building pythondiscord/snekbox-venv:dev..."
+
+ docker build \
+ -t pythondiscord/snekbox-venv:dev \
+ -f docker/venv.Dockerfile \
+ --build-arg DEV=1 \
+ -q \
+ . \
+ >/dev/null \
+ && printf " done!\n" || exit "$?"
+
+ if [ "$1" = "--clean" ]; then
+ shift
+ dangling_imgs=$(docker images -f "dangling=true" -q)
+
+ if [ -n "${dangling_imgs}" ]; then
+ printf "Removing dangling images..."
+
+ docker rmi $dangling_imgs >/dev/null \
+ && printf " done!\n" || exit "$?"
+ fi
+ fi
+fi
+
+docker run \
+ -it \
+ --rm \
+ --privileged \
+ --network host \
+ -h pdsnk-dev \
+ -e PYTHONDONTWRITEBYTECODE=1 \
+ -e PIPENV_PIPFILE="/snekbox/Pipfile" \
+ -e ENV="/snekbox-local/scripts/.profile" \
+ -v "${PWD}":/snekbox-local \
+ -w "/snekbox-local" \
+ --entrypoint /bin/ash \
+ pythondiscord/snekbox-venv:dev \
+ "$@"