diff --git a/.github/linters/ktlint_config b/.github/linters/ktlint_config new file mode 100644 index 00000000000..a3511d93f5a --- /dev/null +++ b/.github/linters/ktlint_config @@ -0,0 +1,3 @@ +[*.{kt,kts}] +ktlint_code_style = ktlint_official +ktlint_standard_no-consecutive-comments = disabled diff --git a/.github/workflows/kotlin-lint.yml b/.github/workflows/kotlin-lint.yml new file mode 100644 index 00000000000..1db3f3b81c9 --- /dev/null +++ b/.github/workflows/kotlin-lint.yml @@ -0,0 +1,40 @@ +name: Kotlin Linter + +on: + workflow_dispatch: + pull_request: + paths: + - .github/workflows/kotlin-lint.yml + - 'kotlin/**/*.{kt,kts}' + +jobs: + ktlint: + name: Lint Kotlin + runs-on: ubuntu-latest + steps: + - name: Checkout files + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Get changed files + id: changed-files + uses: tj-actions/changed-files@v41 + with: + files: "kotlin/**/*.{kt,kts}" + - name: List all changed files + env: + ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }} + run: | + for file in ${ALL_CHANGED_FILES}; do + echo "$file was changed" + done + - name: Install ktlint via curl + if: steps.changed-files.outputs.any_changed == 'true' + run: | + curl -sSLO https://github.com/pinterest/ktlint/releases/download/1.3.0/ktlint && chmod a+x ktlint && sudo mv ktlint /usr/local/bin/ + - name: Run ktlint + if: steps.changed-files.outputs.any_changed == 'true' + run: | + ktlint --reporter=plain?group_by_file --editorconfig=".github/linters/ktlint_config" + continue-on-error: false +