{"id":22736159,"url":"https://github.com/noheltcj/zinc","last_synced_at":"2025-04-14T03:22:03.077Z","repository":{"id":55113924,"uuid":"326579989","full_name":"noheltcj/zinc","owner":"noheltcj","description":"Kotlin Compiler Plugin that generates builders and a DSL for data classes.","archived":false,"fork":false,"pushed_at":"2021-09-17T23:55:36.000Z","size":122,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-27T17:21:22.322Z","etag":null,"topics":["builder-pattern","compiler-plugin","data-class","kotlin","testing"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","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/noheltcj.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-01-04T05:33:38.000Z","updated_at":"2023-11-17T02:18:19.000Z","dependencies_parsed_at":"2022-08-14T12:20:57.280Z","dependency_job_id":null,"html_url":"https://github.com/noheltcj/zinc","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noheltcj%2Fzinc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noheltcj%2Fzinc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noheltcj%2Fzinc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noheltcj%2Fzinc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/noheltcj","download_url":"https://codeload.github.com/noheltcj/zinc/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248814048,"owners_count":21165671,"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":["builder-pattern","compiler-plugin","data-class","kotlin","testing"],"created_at":"2024-12-10T21:20:03.704Z","updated_at":"2025-04-14T03:22:03.043Z","avatar_url":"https://github.com/noheltcj.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Zinc\n![tests](https://github.com/noheltcj/zinc/workflows/Test/badge.svg)\n![lint](https://github.com/noheltcj/zinc/workflows/Lint/badge.svg)\n[![maven central](https://maven-badges.herokuapp.com/maven-central/com.noheltcj.zinc/gradle-plugin/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.noheltcj.zinc/gradle-plugin)\n\nAn extensible compiler plugin for Kotlin to automatically expand data classes to include their own builder DSL.\n\n## Introduction\nZinc was originally conceived as a solution to reduce testing boilerplate, but supposedly there are production use cases\ntoo.\n\nMore information to come as this becomes more useful.\n\n## How it works\nWhen enabled, Zinc analyzes specified source sets and generates builders and a DSL for each data class. There are two\nclasses of builders generated: _production_ and _test_.\n\n[See Examples](docs/hello_world_example.md)\n\n### Production Builders\nThese builders are for use in production code when a builder pattern is preferable over using a constructor. All \nproperties must be able to resolve a value. When a field does not have a default value, an exception will be thrown with\ndetails about the missing field.\n\nConfigure the source sets that should contribute to this classification by setting the `productionSourceSetNames` field\non the plugin extension. [See Setup](#setup)\n\n### Test Builders\n_Not yet implemented._\n\nThis is the work-in-progress primary feature of this plugin. Builders in this classification will be generated with \nrandomized default values for all fields. This essentially provides a clean, all fields optional way to supply fake \ndata in tests.\n\n## Setup\nArtifacts can be downloaded from Maven Central.\n\n### Gradle Kotlin Script\n```kotlin\nplugins {\n  id(\"com.noheltcj.zinc\") version \"0.0.3\"\n}\n\nzinc {\n  // defaults to true\n  enabled = true\n\n  // defaults to setOf(\"main\")\n  productionSourceSetNames = setOf(\"main\", \"anotherSourceSet\")\n}\n```\n\n### Gradle Groovy\n```groovy\nplugins {\n    id 'com.noheltcj.zinc' version '0.0.3'\n}\n\nzinc {\n    productionSourceSetNames = ['main', 'anotherSourceSet']\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnoheltcj%2Fzinc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnoheltcj%2Fzinc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnoheltcj%2Fzinc/lists"}