Description
A wrapper to apply ktfmt to your Gradle builds, and reformat you Kotlin source code like a glimpse.
ktfmt-gradle alternatives and similar libraries
Based on the "Tools" category.
Alternatively, view ktfmt-gradle alternatives based on common mentions on social networks and blogs.
-
kotlin-android-template
Android + Kotlin + Github Actions + ktlint + Detekt + Gradle Kotlin DSL + buildSrc = β€οΈ -
jtransc
Bytecode to source converting Java & Kotlin code into JavaScript, C++, D, C#, PHP, AS3, Dart and Haxe and run it everywhere. Also use JVM code in your favourite language as a library. -
CrunchyCalendar
A beautiful material calendar with endless scroll, range selection and a lot more! -
MpApt
(Deprecated) :wrench: Kotlin Native/JS/JVM Annotation Processor library for Kotlin compiler plugins -
KtsRunner
Library for executing .kts files from regular Kotlin code -
BlurTutorial
Library for creating blur effects under Android UI elements -
LiveStream-Kt (Android) π±
LiveStream is a simple class which makes communication easy among different modules of your application. -
Kotlin Telegram Bot
Telegram Bot API wrapper with handy Kotlin DSL. -
detekt-hint
Detection of design principle violations in Kotlin as a plugin to detekt. -
ARFaceDetection
AR-based library for Android which is capable of detecting faces and overlaying images above the userβs head -
Kotlin Bootstrap
This set of libraries is designed to help developers accomplish various tasks easier and faster -
ColdStorage
Lightweight data loading and caching library for android -
Credit Card Scanner
Android Credit Card Scanner using CameraX and ML Kit -
EasyDokkaPlugin
Gradle Script plugin to generate documentation by Dokka documentation engine in Javadoc or other formats for Java, Kotlin, Android and non-Android projects. It's very easy, you don't need to add to dependencies section additional classpath or think about compatibility issues, you don't need additional repositories also. -
GradleMavenPush
Helper to upload Gradle Android Artifacts, Gradle Java Artifacts and Gradle Kotlin Artifacts to Maven repositories (JCenter, Maven Central, Corporate staging/snapshot servers and local Maven repositories). -
KotlinW
A small wrapper for the Kotlin compiler that can be used to execute .kts scripts -
buildSrcVersions
Better Gradle dependencies management inside the IDE. Search for available updates. -
AndroidOtpView (With gradient color in lines)
Android Otp View with gradient in kotlin
Appwrite - The Open Source Firebase alternative introduces iOS support
Do you think we are missing an alternative of ktfmt-gradle or a related project?
README
ktfmt-gradle π§Ήπ
A wrapper to apply ktfmt to your Gradle builds, and reformat you Kotlin source code like a glimpse.
How to use π£
ktfmt-gradle is distributed through Gradle Plugin Portal. To use it you need to add the following dependency to your gradle files.
Please note that those code needs to be added the gradle file of the module where you want to reformat the code (not the top level build.gradle[.kts] file).
If you're using the plugin{}
blocks in your Gradle file:
plugins {
id("com.ncorti.ktfmt.gradle") version "<latest_version>"
}
If you're instead using the Groovy Gradle files and the old buildscript
block:
buildscript {
repositories {
maven { url "https://plugins.gradle.org/m2/" }
}
dependencies {
classpath "com.ncorti.ktfmt.gradle:plugin:<latest_version>"
}
}
apply plugin: "com.ncorti.ktfmt.gradle"
Requirements
Please note that ktfmt-gradle
relies on ktfmt
hence the minimum supported JDK version is 11.
Please also note the following requirements:
Kotlin 1.4+. In order to reformat Kotlin 1.4 code, you need run on Gradle to 6.8+ (This is due to Gradle 6.7 embedding Kotlin 1.3.x - See #12660).
Android.
ktfmt-gradle
relies on features from Android Gradle Plugin 4.1+. So make sure you bump AGP before applying this plugin.
Task
By default, ktfmt-gradle
will add two Gradle tasks to your build:
ktfmtCheck
that will check if the code in your module is ktfmt-compliantktfmtFormat
that will reformat your code with ktfmt
Those two tasks will invoke ktfmt
on the whole module. More specific tasks are avialable based on the module type.
Jvm/Js Modules
For Jvm/Js modules, the plugin will create a check/format task for every source set. For example, jvm modules will
have a ktfmtCheckMain
and ktfmtCheckTest
tasks for the main
and test
source sets.
Multiplatform Modules
Kotlin Multiplatform modules will have separate tasks for every target/source set. You will have tasks
like ktfmtCheckCommonMain
and ktfmtCheckCommonTest
and so on. If you target also Android, the tasks explained below
will be added as well.
Android Modules
Kotlin Android modules will also have separate tasks for every source set. Due to how source sets are handled on
Android, you can expect ktfmt tasks to follow the convention: ktfmt[Check|Format][SourceSet][Variant]JavaSource
. For
example, the ktfmtCheckAndroidTestDebugJavaSource
.
Features π¨
- 100% Kotlin-only plugin.
- Parallel file processing with Kotlin Coroutines.
- Supports incremental builds (i.e. checks tasks won't rerun if source is unchanged).
- Configurable thanks to the
ktfmt{}
block. - Integrated with Jvm/Android/KMM modules.
Configuring π
You can configure the behavior of the ktfmt
invocation with the ktfmt
block in your build.gradle.[kts]
file.
To enable different styles you can simply:
ktfmt {
// Dropbox style - 4 space indentation
dropboxStyle()
// Google style - 2 space indentation
googleStyle()
// KotlinLang style - 4 space indentation - From kotlinlang.org/docs/coding-conventions.html
kotlinLangStyle()
}
If you wish to have further control on the tool you can instead:
ktfmt {
// Breaks lines longer than maxWidth. Default 100.
maxWidth.set(80)
// blockIndent is the indent size used when a new block is opened, in spaces.
blockIndent.set(8)
// continuationIndent is the indent size used when a line is broken because it's too
continuationIndent.set(8)
// Whether ktfmt should remove imports that are not used.
removeUnusedImports.set(false)
}
Using with a pre-commit hook π£
You can leverage the --include-only
to let ktfmt-gradle run only on a specific subset of files.
To this you can register a simple task of type KtfmtCheckTask
or KtfmtFormatTask
in your build.gradle.kts
as follows:
import com.ncorti.ktfmt.gradle.tasks.*
tasks.register<KtfmtFormatTask>("ktfmtPrecommit") {
source = project.fileTree(rootDir)
include("**/*.kt")
}
You can then invoke the task with --include-only
and a comma separated list of relative path of files:
./gradlew ktfmtPrecommit --include-only=src/main/java/File1.kt:src/main/java/File2.kt
The task will execute only on the file you passed and will skip all the others.
Contributing π€
Feel free to open a issue or submit a pull request for any bugs/improvements.
License π
This project is licensed under the MIT License - see the [License](License) file for details
*Note that all licence references and agreements mentioned in the ktfmt-gradle README section above
are relevant to that project's source code only.