Skip to content

Commit

Permalink
Merge branch 'master' into aspnetcore_samples
Browse files Browse the repository at this point in the history
  • Loading branch information
frantuma committed May 15, 2020
2 parents c86f03a + 77ab9e2 commit 15523ac
Show file tree
Hide file tree
Showing 7 changed files with 121 additions and 1 deletion.
7 changes: 6 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,7 @@ To build from source, you need the following installed and available in your `$P
* [Apache maven 3.3.3 or greater](http://maven.apache.org/)

#### OS X Users
Don't forget to install Java 8+.
Don't forget to install Java 8+.

Export `JAVA_HOME` in order to use the supported Java version:
```sh
Expand Down Expand Up @@ -259,6 +259,9 @@ Once built, `run-in-docker.sh` will act as an executable for swagger-codegen-cli
./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
```
#### Standalone generator Development in docker

See [standalone generator development](https://github.com/swagger-api/swagger-codegen/blob/master/standalone-gen-dev/standalone-generator-development.md)

#### Run Docker in Vagrant
Prerequisite: install [Vagrant](https://www.vagrantup.com/downloads.html) and [VirtualBox](https://www.virtualbox.org/wiki/Downloads).
Expand Down Expand Up @@ -458,6 +461,8 @@ java -cp output/myLibrary/target/myClientCodegen-swagger-codegen-1.0.0.jar:modul
-o myClient
```

See also [standalone generator development](https://github.com/swagger-api/swagger-codegen/blob/master/standalone-gen-dev/standalone-generator-development.md)

### Where is Javascript???
See our [javascript library](http://github.com/swagger-api/swagger-js)--it's completely dynamic and doesn't require
static code generation.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@

# This is a sample supporting file mustache template.
16 changes: 16 additions & 0 deletions standalone-gen-dev/docker-entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#!/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 -Dlogback.configurationFile=conf/logback.xml"}

cli="${GEN_DIR}"
codegen2="${cli}/swagger-codegen-cli.jar"

(cd "${GEN_DIR}" && exec mvn -Duser.home=$(dirname MAVEN_CONFIG) package)
command=$1
shift
exec java ${JAVA_OPTS} -cp "${codegen2}:${GEN_DIR}/target/*" "io.swagger.codegen.SwaggerCodegen" "${command}" "$@"

10 changes: 10 additions & 0 deletions standalone-gen-dev/docker-stub.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#!/bin/sh
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 -Dlogback.configurationFile=conf/logback.xml"}

codegen2="${GEN_DIR}/swagger-codegen-cli.jar"

command=$1
exec java ${JAVA_OPTS} -jar "${codegen2}" "meta" "$@"
11 changes: 11 additions & 0 deletions standalone-gen-dev/generator-stub-docker.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#!/bin/bash
set -exo pipefail

cd "$(dirname ${BASH_SOURCE})"

docker run --rm -it \
-w /gen \
-e GEN_DIR=/gen \
-v "${PWD}:/gen" \
--entrypoint /gen/docker-stub.sh \
openjdk:8-jre-alpine "$@"
18 changes: 18 additions & 0 deletions standalone-gen-dev/run-in-docker.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#!/bin/bash
set -exo pipefail

cd "$(dirname ${BASH_SOURCE})"

maven_cache_repo="${HOME}/.m2/repository"

mkdir -p "${maven_cache_repo}"

docker run --rm -it \
-w /gen \
-e GEN_DIR=/gen \
-e MAVEN_CONFIG=/var/maven/.m2 \
-u "$(id -u):$(id -g)" \
-v "${PWD}:/gen" \
-v "${maven_cache_repo}:/var/maven/.m2/repository" \
--entrypoint /gen/docker-entrypoint.sh \
maven:3-jdk-8 "$@"
58 changes: 58 additions & 0 deletions standalone-gen-dev/standalone-generator-development.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
### Swagger Codegen 2.x Standalone generator development (separate project/repo)

As described in [Readme](https://github.com/swagger-api/swagger-codegen/tree/master#making-your-own-codegen-modules),
a new generator can be implemented by starting with a project stub generated by the `meta` command of `swagger-codegen-cli`.

This can be achieved without needing to clone the `swagger-codegen` repo, by downloading and running the jar, e.g.:

```
wget https://repo1.maven.org/maven2/io/swagger/swagger-codegen-cli/2.4.13/swagger-codegen-cli-2.4.13.jar -O swagger-codegen-cli.jar
java -jar swagger-codegen-cli.jar meta -o output/myLibrary -n myClientCodegen -p com.my.company.codegen
```

Such generator can be then made available to the CLI by adding it to the classpath, allowing to run/test it via the command line CLI,
add it to the build pipeline and so on, as mentioned in [Readme](https://github.com/swagger-api/swagger-codegen/tree/master#making-your-own-codegen-modules).


#### Development in docker

Similar to what mentioned in Readme [development in docker section](https://github.com/swagger-api/swagger-codegen/tree/master#development-in-docker), a standalone generator can be built and run in docker, without need of a java/maven environment on the local machine.

Generate the initial project:

```bash

# project dir
TARGET_DIR=/tmp/codegen/mygenerator
mkdir -p $TARGET_DIR
cd $TARGET_DIR
# generated code location
GENERATED_CODE_DIR=generated
mkdir -p $GENERATED_CODE_DIR
# download desired version
wget https://repo1.maven.org/maven2/io/swagger/swagger-codegen-cli/2.4.13/swagger-codegen-cli-2.4.13.jar -O swagger-codegen-cli.jar
wget https://raw.githubusercontent.com/swagger-api/swagger-codegen/master/standalone-gen-dev/docker-stub.sh -O docker-stub.sh
wget https://raw.githubusercontent.com/swagger-api/swagger-codegen/master/standalone-gen-dev/generator-stub-docker.sh -O generator-stub-docker.sh
chmod +x *.sh
# generated initial stub: -p <root package> -n <generator name>
./generator-stub-docker.sh -p io.swagger.codegen.custom -n custom

```

A test definition if we don't have one:

```bash
wget https://raw.githubusercontent.com/swagger-api/swagger-codegen/master/modules/swagger-codegen/src/test/resources/2_0/petstore.yaml -O petstore.yaml
```


Build the generator and run it against a definition (first time will be slower as it needs to download deps)

```bash
wget https://raw.githubusercontent.com/swagger-api/swagger-codegen/master/standalone-gen-dev/run-in-docker.sh -O run-in-docker.sh
wget https://raw.githubusercontent.com/swagger-api/swagger-codegen/master/standalone-gen-dev/docker-entrypoint.sh -O docker-entrypoint.sh
chmod +x *.sh
./run-in-docker.sh generate -i petstore.yaml -l custom -o /gen/$GENERATED_CODE_DIR
```


0 comments on commit 15523ac

Please sign in to comment.