/
run_development_cycle.sh
executable file
·197 lines (166 loc) · 5.53 KB
/
run_development_cycle.sh
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
#!/bin/bash
# Copyright 2017-2018 Vincent Jacques <vincent@vincent-jacques.net>
# GENI: prologue
# GENERATED SECTION, MANUAL EDITS WILL BE LOST
set -o errexit -o pipefail
IFS=$'\n\t'
PROJECT_ROOT=$(pwd)
SHOW_IN_BROWSER=false
function show_in_browser {
echo
echo "$1: $PROJECT_ROOT/$2"
echo
if $SHOW_IN_BROWSER
then
python -m webbrowser -t file://$PROJECT_ROOT/$2
fi
}
DO_OPAM_INSTALL=true
DO_OPAM_REMOVE=true
DO_OPAM_UPGRADE=true
while [[ "$#" > 0 ]]
do
case $1 in
-wb|--web-browser)
SHOW_IN_BROWSER=true
;;
--skip-opam-install)
DO_OPAM_INSTALL=false
;;
--skip-opam-remove)
DO_OPAM_REMOVE=false
;;
--skip-opam-upgrade)
DO_OPAM_UPGRADE=false
;;
-q|--quick)
DO_OPAM_INSTALL=false
DO_OPAM_REMOVE=false
DO_OPAM_UPGRADE=false
;;
*)
echo "Unknown parameter passed: $1"
exit 1;;
esac
shift
done
function opam_switch {
eval `opam config env --switch=$1 --set-switch`
}
function dune_ {
SWITCH=$1
shift
FLAVOR=$1
shift
opam_switch $SWITCH
rm -rf _build
DIRECTORY=_builds/$SWITCH/$FLAVOR
mkdir -p $DIRECTORY
ln -sf $DIRECTORY _build
for gen in $(find . -name dune.py)
do
$gen $FLAVOR >${gen%.py}
done
find $DIRECTORY -name "*.sentinel" -delete
dune "$@"
rm -rf _build
for gen in $(find . -name dune.py)
do
echo "; THIS FILE IS GENERATED by ./dune.py" >${gen%.py}
echo "; MANUAL CHANGES WILL BE LOST" >>${gen%.py}
echo "" >>${gen%.py}
$gen publish >>${gen%.py}
done
}
# END OF GENERATED SECTION
# GENI: install_dependencies
# GENERATED SECTION, MANUAL EDITS WILL BE LOST
DEV_WITH_OLDEST_VERSIONS=4.02.3.JsOfOCairo.dev_with_oldest_versions
if ! opam switch list --short | grep "^$DEV_WITH_OLDEST_VERSIONS$" >/dev/null
then
opam switch create $DEV_WITH_OLDEST_VERSIONS 4.02.3 --no-switch
fi
opam_switch $DEV_WITH_OLDEST_VERSIONS
opam install --yes General.0.6.0 bisect-summary bisect_ppx cairo2.0.6 conf-npm dune.1.1.1 js_of_ocaml-compiler.3.0 js_of_ocaml-ppx.3.0 js_of_ocaml.3.0
DEV_WITH_NEWEST_VERSIONS=4.07.1.JsOfOCairo.dev_with_newest_versions
if ! opam switch list --short | grep "^$DEV_WITH_NEWEST_VERSIONS$" >/dev/null
then
opam switch create $DEV_WITH_NEWEST_VERSIONS 4.07.1 --no-switch
fi
opam_switch $DEV_WITH_NEWEST_VERSIONS
opam install --yes General cairo2 conf-npm dune js_of_ocaml js_of_ocaml-compiler js_of_ocaml-ppx
if $DO_OPAM_UPGRADE; then opam upgrade --yes; fi
# END OF GENERATED SECTION
# GENI: run_tests
# GENERATED SECTION, MANUAL EDITS WILL BE LOST
find _builds -name "*.sentinel" -delete
opam_switch $DEV_WITH_OLDEST_VERSIONS
dune_ $DEV_WITH_OLDEST_VERSIONS coverage build @runtest-full
echo
bisect-summary _builds/$DEV_WITH_OLDEST_VERSIONS/coverage/default/*/bisect????.out
bisect-ppx-report -I _builds/$DEV_WITH_OLDEST_VERSIONS/coverage/default -html _builds/$DEV_WITH_OLDEST_VERSIONS/coverage/default/bisect _builds/$DEV_WITH_OLDEST_VERSIONS/coverage/default/*/bisect????.out
show_in_browser "See coverage report" _builds/$DEV_WITH_OLDEST_VERSIONS/coverage/default/bisect/index.html
opam_switch $DEV_WITH_NEWEST_VERSIONS
dune_ $DEV_WITH_NEWEST_VERSIONS debug build @runtest-full
# END OF GENERATED SECTION
rm -f docs/*
touch docs/.nojekyll
cp _builds/$DEV_WITH_NEWEST_VERSIONS/debug/default/tst/Tests/Drawing/Cairo/*.png docs
cp _builds/$DEV_WITH_NEWEST_VERSIONS/debug/default/tst/Tests/Limitations/*.png docs
cp _builds/$DEV_WITH_NEWEST_VERSIONS/debug/default/tst/Tests/Limitations/*.txt docs
cp _builds/$DEV_WITH_NEWEST_VERSIONS/debug/default/tst/tests_in_browser.html docs/index.html
sed "s|Tests/Drawing/Cairo/||g; s|Tests/Limitations/||g" _builds/$DEV_WITH_NEWEST_VERSIONS/debug/default/tst/tests_in_browser.bc.js > docs/tests_in_browser.bc.js
cp _builds/$DEV_WITH_NEWEST_VERSIONS/debug/default/tst/pixelmatch.js docs
show_in_browser "Tests in browser" docs/index.html
# GENI: check_code
# GENERATED SECTION, MANUAL EDITS WILL BE LOST
# END OF GENERATED SECTION
# GENI: documentation
# GENERATED SECTION, MANUAL EDITS WILL BE LOST
# END OF GENERATED SECTION
# GENI: install
# GENERATED SECTION, MANUAL EDITS WILL BE LOST
if $DO_OPAM_INSTALL
then
if ! opam switch list --short | grep "^4.07.1.JsOfOCairo.pin_on_newest_ocaml$" >/dev/null
then
opam switch create 4.07.1.JsOfOCairo.pin_on_newest_ocaml 4.07.1 --no-switch
fi
opam_switch 4.07.1.JsOfOCairo.pin_on_newest_ocaml
if $DO_OPAM_REMOVE
then
opam remove --yes --auto-remove $(opam list --short --installed-roots | grep -v -e "^ocaml-base-compiler$")
opam pin list --short | grep "." && opam pin remove $(opam pin list --short)
fi
opam pin --yes --no-action add --kind=path .
opam remove --yes JsOfOCairo
opam install --yes JsOfOCairo --deps-only
opam install --yes JsOfOCairo --build-test
if ! opam switch list --short | grep "^4.02.3.JsOfOCairo.pin_on_oldest_ocaml$" >/dev/null
then
opam switch create 4.02.3.JsOfOCairo.pin_on_oldest_ocaml 4.02.3 --no-switch
fi
opam_switch 4.02.3.JsOfOCairo.pin_on_oldest_ocaml
if $DO_OPAM_REMOVE
then
opam remove --yes --auto-remove $(opam list --short --installed-roots | grep -v -e "^ocaml-base-compiler$")
opam pin list --short | grep "." && opam pin remove $(opam pin list --short)
fi
opam pin --yes --no-action add --kind=path .
opam remove --yes JsOfOCairo
opam install --yes JsOfOCairo --deps-only
opam install --yes JsOfOCairo --build-test
fi
# END OF GENERATED SECTION
if $DO_OPAM_INSTALL
then
cd demo
./demo.sh
cd ..
echo
fi
# GENI: epilogue
# GENERATED SECTION, MANUAL EDITS WILL BE LOST
echo
echo "Development cycle OK"
# END OF GENERATED SECTION