forked from loafle/openapi-generator-original
merged
This commit is contained in:
commit
8fa2ef8ec2
@ -1,3 +1,4 @@
|
||||
.git/
|
||||
*.iml
|
||||
out/
|
||||
*.ipr
|
||||
@ -13,35 +14,13 @@ generated-sources/*
|
||||
generated-code/*
|
||||
*.swp
|
||||
*.swo
|
||||
|
||||
/target
|
||||
/generated-files
|
||||
/nbactions.xml
|
||||
*.pyc
|
||||
__pycache__
|
||||
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
|
||||
*.bak
|
||||
project/
|
||||
samples/*
|
||||
target/
|
||||
.idea/
|
||||
.lib/
|
||||
.DS_Store
|
||||
|
||||
samples/client/petstore/php/SwaggerClient-php/composer.lock
|
||||
samples/client/petstore/php/SwaggerClient-php/vendor/
|
||||
|
||||
samples/client/petstore/silex/SwaggerServer/composer.lock
|
||||
samples/client/petstore/silex/SwaggerServer/venodr/
|
||||
# Not needed in a linux container
|
||||
bin/windows/*
|
||||
|
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
|
||||
VOLUME /src
|
||||
VOLUME /root/.m2/repository
|
||||
RUN set -x && \
|
||||
apk add --no-cache bash
|
||||
|
||||
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
|
||||
```
|
||||
|
||||
### 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
|
||||
#### 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
|
||||
@ -119,7 +134,17 @@ cd swagger-codegen
|
||||
./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
|
||||
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
|
||||
```
|
||||
|
||||
#### Public Docker image
|
||||
#### Public Pre-built Docker images
|
||||
|
||||
- https://hub.docker.com/r/swaggerapi/swagger-generator/ (official)
|
||||
- https://hub.docker.com/r/jimschubert/swagger-codegen-cli/ (unofficial)
|
||||
- https://hub.docker.com/r/swaggerapi/swagger-generator/ (official web service)
|
||||
- https://hub.docker.com/r/swaggerapi/swagger-codegen-cli/ (official CLI)
|
||||
=======
|
||||
|
||||
### Homebrew
|
||||
To install, run `brew install swagger-codegen`
|
||||
##### Swagger Generator Docker Image
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
COPY target/lib/jetty-runner* /generator/jetty-runner.jar
|
||||
COPY target/*.war /generator/swagger-generator.war
|
||||
|
||||
ENV GENERATOR_HOST=https://generator.swaggerhub.com/api/swagger.json
|
||||
RUN apt-get update
|
||||
|
||||
EXPOSE 8080
|
||||
|
||||
CMD ["java", "-jar", "/generator/jetty-runner.jar", "/generator/swagger-generator.war"]
|
||||
|
||||
|
@ -1,34 +1,16 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
cd "$(dirname $BASH_SOURCE)"
|
||||
set -exo pipefail
|
||||
|
||||
maven_cache_repo="$HOME/.m2/repository"
|
||||
myname="$(basename $BASH_SOURCE)"
|
||||
cd "$(dirname ${BASH_SOURCE})"
|
||||
|
||||
if [ "$1" = "mvn" ]; then
|
||||
cmd="$1"
|
||||
shift
|
||||
args="$@"
|
||||
else
|
||||
jar="modules/swagger-codegen-cli/target/swagger-codegen-cli.jar"
|
||||
maven_cache_repo="${HOME}/.m2/repository"
|
||||
|
||||
# Check if project is built
|
||||
if [ ! -f "$jar" ]; then
|
||||
echo "ERROR File not found: $jar"
|
||||
echo "ERROR Did you forget to './$myname mvn package'?"
|
||||
exit 1
|
||||
fi
|
||||
mkdir -p "${maven_cache_repo}"
|
||||
|
||||
cmd="java -jar /gen/$jar"
|
||||
args="$@"
|
||||
fi
|
||||
|
||||
mkdir -p "$maven_cache_repo"
|
||||
|
||||
set -x
|
||||
|
||||
docker run -it \
|
||||
docker run --rm -it \
|
||||
-w /gen \
|
||||
-e GEN_DIR=/gen \
|
||||
-v "${PWD}:/gen" \
|
||||
-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