From 7f2767c0f8af42b300bd36586c6d852462d62031 Mon Sep 17 00:00:00 2001
From: Christophe Garion <tofgarion@runbox.com>
Date: Thu, 23 Feb 2023 11:54:56 +0100
Subject: [PATCH] [scripts] refactor script to launch docker

---
 rundocker.sh         | 11 ---------
 scripts/rundocker.sh | 59 ++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 59 insertions(+), 11 deletions(-)
 delete mode 100644 rundocker.sh
 create mode 100644 scripts/rundocker.sh

diff --git a/rundocker.sh b/rundocker.sh
deleted file mode 100644
index fa1b0749..00000000
--- a/rundocker.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/usr/bin/env bash
-
-containerId=leliobrun/lustrec-env
-
-command -v docker >/dev/null 2>&1 || { \
-        echo >&2 "docker is required but could not be found.  Aborting."; \
-        echo >&2 "To setup Docker: https://docs.docker.com/engine/getstarted/step_one/"; \
-        exit 1; }
-
-docker run -it --rm --user $(id -u):$(id -g)\
-    -v $PWD:/home/opam/lustrec $containerId $1
diff --git a/scripts/rundocker.sh b/scripts/rundocker.sh
new file mode 100644
index 00000000..361e87e2
--- /dev/null
+++ b/scripts/rundocker.sh
@@ -0,0 +1,59 @@
+#!/usr/bin/env bash
+
+# shell script to launch LustreC docker, mainly for launching tests
+# see the usage function for more explanations
+
+# usage function
+usage () {
+    echo "Usage: " $0 " [-h|--help] [-i|--id ID] [-t|--tmp TMP_DIR] [options passed to docker]"
+    echo "  Run a docker instance named \"lustrec_docker\" built with image " $CONTAINER_ID " by default."
+    echo "  Available options:"
+    echo "  - [-i|--id ID]       | change container image ID"
+    echo "  - [-t|--tmp TMP_DIR] | change binding for /tmp dir in container. Default to /tmp"
+    exit 1
+}
+
+# default values
+CONTAINER_ID=leliobrun/lustrec-env
+TMP_DIR=/tmp
+
+# use getopt to get arguments
+TEMP=$(getopt -o 'hi:t:' --long 'help,id:,tmp:' -n 'rundocker.sh' -- "$@")
+
+eval set -- "$TEMP"
+unset TEMP
+
+# main loop to get arguments
+while true; do
+    case "$1" in
+        '-h'|'--help')
+            usage
+        ;;
+        '-i'|'--id')
+            CONTAINER_ID="$2"
+            shift 2
+            continue
+        ;;
+        '-t'|'--tmp')
+            TMP_DIR="$2"
+            shift 2
+            continue
+        ;;
+        *)
+            shift
+            break
+        ;;
+    esac
+done
+
+# check if docker is available
+command -v docker >/dev/null 2>&1 || { \
+        echo >&2 "docker is required but could not be found.  Aborting."; \
+        echo >&2 "To setup Docker: https://docs.docker.com/engine/getstarted/step_one/"; \
+        exit 1; }
+
+# launch docker
+docker run -it --rm --user $(id -u):$(id -g)\
+       -name "lustrec_docker" \
+       -v ${TMP_DIR}:/tmp -v ${PWD}:/home/opam/lustrec \
+       ${CONTAINER_ID} $@
-- 
GitLab