forked from loafle/openapi-generator-original
merged
This commit is contained in:
commit
8fa2ef8ec2
@ -1,3 +1,4 @@
|
|||||||
|
.git/
|
||||||
*.iml
|
*.iml
|
||||||
out/
|
out/
|
||||||
*.ipr
|
*.ipr
|
||||||
@ -13,35 +14,13 @@ generated-sources/*
|
|||||||
generated-code/*
|
generated-code/*
|
||||||
*.swp
|
*.swp
|
||||||
*.swo
|
*.swo
|
||||||
|
*.bak
|
||||||
/target
|
project/
|
||||||
/generated-files
|
samples/*
|
||||||
/nbactions.xml
|
target/
|
||||||
*.pyc
|
.idea/
|
||||||
__pycache__
|
.lib/
|
||||||
samples/server-generator/scalatra/output
|
|
||||||
samples/server-generator/node/output/node_modules
|
|
||||||
samples/server-generator/scalatra/target
|
|
||||||
samples/server-generator/scalatra/output/.history
|
|
||||||
samples/client/petstore/qt5cpp/PetStore/moc_*
|
|
||||||
samples/client/petstore/qt5cpp/PetStore/*.o
|
|
||||||
samples/client/petstore/objc/PetstoreClient.xcworkspace/xcuserdata
|
|
||||||
samples/client/petstore/qt5cpp/build-*
|
|
||||||
samples/client/petstore/qt5cpp/PetStore/PetStore
|
|
||||||
samples/client/petstore/qt5cpp/PetStore/Makefile
|
|
||||||
samples/client/petstore/java/hello.txt
|
|
||||||
samples/client/petstore/android/default/hello.txt
|
|
||||||
samples/client/petstore/objc/Build
|
|
||||||
samples/client/petstore/objc/Pods
|
|
||||||
samples/server/petstore/nodejs/node_modules
|
|
||||||
target
|
|
||||||
.idea
|
|
||||||
.lib
|
|
||||||
atlassian-ide-plugin.xml
|
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
|
||||||
samples/client/petstore/php/SwaggerClient-php/composer.lock
|
# Not needed in a linux container
|
||||||
samples/client/petstore/php/SwaggerClient-php/vendor/
|
bin/windows/*
|
||||||
|
|
||||||
samples/client/petstore/silex/SwaggerServer/composer.lock
|
|
||||||
samples/client/petstore/silex/SwaggerServer/venodr/
|
|
||||||
|
24
Dockerfile
24
Dockerfile
@ -1,14 +1,22 @@
|
|||||||
|
FROM jimschubert/8-jdk-alpine-mvn:1.0
|
||||||
|
|
||||||
FROM maven:3-jdk-7-alpine
|
ENV GEN_DIR /opt/swagger-codegen
|
||||||
|
|
||||||
WORKDIR /src
|
RUN set -x && \
|
||||||
VOLUME /src
|
apk add --no-cache bash
|
||||||
VOLUME /root/.m2/repository
|
|
||||||
|
|
||||||
ADD . /opt/swagger-codegen
|
RUN mkdir /opt
|
||||||
|
|
||||||
RUN cd /opt/swagger-codegen && mvn package
|
ADD . ${GEN_DIR}
|
||||||
|
|
||||||
ENTRYPOINT ["java", "-jar", "/opt/swagger-codegen/modules/swagger-codegen-cli/target/swagger-codegen-cli.jar"]
|
VOLUME ${MAVEN_HOME}/.m2/repository
|
||||||
|
|
||||||
CMD ["help"]
|
WORKDIR ${GEN_DIR}
|
||||||
|
|
||||||
|
RUN mvn -am -pl "modules/swagger-codegen-cli" package
|
||||||
|
|
||||||
|
COPY docker-entrypoint.sh /usr/local/bin/
|
||||||
|
|
||||||
|
ENTRYPOINT ["docker-entrypoint.sh"]
|
||||||
|
|
||||||
|
CMD ["build"]
|
||||||
|
77
README.md
77
README.md
@ -110,8 +110,23 @@ After cloning the project, you can build it from source with this command:
|
|||||||
mvn clean package
|
mvn clean package
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Homebrew
|
||||||
|
|
||||||
|
To install, run `brew install swagger-codegen`
|
||||||
|
|
||||||
|
Here is an example usage:
|
||||||
|
```
|
||||||
|
swagger-codegen generate -i http://petstore.swagger.io/v2/swagger.json -l ruby -o /tmp/test/
|
||||||
|
```
|
||||||
|
|
||||||
### Docker
|
### Docker
|
||||||
#### Build and run using docker
|
|
||||||
|
#### Development in docker
|
||||||
|
|
||||||
|
You can use `run-in-docker.sh` to do all development. This script maps your local repository to `/gen`
|
||||||
|
in the docker container. It also maps `~/.m2/repository` to the appropriate container location.
|
||||||
|
|
||||||
|
To execute `mvn package`:
|
||||||
|
|
||||||
```
|
```
|
||||||
git clone https://github.com/swagger-api/swagger-codegen
|
git clone https://github.com/swagger-api/swagger-codegen
|
||||||
@ -119,7 +134,17 @@ cd swagger-codegen
|
|||||||
./run-in-docker.sh mvn package
|
./run-in-docker.sh mvn package
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Build artifacts are now accessible in your working directory.
|
||||||
|
|
||||||
|
Once built, `run-in-docker.sh` will act as an executable for swagger-codegen-cli. To generate code, you'll need to output to a directory under `/gen` (e.g. `/gen/out`). For example:
|
||||||
|
|
||||||
|
```
|
||||||
|
./run-in-docker.sh help # Executes 'help' command for swagger-codegen-cli
|
||||||
|
./run-in-docker.sh langs # Executes 'langs' command for swagger-codegen-cli
|
||||||
|
./run-in-docker.sh /gen/bin/go-petstore.sh # Builds the Go client
|
||||||
|
./run-in-docker.sh generate -i modules/swagger-codegen/src/test/resources/2_0/petstore.yaml \
|
||||||
|
-l go -o /gen/out/go-petstore -DpackageName=petstore # generates go client, outputs locally to ./out/go-petstore
|
||||||
|
```
|
||||||
|
|
||||||
#### Run Docker in Vagrant
|
#### Run Docker in Vagrant
|
||||||
Prerequisite: install [Vagrant](https://www.vagrantup.com/downloads.html) and [VirtualBox](https://www.virtualbox.org/wiki/Downloads).
|
Prerequisite: install [Vagrant](https://www.vagrantup.com/downloads.html) and [VirtualBox](https://www.virtualbox.org/wiki/Downloads).
|
||||||
@ -132,18 +157,54 @@ cd /vagrant
|
|||||||
./run-in-docker.sh mvn package
|
./run-in-docker.sh mvn package
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Public Docker image
|
#### Public Pre-built Docker images
|
||||||
|
|
||||||
- https://hub.docker.com/r/swaggerapi/swagger-generator/ (official)
|
- https://hub.docker.com/r/swaggerapi/swagger-generator/ (official web service)
|
||||||
- https://hub.docker.com/r/jimschubert/swagger-codegen-cli/ (unofficial)
|
- https://hub.docker.com/r/swaggerapi/swagger-codegen-cli/ (official CLI)
|
||||||
|
=======
|
||||||
|
|
||||||
### Homebrew
|
##### Swagger Generator Docker Image
|
||||||
To install, run `brew install swagger-codegen`
|
|
||||||
|
The Swagger Generator image can act as a self-hosted web application and API for generating code. This container can be incorporated into a CI pipeline, and requires at least two HTTP requests and some docker orchestration to access generated code.
|
||||||
|
|
||||||
|
Example usage (note this assumes `jq` is installed for command line processing of JSON):
|
||||||
|
|
||||||
Here is an example usage:
|
|
||||||
```
|
```
|
||||||
swagger-codegen generate -i http://petstore.swagger.io/v2/swagger.json -l ruby -o /tmp/test/
|
# Start container and save the container id
|
||||||
|
CID=$(docker run -d swaggerapi/swagger-generator)
|
||||||
|
# allow for startup
|
||||||
|
sleep 5
|
||||||
|
# Get the IP of the running container
|
||||||
|
GEN_IP=$(docker inspect --format '{{.NetworkSettings.IPAddress}}' $CID)
|
||||||
|
# Execute an HTTP request and store the download link
|
||||||
|
RESULT=$(curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{
|
||||||
|
"swaggerUrl": "http://petstore.swagger.io/v2/swagger.json"
|
||||||
|
}' 'http://localhost:8188/api/gen/clients/javascript' | jq '.link' | tr -d '"')
|
||||||
|
# Download the generated zip and redirect to a file
|
||||||
|
curl $RESULT > result.zip
|
||||||
|
# Shutdown the swagger generator image
|
||||||
|
docker stop $CID && docker rm $CID
|
||||||
```
|
```
|
||||||
|
|
||||||
|
In the example above, `result.zip` will contain the generated client.
|
||||||
|
|
||||||
|
##### Swagger Codegen Docker Image
|
||||||
|
|
||||||
|
The Swagger Codegen image acts as a standalone executable. It can be used as an alternative to installing via homebrew, or for developers who are unable to install Java or upgrade the installed version.
|
||||||
|
|
||||||
|
To generate code with this image, you'll need to mount a local location as a volume.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
```
|
||||||
|
docker run --rm -v ${PWD}:/local swagger-api/swagger-codegen generate \
|
||||||
|
-i http://petstore.swagger.io/v2/swagger.json \
|
||||||
|
-l go \
|
||||||
|
-o /local/out/go
|
||||||
|
```
|
||||||
|
|
||||||
|
The generated code will be located under `./out/go` in the current directory.
|
||||||
|
|
||||||
## Getting Started
|
## Getting Started
|
||||||
|
|
||||||
To generate a PHP client for http://petstore.swagger.io/v2/swagger.json, please run the following
|
To generate a PHP client for http://petstore.swagger.io/v2/swagger.json, please run the following
|
||||||
|
24
docker-entrypoint.sh
Executable file
24
docker-entrypoint.sh
Executable file
@ -0,0 +1,24 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# GEN_DIR allows to share the entrypoint between Dockerfile and run-in-docker.sh (backward compatible)
|
||||||
|
GEN_DIR=${GEN_DIR:-/opt/swagger-codegen}
|
||||||
|
JAVA_OPTS=${JAVA_OPTS:-"-Xmx1024M -DloggerPath=conf/log4j.properties"}
|
||||||
|
|
||||||
|
codegen="${GEN_DIR}/modules/swagger-codegen-cli/target/swagger-codegen-cli.jar"
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
generate|help|langs|meta|config-help)
|
||||||
|
# If ${GEN_DIR} has been mapped elsewhere from default, and that location has not been built
|
||||||
|
if [[ ! -f "${codegen}" ]]; then
|
||||||
|
(cd ${GEN_DIR} && exec mvn -am -pl "modules/swagger-codegen-cli" package)
|
||||||
|
fi
|
||||||
|
command=$1
|
||||||
|
shift
|
||||||
|
exec java ${JAVA_OPTS} -jar ${codegen} ${command} "$@"
|
||||||
|
;;
|
||||||
|
*) # Any other commands, e.g. docker run imagename ls -la or docker run -it imagename /bin/bash
|
||||||
|
exec "$@"
|
||||||
|
;;
|
||||||
|
esac
|
7
modules/swagger-codegen-cli/Dockerfile
Normal file
7
modules/swagger-codegen-cli/Dockerfile
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
FROM java:8-jre-alpine
|
||||||
|
|
||||||
|
ADD target/swagger-codegen-cli.jar /opt/swagger-codegen-cli/swagger-codegen-cli.jar
|
||||||
|
|
||||||
|
ENTRYPOINT ["java", "-jar", "/opt/swagger-codegen-cli/swagger-codegen-cli.jar"]
|
||||||
|
|
||||||
|
CMD ["help"]
|
@ -1,12 +1,13 @@
|
|||||||
FROM java:8-jdk
|
FROM java:8-jre-alpine
|
||||||
|
|
||||||
WORKDIR /generator
|
WORKDIR /generator
|
||||||
|
|
||||||
COPY target/lib/jetty-runner* /generator/jetty-runner.jar
|
COPY target/lib/jetty-runner* /generator/jetty-runner.jar
|
||||||
COPY target/*.war /generator/swagger-generator.war
|
COPY target/*.war /generator/swagger-generator.war
|
||||||
|
|
||||||
ENV GENERATOR_HOST=https://generator.swaggerhub.com/api/swagger.json
|
ENV GENERATOR_HOST=https://generator.swaggerhub.com/api/swagger.json
|
||||||
RUN apt-get update
|
|
||||||
|
|
||||||
EXPOSE 8080
|
EXPOSE 8080
|
||||||
|
|
||||||
CMD ["java", "-jar", "/generator/jetty-runner.jar", "/generator/swagger-generator.war"]
|
CMD ["java", "-jar", "/generator/jetty-runner.jar", "/generator/swagger-generator.war"]
|
||||||
|
|
||||||
|
@ -1,34 +1,16 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -e
|
set -exo pipefail
|
||||||
cd "$(dirname $BASH_SOURCE)"
|
|
||||||
|
|
||||||
maven_cache_repo="$HOME/.m2/repository"
|
cd "$(dirname ${BASH_SOURCE})"
|
||||||
myname="$(basename $BASH_SOURCE)"
|
|
||||||
|
|
||||||
if [ "$1" = "mvn" ]; then
|
maven_cache_repo="${HOME}/.m2/repository"
|
||||||
cmd="$1"
|
|
||||||
shift
|
|
||||||
args="$@"
|
|
||||||
else
|
|
||||||
jar="modules/swagger-codegen-cli/target/swagger-codegen-cli.jar"
|
|
||||||
|
|
||||||
# Check if project is built
|
mkdir -p "${maven_cache_repo}"
|
||||||
if [ ! -f "$jar" ]; then
|
|
||||||
echo "ERROR File not found: $jar"
|
|
||||||
echo "ERROR Did you forget to './$myname mvn package'?"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
cmd="java -jar /gen/$jar"
|
docker run --rm -it \
|
||||||
args="$@"
|
|
||||||
fi
|
|
||||||
|
|
||||||
mkdir -p "$maven_cache_repo"
|
|
||||||
|
|
||||||
set -x
|
|
||||||
|
|
||||||
docker run -it \
|
|
||||||
-w /gen \
|
-w /gen \
|
||||||
|
-e GEN_DIR=/gen \
|
||||||
-v "${PWD}:/gen" \
|
-v "${PWD}:/gen" \
|
||||||
-v "${maven_cache_repo}:/root/.m2/repository" \
|
-v "${maven_cache_repo}:/root/.m2/repository" \
|
||||||
maven:3-jdk-7 $cmd $args
|
--entrypoint /gen/docker-entrypoint.sh \
|
||||||
|
maven:3-jdk-7 "$@"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user