1
1
#! /usr/bin/env bash
2
2
3
- set -e
3
+ set -exo pipefail
4
4
5
5
# Generate svg files for arguments based on create scripts with scenarios
6
6
7
7
SCRIPT_DIR=$( cd " $( dirname " ${BASH_SOURCE[0]} " ) " & > /dev/null && pwd)
8
8
OUT=$SCRIPT_DIR /.scala
9
9
10
- test -d $OUT || mkdir $OUT
11
- test -f $OUT /failures.txt && rm $OUT /failures.txt
10
+ mkdir -p $OUT
11
+ rm -f $OUT /failures.txt
12
12
13
- docker build gifs --tag gif-renderer
14
- docker build gifs/svg_render/ --tag svg_rendrer
15
13
tty && TTY_OPS=" -it"
16
14
15
+ columns=70
16
+ rows=20
17
+ no_record=
18
+ no_build=
19
+ no_gifs=
20
+ no_svgs=
21
+
17
22
for name in " $@ "
18
23
do
19
- echo processing $name
20
- svg_render_mappings=" -v $SCRIPT_DIR /../website/static/img:/data -v $OUT /.scala:/out"
21
- svg_render_ops=" --in /out/$name .cast --width 70 --height 20 --term iterm2 --padding 20"
22
- echo " start with $TTY_OPS "
23
-
24
- # Run the scenario
25
- docker run --rm $TTY_OPS -v $OUT /.scala:/data/out gif-renderer ./run_scenario.sh $name || (
26
- echo " Scenario failed: $name " &&
27
- echo $name >> $OUT /failures.txt
28
- )
29
-
30
- # do not render gifs without TTY
31
- if [ -n " $TTY_OPS " ]; then
32
- docker run --rm $svg_render_mappings svg_rendrer a $svg_render_ops --out /data/$name .svg --profile " /profiles/light"
33
- docker run --rm $svg_render_mappings svg_rendrer a $svg_render_ops --out /data/dark/$name .svg --profile " /profiles/dark"
34
- fi
35
24
36
- echo " done"
25
+ case $name in
26
+
27
+ " --no-record" )
28
+ no_record=true
29
+ ;;
30
+
31
+ " --no-gifs" )
32
+ no_gifs=true
33
+ ;;
34
+
35
+ " --no-svgs" )
36
+ no_svgs=true
37
+ ;;
38
+
39
+ " --no-build" )
40
+ no_build=true
41
+ ;;
42
+
43
+
44
+ * )
45
+ ;;
46
+ esac
47
+
48
+ done
49
+
50
+ if [ -z " $no_build " ]; then
51
+ docker build $SCRIPT_DIR --tag gif-renderer
52
+ docker build $SCRIPT_DIR /svg_render/ --tag svg_rendrer
53
+ fi
54
+
55
+ echo " Option build $no_build gifs $no_gifs svg $no_svgs record $no_record "
56
+
57
+ for arg in " $@ "
58
+ do
59
+
60
+
61
+ if [[ " $arg " == --* ]]; then
62
+ echo " Skipping $name "
63
+ else
64
+ fileName=$( basename " $arg " )
65
+ name=${fileName%% .sh}
66
+
67
+ echo processing $name with $TTY_OPS
68
+ svg_render_mappings=" -v $SCRIPT_DIR /../website/static/img:/data -v $OUT /.scala:/out"
69
+ svg_render_ops=" --in /out/$name .cast --width $columns --height $rows --term iterm2 --padding 20"
70
+
71
+ # Run the scenario
72
+ failure=
73
+
74
+ if [ -z " $no_record " ]; then
75
+ docker run --rm $TTY_OPS -v $OUT /.scala:/data/out gif-renderer ./run_scenario.sh $name || (
76
+ echo " Scenario failed: $name " &&
77
+ echo $name >> $OUT /failures.txt &&
78
+ failure=true
79
+ )
80
+ fi
81
+
82
+ # do not render gifs without TTY
83
+ if [ -n " $TTY_OPS " ] && [ -z " $failure " ]; then
84
+ if [ -z " $no_svgs " ]; then
85
+ docker run --rm $svg_render_mappings svg_rendrer a $svg_render_ops --out /data/$name .svg --profile " /profiles/light" &&
86
+ docker run --rm $svg_render_mappings svg_rendrer a $svg_render_ops --out /data/dark/$name .svg --profile " /profiles/dark" || (
87
+ echo " Scenario failed: $name " &&
88
+ echo $name >> $OUT /failures.txt &&
89
+ failure=true
90
+ )
91
+ fi
92
+ if [ -z " $no_gifs " ]; then
93
+ docker run --rm $svg_render_mappings asciinema/asciicast2gif -w $columns -h $rows -t monokai /out/$name .cast /data/gifs/$name .gif || (
94
+ echo " Scenario failed: $name " &&
95
+ echo $name >> $OUT /failures.txt &&
96
+ failure=true
97
+ )
98
+ fi
99
+ fi
100
+ echo " done"
101
+ fi
37
102
done
38
103
39
- test -f $OUT /failures.txt && (
104
+ failures=
105
+ test -f " $OUT /failures.txt" && failures=$( cat " $OUT /failures.txt" )
106
+
107
+ if [ -n " $failures " ]; then
40
108
echo " Scenarios failed:" &&
41
- cat $OUT / failures.txt &&
109
+ echo " $ failures" &&
42
110
exit 1
43
- ) || echo " All scenarios succeded!"
111
+ else
112
+ echo " All scenarios succeded!"
113
+ fi
0 commit comments