Skip to content

Instantly share code, notes, and snippets.

@OlegYch
Created June 13, 2019 19:03
Show Gist options
  • Save OlegYch/2a398dbec92ed4b036d5ee3b46d5af39 to your computer and use it in GitHub Desktop.
Save OlegYch/2a398dbec92ed4b036d5ee3b46d5af39 to your computer and use it in GitHub Desktop.
val swaggerTarget = settingKey[File]("")
swaggerTarget := crossTarget.value / "swagger"
Compile / sourceGenerators += Def.task {
import scala.collection.JavaConverters._
val templateDir = swaggerTarget.value
templateDir.mkdirs()
val c = new _root_.io.swagger.codegen.config.CodegenConfigurator()
.setLang("io.swagger.codegen.languages.ScalaClientCodegen")
.setModelPackage("com.acme.swagger")
.setOutputDir(templateDir.absolutePath)
.setTypeMappings(Map("Integer" -> "Int", "Date" -> "Instant", "Number" -> "BigDecimal").asJava)
.setImportMappings(Map("java.util.Date" -> (null: String)).asJava)
.setInputSpec(((Compile / sourceDirectory).value / "swagger" / "identitymind.json").absolutePath)
val g = new _root_.io.swagger.codegen.DefaultGenerator()
g.setGeneratorPropertyDefault("models", "true")
g.setGeneratorPropertyDefault("apis", "false")
g.setGeneratorPropertyDefault("supportingFiles", "false")
g.opts(c.toClientOptInput).generate().asScala
}
Compile / managedSourceDirectories += swaggerTarget.value / "src" / "main" / "scala"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment