An SBT plugin for adding clients and servers generated by guardrail to your service.
Check out the docs
addSbtPlugin("dev.guardrail" % "sbt-guardrail" % "<Please use the latest available release!>")
/* Available arguments:
specPath: java.io.File
pkg: String
dto: String
framework: String
modules: List[String]
tracing: Boolean
imports: List[String]
encodeOptionalAs: Option[CodingConfig]
decodeOptionalAs: Option[CodingConfig]
*/
guardrailTasks in Compile := List(
ScalaClient(file("petstore.yaml")),
ScalaClient(file("github.yaml"), pkg="com.example.clients.github"),
ScalaClient(file("github.yaml"), pkg="com.example.clients.github",
encodeOptionalAs = codingOptional,
decodeOptionalAs = codingRequiredNullable),
ScalaServer(file("myserver.yaml"), pkg="com.example.server", tracing=true),
ScalaModels(file("myserver.yaml"), pkg="com.example.models"),
JavaClient(file("github.yaml"), pkg="com.example.clients.github")
...
)
Alternatively use the guardrailDiscoveredOpenApiFiles
setting to automatically discover OpenAPI spec files under src/main/openapi
or src/test/openapi
(see the test for full example):
Compile / guardrailTasks := (Compile / guardrailDiscoveredOpenApiFiles).value.flatMap { openApiFile =>
List(
ScalaClient(openApiFile.file, pkg = openApiFile.pkg, framework = "http4s"),
ScalaServer(openApiFile.file, pkg = openApiFile.pkg, framework = "http4s")
)
}