Files
linux_docker/dev/gen_devcontainer_json.sh
T

77 lines
1.6 KiB
Bash
Executable File

#!/usr/bin/env bash
function print_help_and_exit() {
cat <<EOF
Generate a devcontainer json object for the current workspace.
Usage: gen_devcontainer_json.sh [OPTIONS]
Options:
-u,--user USER The user to add to the image (defaults to the current user)
-i,--image The name to give the image (defaults to "USER:spark-dev")
-h,--help Print this help message and exit
EOF
exit "$1"
}
declare docker_user=""
declare image_name=""
while [[ $# -gt 0 ]]; do
case "$1" in
-i)
;&
--image)
if [[ -z "$2" ]]; then
echo "Image (-i,--image) must be non-empty"
print_help_and_exit 1
fi
image_name="$2"
shift 2
;;
-u)
;&
--user)
if [[ -z "$2" ]]; then
echo "User (-u,--user) must be non-empty"
print_help_and_exit 1
fi
docker_user="$2"
shift 2
;;
-h)
;&
--help)
print_help_and_exit 0
;;
*)
echo "Unexpected argument '$1'"
print_help_and_exit 1
;;
esac
done
if [[ -z "$docker_user" ]]; then
docker_user="$USER"
fi
if [[ -z "$image_name" ]]; then
image_name="${docker_user}:spark-dev"
fi
cat <<EOF
{
"image": "$image_name",
"remoteUser": "$docker_user",
"containerUser": "$docker_user",
"initializeCommand": "mkdir -p $HOME/.spark-dev/mounts/spark-dev",
"workspaceMount": "source=\${localWorkspaceFolder},target=/home/$docker_user/spark,type=bind",
"workspaceFolder": "/home/$docker_user/spark",
"mounts": [
"source=$HOME/.spark-dev/mounts/spark-dev,target=/home/$docker_user,type=bind"
],
}
EOF