1
1
#! /usr/bin/env bash
2
2
3
+ set -exo pipefail
4
+
3
5
# Generate svg files for arguments based on create scripts with scenarios
4
6
5
7
SCRIPT_DIR=$( cd " $( dirname " ${BASH_SOURCE[0]} " ) " & > /dev/null && pwd)
6
8
OUT=$SCRIPT_DIR /.scala
7
- mkdir $OUT
9
+
10
+ mkdir -p $OUT
11
+ rm -f $OUT /failures.txt
12
+
13
+ tty && TTY_OPS=" -it"
14
+
15
+ columns=70
16
+ rows=20
17
+ no_record=
18
+ no_build=
19
+ no_gifs=
20
+ no_svgs=
8
21
9
22
for name in " $@ "
10
23
do
11
- echo processing $name
12
- svg_render_mappings=" -v $SCRIPT_DIR /../website/static/img:/data -v $OUT /.scala:/out"
13
- svg_render_ops=" --in /out/$name .cast --width 70 --height 20 --term iterm2 --padding 20"
14
- echo " start" &&
15
- docker build gifs --tag gif-renderer &&
16
- docker build gifs/svg_render/ --tag svg_rendrer &&
17
- # generate termnail session
18
- docker run --rm -it -v $OUT /.scala:/out gif-renderer generate_gif.sh $name &&
19
- # render svgs
20
- docker run --rm $svg_render_mappings svg_rendrer a $svg_render_ops --out /data/$name .svg --profile " /profiles/light" &&
21
- docker run --rm $svg_render_mappings svg_rendrer a $svg_render_ops --out /data/dark/$name .svg --profile " /profiles/dark" &&
24
+
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
22
100
echo " done"
23
- done
101
+ fi
102
+ done
103
+
104
+ failures=
105
+ test -f " $OUT /failures.txt" && failures=$( cat " $OUT /failures.txt" )
106
+
107
+ if [ -n " $failures " ]; then
108
+ echo " Scenarios failed:" &&
109
+ echo " $failures " &&
110
+ exit 1
111
+ else
112
+ echo " All scenarios succeded!"
113
+ fi
0 commit comments