-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathgenerate_clients.sh
executable file
·121 lines (88 loc) · 3.4 KB
/
generate_clients.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
#!/bin/bash
# Copyright (c) 2017 Public Library of Science
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.
set -x
CODEGEN=$HOME/applications/swagger-codegen/modules/swagger-codegen-cli/target/swagger-codegen-cli.jar
# CODEGEN=swagger-codegen-cli.jar
SERVICE=http://localhost:8080/v1
SWAGGER=$SERVICE/swagger.json
CONFIG=$SERVICE/service/config
if [[ -n "$1" ]]; then
CODEGEN=$1
# else
#
# if [ ! -f "$CODEGEN" ]; then
# wget http://repo1.maven.org/maven2/io/swagger/swagger-codegen-cli/2.1.5/swagger-codegen-cli-2.1.5.jar -O swagger-codegen-cli.jar
# fi
fi
if [[ -n "$2" ]]; then
SERVICE=$2
fi
# exit if there is an error
set -e
VERSION=$(echo "import json, requests; print(requests.get('${CONFIG}').json()['version'].split(' ')[0])" | python2)
GENERATE="java -jar $CODEGEN generate"
echo "VERSION: $VERSION"
# JSON SWAGGER SPEC
$GENERATE -i $SWAGGER -l swagger -o ./swagger
# STATIC HTML DOC
# $GENERATE -i $SWAGGER -l html -o ./html
# PYTHON
echo '{
"packageName": "ned_client",
"packageVersion": "'${VERSION}'"
}' > ned_python.json
# $GENERATE -i $SWAGGER -l python -o ./python -c ned_python.json
# RUBY
echo '{
"gemName": "ned_client",
"moduleName": "NedClient",
"gemVersion": "'$(echo ${VERSION}|sed 's/\-/\./')'"
}' > ned_ruby.json
# $GENERATE -i $SWAGGER -l ruby -o ./ruby -c ned_ruby.json \
# && cd ruby && rm *.gem && gem build ned_client.gemspec && cd ..
# JAVA
echo '{
"groupId": "org.plos",
"artifactId": "ned-client",
"apiPackage": "org.plos.ned_client.api",
"modelPackage": "org.plos.ned_client.model",
"invokerPackage": "org.plos.ned_client",
"artifactVersion": "'${VERSION}'"
}' > ned_java.json
# to generate LocalDate objects use "dateLibrary": "java8" in above json
# cant use yet: https://github.com/swagger-api/swagger-codegen/issues/2377
echo 'mvn deploy:deploy-file \
-DpomFile="pom.xml" \
-DgroupId="org.plos" \
-Dversion="'${VERSION}'" \
-DartifactId="ned-client" \
-Dpackaging=jar \
-Dfile="../java/target/ned-client-'${VERSION}'.jar" \
-DrepositoryId=ambra \
-Durl=sftp://maven.ambraproject.org/home/maven2/repository/release
' > java_deploy/deploy.sh
$GENERATE -i $SWAGGER -l java \
-o ./java -t ./templates/Java \
--import-mappings Group=org.plos.ned_client.model.Group,Relationship=org.plos.ned_client.model.Relationship \
-c ned_java.json \
&& cd java && mvn clean install && cd ..
# Run a quick test
# PYTHONPATH=python python sample.py