-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathgenerate-sources.sh
181 lines (155 loc) · 4.43 KB
/
generate-sources.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
#!/bin/bash
#
# Script file for generating sources
#
# Invoke script with:
# ./generate-sources.sh [arg]
# where [arg] can be:
# - all: all sources (Java for Android, Java for Spring, TypeScript for Angular, Markdown for documentation, HTML for documentation) will be generated
# - java: only Java for Android client source code will be generated
# - spring: only Java for Spring server stub will be generated
# - typescript: only TypeScript for Angular client source code will be generated
# - markdown: only Markdown source code for documentation will be generated
# - html: only HTML source code for documentation will be generated
#
#
# Cleanup functions
#
# Cleans Stalker-App source code
clean_java() {
rm -rf generated-sources/java/*
touch generated-sources/java/.gitkeep
}
# Clean Stalker-Backend source code
clean_spring() {
rm -rf generated-sources/spring/*
touch generated-sources/spring/.gitkeep
}
# Cleans Stalker-Admin source code
clean_typescript() {
rm -rf generated-sources/typescript/*
touch generated-sources/typescript/.gitkeep
}
# Cleans Stalker API documentation (Markdown)
clean_markdown() {
rm -rf generated-sources/markdown/*
touch generated-sources/markdown/.gitkeep
}
# Cleans Stalker API documentation (HTML)
clean_html() {
rm -rf generated-sources/html/*
touch generated-sources/html/.gitkeep
}
# Cleans all source code
clean_all() {
$(clean_java)
$(clean_spring)
$(clean_typescript)
$(clean_markdown)
$(clean_html)
}
#
# Generator functions
#
# Generates Stalker-App source code
generate_java() {
$(clean_java)
openapi-generator generate \
--input-spec stalker.yaml \
--generator-name java \
--config openapi-config/java.json \
--output generated-sources/java
}
# Generates Stalker-Backend source code
generate_spring() {
$(clean_spring)
openapi-generator generate \
--input-spec stalker.yaml \
--generator-name spring \
--config openapi-config/spring.json \
--output generated-sources/spring
}
# Generates Stalker-Admin source code
generate_typescript() {
$(clean_typescript)
openapi-generator generate \
--input-spec stalker.yaml \
--generator-name typescript-angular \
--config openapi-config/typescript.json \
--output generated-sources/typescript
}
# Generates Stalker API documentation (Markdown)
generate_markdown() {
$(clean_markdown)
openapi-generator generate \
--input-spec stalker.yaml \
--generator-name markdown \
--output generated-sources/markdown
}
# Generates Stalker API documentation (HTML)
generate_html() {
$(clean_html)
openapi-generator generate \
--input-spec stalker.yaml \
--generator-name html \
--config openapi-config/html.json \
--output generated-sources/html
}
# Generate all
generate_all() {
generate_java
generate_spring
generate_typescript
generate_markdown
generate_html
}
#
# Validation
#
# Validates API specification
validate_specification() {
openapi-generator validate \
--input-spec stalker.yaml
}
# Main shell script
if [ $# -eq 0 ]; then
echo "Usage: ./generate-sources.sh [arg]"
echo "Where [arg] can be:"
echo "- all: all sources (Java for Android, Java for Spring, TypeScript for Angular, Markdown for documentation, HTML for documentation) will be generated"
echo "- java: only Java for Android client source code will be generated"
echo "- spring: only Java for Spring server stub will be generated"
echo "- typescript: only TypeScript for Angular client source code will be generated"
echo "- markdown: only Markdown source code for documentation will be generated"
echo "- html: only HTML source code for documentation will be generated"
echo "- clean: cleans all previously generated source code and generates none"
else
validate_specification
fi
if [ "$1" == "all" ]; then
echo "Generating all source code"
generate_all
fi
if [ "$1" == "java" ]; then
echo "Generating java source code"
generate_java
fi
if [ "$1" == "spring" ]; then
echo "Generating spring source code"
generate_spring
fi
if [ "$1" == "typescript" ]; then
echo "Generating typescript source code"
generate_typescript
fi
if [ "$1" == "markdown" ]; then
echo "Generating markdown source code"
generate_markdown
fi
if [ "$1" == "html" ]; then
echo "Generating html source code"
generate_html
fi
if [ "$1" == "clean" ]; then
echo "Cleaning source code"
clean_all
fi