From 5c553e2506778a905da10fd87b823f74b1cb7a96 Mon Sep 17 00:00:00 2001
From: Torsten Grote <t@grobox.de>
Date: Wed, 28 Jul 2021 09:02:09 +0200
Subject: [PATCH] Add CI config with code-style checking

---
 .gitlab-ci.yml                                | 34 +++++++++++++++++++
 gradle/ktlint.gradle                          | 11 ++++++
 mailbox/build.gradle                          |  9 +++--
 .../mailbox/ApplicationComponent.kt           |  2 +-
 4 files changed, 52 insertions(+), 4 deletions(-)
 create mode 100644 .gitlab-ci.yml
 create mode 100644 gradle/ktlint.gradle

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 00000000..abb1aeb0
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,34 @@
+image: briar/ci-image-android:latest
+
+stages:
+  - test
+
+workflow:
+  # when to create a CI pipeline
+  rules:
+    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
+    - if: '$CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS'
+      when: never # avoids duplicate jobs for branch and MR
+    - if: '$CI_COMMIT_BRANCH'
+    - if: '$CI_COMMIT_TAG'
+
+test:
+  stage: test
+  before_script:
+    - set -e
+    - export GRADLE_USER_HOME=$PWD/.gradle
+  script:
+    - ./gradlew --no-daemon check lint
+  after_script:
+    # these file change every time and should not be cached
+    - rm -f $GRADLE_USER_HOME/caches/modules-2/modules-2.lock
+    - rm -fr $GRADLE_USER_HOME/caches/*/plugin-resolution/
+  cache:
+    key: "$CI_COMMIT_REF_SLUG"
+    paths:
+      - .gradle/wrapper
+      - .gradle/caches
+  rules:
+    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
+      when: always
+    - when: always
diff --git a/gradle/ktlint.gradle b/gradle/ktlint.gradle
new file mode 100644
index 00000000..59358c39
--- /dev/null
+++ b/gradle/ktlint.gradle
@@ -0,0 +1,11 @@
+ktlint {
+    version = "0.41.0"
+    android = true
+    enableExperimentalRules = false
+    verbose = true
+    disabledRules = [
+            "import-ordering",
+            "no-blank-line-before-rbrace",
+            "indent", // remove in 0.42 https://github.com/pinterest/ktlint/issues/764
+    ]
+}
diff --git a/mailbox/build.gradle b/mailbox/build.gradle
index c990be55..f6fe2964 100644
--- a/mailbox/build.gradle
+++ b/mailbox/build.gradle
@@ -3,6 +3,7 @@ plugins {
     id 'kotlin-android'
     id 'kotlin-kapt'
     id 'dagger.hilt.android.plugin'
+    id "org.jlleitschuh.gradle.ktlint" version "10.1.0"
 }
 
 android {
@@ -36,9 +37,9 @@ android {
 
 dependencies {
     implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
-    implementation 'androidx.appcompat:appcompat:1.3.0'
-    implementation "androidx.activity:activity-ktx:1.2.3"
-    implementation "androidx.fragment:fragment-ktx:1.3.5"
+    implementation 'androidx.appcompat:appcompat:1.3.1'
+    implementation "androidx.activity:activity-ktx:1.2.4"
+    implementation "androidx.fragment:fragment-ktx:1.3.6"
 
     def lifecycle_version = "2.3.1"
     implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
@@ -55,3 +56,5 @@ dependencies {
     androidTestImplementation 'androidx.test.ext:junit:1.1.3'
     androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
 }
+
+apply from: "${rootProject.rootDir}/gradle/ktlint.gradle"
diff --git a/mailbox/src/main/java/org/briarproject/mailbox/ApplicationComponent.kt b/mailbox/src/main/java/org/briarproject/mailbox/ApplicationComponent.kt
index 18af8862..f9f2c756 100644
--- a/mailbox/src/main/java/org/briarproject/mailbox/ApplicationComponent.kt
+++ b/mailbox/src/main/java/org/briarproject/mailbox/ApplicationComponent.kt
@@ -7,4 +7,4 @@ interface ApplicationComponent {
 
     fun inject(activity: MainActivity)
 
-}
\ No newline at end of file
+}
-- 
GitLab