{"id":13428844,"url":"https://github.com/bernaferrari/GradleKotlinConverter","last_synced_at":"2025-03-16T02:30:32.113Z","repository":{"id":41233148,"uuid":"164134392","full_name":"bernaferrari/GradleKotlinConverter","owner":"bernaferrari","description":"Convert from Groovy to Kotlin DSL for Gradle, focused on Android.","archived":false,"fork":false,"pushed_at":"2024-09-20T16:38:05.000Z","size":3573,"stargazers_count":926,"open_issues_count":21,"forks_count":61,"subscribers_count":24,"default_branch":"main","last_synced_at":"2025-03-09T14:18:05.078Z","etag":null,"topics":["gradle","gradle-kotlin-dsl","groovy","kotlin-script"],"latest_commit_sha":null,"homepage":"https://gradle-kotlin-converter.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bernaferrari.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-01-04T17:10:23.000Z","updated_at":"2025-03-08T14:39:28.000Z","dependencies_parsed_at":"2024-09-28T03:41:30.104Z","dependency_job_id":"d275879c-8712-4ac0-9cf8-8f735313634b","html_url":"https://github.com/bernaferrari/GradleKotlinConverter","commit_stats":{"total_commits":69,"total_committers":11,"mean_commits":"6.2727272727272725","dds":"0.37681159420289856","last_synced_commit":"dc030243082f60afd8dbb7d077aa71a2fe07194a"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bernaferrari%2FGradleKotlinConverter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bernaferrari%2FGradleKotlinConverter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bernaferrari%2FGradleKotlinConverter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bernaferrari%2FGradleKotlinConverter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bernaferrari","download_url":"https://codeload.github.com/bernaferrari/GradleKotlinConverter/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243815575,"owners_count":20352194,"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":["gradle","gradle-kotlin-dsl","groovy","kotlin-script"],"created_at":"2024-07-31T01:01:06.564Z","updated_at":"2025-03-16T02:30:31.569Z","avatar_url":"https://github.com/bernaferrari.png","language":"TypeScript","funding_links":[],"categories":["Libraries","Tools","gradle"],"sub_categories":["Mesh networks"],"readme":"![Image of GradleKotlinConverter](logo.png)\n\n# Gradle Kotlin DSL Converter\n\nA powerful tool to simplify the migration from Gradle's Groovy DSL to Kotlin DSL for Android projects.\n\n[![Image of website](web-screenshot.png)](https://gradle-kotlin-converter.vercel.app/)\n\nVisit https://gradle-kotlin-converter.vercel.app/ to use the converter.\n\n## Overview\n\nThe Gradle Kotlin DSL Converter is designed to streamline the process of transitioning from Gradle's Groovy DSL to Kotlin DSL in Android Studio. This tool automates many of the repetitive tasks involved in the migration, significantly reducing the time and effort required to update your build scripts.\n\nWhile it may not produce a perfect conversion in all cases, it serves as an invaluable first step in the migration process, similar to Android Studio's Java to Kotlin converter.\n\n## Features\n\n- Converts Groovy-style Gradle scripts to Kotlin DSL format\n- Handles common syntax differences and idiomatic changes\n- Supports both file-based and clipboard-based conversion\n- Addresses numerous edge cases and common migration challenges\n\n## Getting Started\n\n### Web Interface\n\nVisit our [web-based converter](https://gradle-kotlin-converter.vercel.app/) for an easy-to-use interface that doesn't require any local setup.\n\n## Conversion Capabilities\n\nThe converter handles a wide range of Gradle script elements, including:\n\n- String delimiter conversion (apostrophes to quotation marks)\n- Variable declaration updates (`def` to `val`)\n- Plugin application syntax\n- Dependency declaration format\n- Repository and Maven configurations\n- SDK version and build type declarations\n- ProGuard file configurations\n- Kotlin-specific dependency declarations\n- And more:\n\n---\n\n\u003ctable\u003e\n    \u003cth\u003eDescription\u003c/th\u003e\n    \u003cth\u003eBefore\u003c/th\u003e\n    \u003cth\u003eAfter\u003c/th\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eReplace all ' with \"\u003c/td\u003e\n        \u003ctd\u003e'kotlin-android'\u003c/td\u003e\n        \u003ctd\u003e\"kotlin-android\"\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eReplace \"def \" with \"val \"\u003c/td\u003e\n        \u003ctd\u003edef appcompat = \"1.0.0\"\u003c/td\u003e\n        \u003ctd\u003eval appcompat = \"1.0.0\"\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eConvert plugins\u003c/td\u003e\n        \u003ctd\u003eapply plugin: \"kotlin-kapt\"\u003c/td\u003e\n        \u003ctd\u003eapply(plugin = \"kotlin-kapt\")\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eAdd ( ) to dependencies\u003c/td\u003e\n        \u003ctd\u003eimplementation \":epoxy\"\u003c/td\u003e\n        \u003ctd\u003eimplementation(\":epoxy\")\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eConvert Maven\u003c/td\u003e\n        \u003ctd\u003emaven { url \"https://jitpack.io\" }\u003c/td\u003e\n        \u003ctd\u003emaven(\"https://jitpack.io\")\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eConvert Sdk Version\u003c/td\u003e\n        \u003ctd\u003ecompileSdkVersion 28\u003c/td\u003e\n        \u003ctd\u003ecompileSdkVersion(28)\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eConvert Version Code\u003c/td\u003e\n        \u003ctd\u003eversionCode 4\u003c/td\u003e\n        \u003ctd\u003eversionCode = 4\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eConvert Build Types\u003c/td\u003e\n        \u003ctd\u003edebuggable true\u003c/td\u003e\n        \u003ctd\u003eisDebuggable = true\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eConvert proguardFiles\u003c/td\u003e\n        \u003ctd\u003eproguardFiles getDef..., \"...\"\u003c/td\u003e\n        \u003ctd\u003esetProguardFiles(listOf(getDef..., \"...\")\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eConvert sourceCompatibility\u003c/td\u003e\n        \u003ctd\u003esourceCompatibility = \"1.8\"\u003c/td\u003e\n        \u003ctd\u003esourceCompatibility = JavaVersion.VERSION_1_8\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eConvert androidExtensions\u003c/td\u003e\n        \u003ctd\u003eandroidExtensions { experimental = true }\u003c/td\u003e\n        \u003ctd\u003eandroidExtensions { isExperimental = true }\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eConvert include\u003c/td\u003e\n        \u003ctd\u003einclude \":app\", \":diffutils\"\u003c/td\u003e\n        \u003ctd\u003einclude(\":app\", \":diffutils\")\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eConvert signingConfigs\u003c/td\u003e\n        \u003ctd\u003esigningConfigs { debug { ... } }\u003c/td\u003e\n        \u003ctd\u003esigningConfigs { register(\"debug\") { ... } }\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eConvert buildTypes\u003c/td\u003e\n        \u003ctd\u003ebuildTypes { debug { ... } }\u003c/td\u003e\n        \u003ctd\u003ebuildTypes { named(\"debug\") { ... } })\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eConvert classpath.exclude\u003c/td\u003e\n        \u003ctd\u003econfigurations.classpath.exclude group: '...lombok'\u003c/td\u003e\n        \u003ctd\u003econfigurations.classpath { exclude(group = \"...lombok\") }\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eKt dependencies (1/3)\u003c/td\u003e\n        \u003ctd\u003e\"org.jetbrains.kotlin:kotlin-gradle-plugin:$kt_v\"\u003c/td\u003e\n        \u003ctd\u003ekotlin(\"gradle-plugin\", version = \"$kt_v\")\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eKt dependencies (2/3)\u003c/td\u003e\n        \u003ctd\u003e\"org.jetbrains.kotlin:kotlin-stdlib:$kt_v\"\u003c/td\u003e\n        \u003ctd\u003ekotlin(\"stdlib\")\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eKt dependencies (3/3)\u003c/td\u003e\n        \u003ctd\u003e\"org.jetbrains.kotlin:kotlin-reflect\"\u003c/td\u003e\n        \u003ctd\u003ekotlin(\"reflect\")\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eConvert signingConfig\u003c/td\u003e\n        \u003ctd\u003esigningConfig signingConfigs.release\u003c/td\u003e\n        \u003ctd\u003esigningConfig = signingConfigs.getByName(\"release\")\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eConvert extras\u003c/td\u003e\n        \u003ctd\u003eext.enableCrashlytics = false\u003c/td\u003e\n        \u003ctd\u003eextra.set(\"enableCrashlytics\", false)\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eConvert plugins\u003c/td\u003e\n        \u003ctd\u003eapply(...) apply(...)\u003c/td\u003e\n        \u003ctd\u003eplugins { id(...) id(...) }\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eConvert plugin ids\u003c/td\u003e\n        \u003ctd\u003eid \"io.gitlab.arturbosch.detekt\" version \"1.0\"\u003c/td\u003e\n        \u003ctd\u003eid(\"io.gitlab.arturbosch.detekt\") version \"1.0\"\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eConvert \":\" to \" =\"\u003c/td\u003e\n        \u003ctd\u003etestImpl(name: \"junit\", version: \"4.12\")\u003c/td\u003e\n        \u003ctd\u003etestImpl(name = \"junit\", version = \"4.12\")\u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/table\u003e\n\nYou can find all the details on the source code.\n\nThe script was made to convert `build.gradle` in `build.gradle.kts`, but it can also help in the migration if you paste something that is not in Kotlin DSL format\nand you want it converted. If you paste something like a `implementation '...'` and want it converted to `implementation(\"...\")`, you are free to call the script on `build.gradle.kts` file and see it working as expected.\n\nWhen applying on `build.gradle`, the script will create, for example, `build.gradle.kts`.\nWhen applying on a file that already ends in `.kts`, the script will overrite the file.\nIn that case, please make sure you are using git or have a backup, in case things turn out wrong.\n\n## Things it still can't do\n\n- If you find anything, just tell me.\n\n## Issue Tracking\n\nFound a bug? Have an idea for an improvement? Feel free to [add an issue](../../issues).\n\n## License\n\nCopyright 2018 Bernardo Ferrari.\n\nLicensed to the Apache Software Foundation (ASF) under one or more contributor\nlicense agreements. See the NOTICE file distributed with this work for\nadditional information regarding copyright ownership. The ASF licenses this\nfile to you under the Apache License, Version 2.0 (the \"License\"); you may not\nuse this file except in compliance with the License. You may obtain a copy of\nthe License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\nWARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\nLicense for the specific language governing permissions and limitations under\nthe License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbernaferrari%2FGradleKotlinConverter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbernaferrari%2FGradleKotlinConverter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbernaferrari%2FGradleKotlinConverter/lists"}