blob: 998e81df7d973e131c2d883795453e91d75dc941 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
#!/bin/bash
cd "${0%/*}" || exit 1
# set the default Docker image tag to dactyl-keyboard
IMAGE_TAG="dactyl-keyboard"
# by default, don't rebuild the image
REBUILD=false;
# get the command the user would like to run
COMMAND=${1:?A command is required. Try \'run help\'}
case $COMMAND in
help)
echo "Usage:"
echo " run [command]"
echo ""
echo "Available Commands:"
echo " help show this help"
echo " generate output the keyboard files to the 'things' directory"
echo " configure "
echo " release "
echo ""
echo "Flags:"
echo " -r rebuild the docker image"
echo " -i the tag that should be applied to the docker image"
exit 0
;;
generate)
SCRIPT=dactyl_manuform.py
;;
configure)
SCRIPT=generate_configuration.py
;;
release)
SCRIPT=model_builder.py
;;
*)
echo "Invalid command. Try 'run help'"
exit 1
esac
# check for command line flags
while getopts 'ri:' flag; do
case "${flag}" in
r) REBUILD=true ;; # if the -r flag is set, we should rebuild the image
i) IMAGE_TAG="${OPTARG}"
esac
done
# get the image ID, and save the return code so we'll know if the image exists
IMAGE_ID=$(docker inspect --type=image --format={{.Id}} ${IMAGE_TAG})
INSPECT_RETURN_CODE=$?
# if we were specifically told to rebuild, or if the image doesn't exists, then build the docker image
if $REBUILD || [ $INSPECT_RETURN_CODE -ne 0 ]; then
docker build -t ${IMAGE_TAG} -f docker/Dockerfile .
fi
# run the command in a temporary container
docker run --name dm-run -d --rm -v "`pwd`/src:/app/src" -v "`pwd`/things:/app/things" ${IMAGE_TAG} python3 -i $SCRIPT > /dev/null 2>&1
# show progress indicator while until dm-run container completes
while $(docker inspect --format={{.Id}} dm-run > /dev/null 2>&1); do
echo -n "."
sleep 1.5
done
echo $'\n\nDactyl-Manuform export is complete!\n'
|