{"id":19834448,"url":"https://github.com/guardrail-dev/guardrail-gradle-plugin","last_synced_at":"2025-05-01T17:31:18.066Z","repository":{"id":37863072,"uuid":"211160211","full_name":"guardrail-dev/guardrail-gradle-plugin","owner":"guardrail-dev","description":"Principled code generation from OpenAPI specifications","archived":false,"fork":false,"pushed_at":"2024-04-19T10:28:14.000Z","size":207,"stargazers_count":4,"open_issues_count":8,"forks_count":4,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-05-07T18:27:52.271Z","etag":null,"topics":["akka-http","codegen","dropwizard","gradle","gradle-plugin","guardrail","http4s","jackson","java","scala","swagger"],"latest_commit_sha":null,"homepage":"https://guardrail.dev","language":"Groovy","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/guardrail-dev.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2019-09-26T18:50:49.000Z","updated_at":"2023-12-06T22:55:39.000Z","dependencies_parsed_at":"2023-12-18T21:19:23.872Z","dependency_job_id":"26682148-fbe5-41b2-b98d-0a404e6cedeb","html_url":"https://github.com/guardrail-dev/guardrail-gradle-plugin","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guardrail-dev%2Fguardrail-gradle-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guardrail-dev%2Fguardrail-gradle-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guardrail-dev%2Fguardrail-gradle-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guardrail-dev%2Fguardrail-gradle-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/guardrail-dev","download_url":"https://codeload.github.com/guardrail-dev/guardrail-gradle-plugin/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224270309,"owners_count":17283649,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["akka-http","codegen","dropwizard","gradle","gradle-plugin","guardrail","http4s","jackson","java","scala","swagger"],"created_at":"2024-11-12T12:04:47.079Z","updated_at":"2024-11-12T12:04:47.666Z","avatar_url":"https://github.com/guardrail-dev.png","language":"Groovy","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Gradle Swagger Generator Plugin [![Build Status](https://github.com/guardrail-dev/guardrail-gradle-plugin/workflows/CI/badge.svg)](https://github.com/guardrail-dev/guardrail-gradle-plugin/actions?query=workflow%3ACI) [![Gradle Status](https://gradleupdate.appspot.com/guardrail-dev/guardrail-gradle-plugin/status.svg)](https://gradleupdate.appspot.com/guardrail-dev/guardrail-gradle-plugin/status)\n\nGradle plugin for [guardrail-dev/guardrail](https://github.com/guardrail-dev/guardrail) code generation.\n\nBased on [int128/gradle-swagger-generator-plugin](https://github.com/int128/gradle-swagger-generator-plugin)\n\nUsage\n======\n\nCommon example of how to generate the client code and use it in your project:\n\n1. Generate Petstore dropwizard client\n2. Make java classes depend on generated sources\n\n```build.gradle\nplugins {\n    id('java')\n    id('dev.guardrail')\n}\n\nrepositories {\n    mavenCentral()\n}\n\ndependencies {\n    ... // insert corresponding dependencies to compile\n}\n\nguardrail {\n    petstore {\n        inputFile = file('src/main/resources/pet_store_v3.yml')\n        gen {\n            packageName = 'com.foobar.generated.pet_store_v3'\n            language = 'java'\n            framework = 'dropwizard'\n        } \n    }\n}\n\ncompileJava.dependsOn guardrail.petstore.gen\n\n// Include the generated sources as part of the build\n// Feel free to delete the one that does not apply to your project\nsourceSets.main.scala.srcDirs += new File(buildDir, 'guardrail-sources/scala')\nsourceSets.main.java.srcDirs  += new File(buildDir, 'guardrail-sources/java')\n```\n\nSpecs\n======\n\nTo declare a generation\n\n```gradle\n\nguardrail {                                         // plugin declaration\n   \n    name {                                          // key of generation, e.g. petstore, myService, etc. \n        inputFile = file('myspec.yml')              // path of the file\n        gen {                                       // task that instucts generation\n            outputDir = file('...')                 // where to place output. default is\n                                                    // file(project.buildDir/'guardrail-sources')\n            packageName = 'com.example.arbitrary'   // package of classes to be packaged\n            language = 'java'                       // or scala. default 'scala'\n            kind = 'server'                         // or client. default 'client'\n            framework = '...'                       // see table below. default 'akka-http'\n            tracing = 'true'                        // or false, default false. adds lightstep integration to service\n            customImports = [\"com.myclasses.Blah\", \n                             \"com.classes.Blah\"]    // optional list of classes to be used in generation\n                                                    // see 'x-jvm-package' or 'x-scala-package' extension\n            dtoPackage = 'dtos'                     // where to put DTO objects. Where to put your client's DTOs. \n                                                    // Effectively: \"$${packageName}.definitions.$${dtoPackage}\"\n        }    \n\n    }\n\n}\n```\n\nAvailable frameworks\n====================\n\nIf 'scala':\n\n- akka-http\n- endpoints\n- http4s\n\nIf 'java':\n\n- dropwizard\n\nMultiple generations\n====================\n\n```gradle\nguardrail {\n    // generate a server stub in java with dropwizard resources\n    petstoreServer {\n        inputFile = file('src/main/resources/pet_store_v2.yml')\n        gen {\n            packageName = 'com.foobar.generated.petstore.server'\n            kind = 'server'\n            language = 'java'\n            framework = 'dropwizard'\n        }\n    }\n    // generate a scala http4s client\n    petstoreClient {\n        inputFile = file('src/main/resources/pet_store_v3.yml')\n        gen {\n            packageName = 'com.foobar.generated.petstore.client'\n            language = 'scala'\n            framework = 'http4s'\n            kind = 'client'\n        } \n    }\n```\n\n\n## Contributions\n\nThis is an open source software licensed under the MIT License.\nFeel free to open issues or pull requests.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguardrail-dev%2Fguardrail-gradle-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fguardrail-dev%2Fguardrail-gradle-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguardrail-dev%2Fguardrail-gradle-plugin/lists"}