-
Notifications
You must be signed in to change notification settings - Fork 0
/
gen.sh
executable file
·100 lines (88 loc) · 1.91 KB
/
gen.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
#!/bin/bash
SRC=$(realpath $(cd -P "$(dirname "${BASH_SOURCE[0]}")" && pwd))
TEST=$(basename $SRC)
set -a
source .env
set +a
declare -A DSNS
DSNS+=(
[postgres]="pg://$POSTGRES_USER:$POSTGRES_PASSWORD@$POSTGRES_HOST:$POSTGRES_PORT/$TEST?sslmode=disable"
)
APPLY=0
BUILD=0
DATABASES="postgres"
ARGS=()
OPTIND=1
while getopts "abd:vD" opt; do
case "$opt" in
a) APPLY=1 ;;
b) BUILD=1 ;;
d) DATABASES=$OPTARG ;;
v) ARGS+=(-v) ;;
D) ARGS+=(-D) ;;
esac
done
if [ "$BUILD" = "1" ]; then
pushd $SRC/../../ &>/dev/null
(
set -x
go build
)
popd &>/dev/null
fi
XOBIN=$(which xo)
if [ -e $SRC/../../xo ]; then
XOBIN=$SRC/../../xo
fi
XOBIN=$(realpath $XOBIN)
pushd $SRC &>/dev/null
for TYPE in $DATABASES; do
DB=${DSNS[$TYPE]}
if [ -z "$DB" ]; then
echo "$TYPE has no defined DSN"
exit 1
fi
mkdir -p $TYPE
rm -f $TYPE/*.xo.*
echo "------------------------------------------------------"
echo "$TYPE: $DB"
if [ "$APPLY" = "1" ]; then
if [[ "$TYPE" = "sqlite3" && -f $TEST.db ]]; then
(
set -ex
rm $TEST.db
)
fi
(
set -ex
$SRC/../createdb.sh -d $TYPE -n $TEST
usql -f sql/${TYPE}_schema.sql $DB
)
if [ -f sql/${TYPE}_data.sql ]; then
(
set -ex
usql -f sql/${TYPE}_data.sql $DB
)
fi
fi
(
set -ex
$XOBIN schema $DB -o $TYPE ${ARGS[@]} --go-initialism ISBN
$XOBIN schema $DB -o $TYPE -t createdb ${ARGS[@]} --createdb-fmt=""
$XOBIN schema $DB -o $TYPE -t json ${ARGS[@]}
$XOBIN schema $DB -o $TYPE -t yaml ${ARGS[@]}
$XOBIN schema $DB -o $TYPE -t dot ${ARGS[@]}
$XOBIN query $DB ${ARGS[@]} \
--go-initialism ISBN \
-o $TYPE \
-M \
-B \
-2 \
-T AuthorBookResult \
--type-comment='{{ . }} is the result of a search.' <sql/${TYPE}_query.sql
go build ./$TYPE
go build
./$TEST -dsn $DB ${ARGS[@]}
)
done
popd &>/dev/null