diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000000..205359ab40 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,23 @@ +[*.{kt,kts}] +end_of_line = lf +ij_kotlin_allow_trailing_comma = false +ij_kotlin_allow_trailing_comma_on_call_site = false +ij_kotlin_imports_layout = * +ij_kotlin_indent_before_arrow_on_new_line = false +ij_kotlin_line_break_after_multiline_when_entry = true +ij_kotlin_packages_to_use_import_on_demand = java.util.*,kotlinx.android.synthetic.** +indent_size = 4 +indent_style = space +insert_final_newline = true +ktlint_annotation_handle_annotations_with_parameters_same_as_annotations_without_parameters = [unset] +ktlint_argument_list_wrapping_ignore_when_parameter_count_greater_or_equal_than = 8 +ktlint_chain_method_rule_force_multiline_when_chain_operator_count_greater_or_equal_than = 4 +ktlint_class_signature_rule_force_multiline_when_parameter_count_greater_or_equal_than = unset +ktlint_code_style = android_studio +ktlint_enum_entry_name_casing = upper_or_camel_cases +ktlint_function_naming_ignore_when_annotated_with = [unset] +ktlint_function_signature_body_expression_wrapping = default +ktlint_function_signature_rule_force_multiline_when_parameter_count_greater_or_equal_than = unset +ktlint_ignore_back_ticked_identifier = false +ktlint_property_naming_constant_naming = screaming_snake_case +max_line_length = 100 \ No newline at end of file diff --git a/.github/workflows/build_pull_request.yml b/.github/workflows/build_pull_request.yml index c28a17f1bc..4e2ec3f8b9 100644 --- a/.github/workflows/build_pull_request.yml +++ b/.github/workflows/build_pull_request.yml @@ -19,6 +19,11 @@ jobs: - name: Cache Gradle uses: burrunan/gradle-cache-action@v1 + - name: Spotless Check + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: ./gradlew spotlessCheck --no-daemon + - name: Build env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/build.gradle.kts b/build.gradle.kts index c543b2fa89..ca4fff62e1 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -7,4 +7,13 @@ plugins { alias(libs.plugins.kotlin.parcelize) apply false alias(libs.plugins.about.libraries) apply false alias(libs.plugins.compose.compiler) apply false + alias(libs.plugins.spotless) +} + +spotless { + ratchetFrom("compose-dev") + kotlin { + target("app/src/*/java/**/*.kt", "api/src/*/kotlin/**/*.kt") + ktlint().setEditorConfigPath("$projectDir/.editorconfig") + } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index a41ac45955..27276b6536 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -36,6 +36,7 @@ compose-icons = "1.2.4" kotlin-process = "1.5.1" hidden-api-stub = "4.3.3" binary-compatibility-validator = "0.17.0" +spotless-gradle-plugin = "7.0.4" [libraries] # AndroidX Core @@ -139,3 +140,4 @@ compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = " devtools = { id = "com.google.devtools.ksp", version.ref = "dev-tools-gradle-plugin" } about-libraries = { id = "com.mikepenz.aboutlibraries.plugin", version.ref = "about-libraries-gradle-plugin" } binary-compatibility-validator = { id = "org.jetbrains.kotlinx.binary-compatibility-validator", version.ref = "binary-compatibility-validator" } +spotless = { id = "com.diffplug.spotless", version.ref = "spotless-gradle-plugin" }