summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--.idea/gradle.xml16
-rw-r--r--app/.gitignore1
-rw-r--r--app/build.gradle.kts34
-rw-r--r--app/src/main/java/org/the_jk/cleversync/io/TreeFactory.kt8
-rw-r--r--build.gradle.kts11
-rw-r--r--buildSrc/build.gradle.kts25
-rw-r--r--buildSrc/settings.gradle.kts9
-rw-r--r--buildSrc/src/main/groovy/the_jk.android-conventions.gradle45
-rw-r--r--gradle/libs.versions.toml5
-rw-r--r--libs/io/build.gradle.kts12
-rw-r--r--libs/io/src/main/java/org/the_jk/cleversync/io/Directory.kt (renamed from app/src/main/java/org/the_jk/cleversync/io/Directory.kt)0
-rw-r--r--libs/io/src/main/java/org/the_jk/cleversync/io/File.kt (renamed from app/src/main/java/org/the_jk/cleversync/io/File.kt)0
-rw-r--r--libs/io/src/main/java/org/the_jk/cleversync/io/Link.kt (renamed from app/src/main/java/org/the_jk/cleversync/io/Link.kt)0
-rw-r--r--libs/io/src/main/java/org/the_jk/cleversync/io/ModifiableDirectory.kt (renamed from app/src/main/java/org/the_jk/cleversync/io/ModifiableDirectory.kt)0
-rw-r--r--libs/io/src/main/java/org/the_jk/cleversync/io/ModifiableFile.kt (renamed from app/src/main/java/org/the_jk/cleversync/io/ModifiableFile.kt)0
-rw-r--r--libs/io/src/main/java/org/the_jk/cleversync/io/ModifiableLink.kt (renamed from app/src/main/java/org/the_jk/cleversync/io/ModifiableLink.kt)0
-rw-r--r--libs/io/src/main/java/org/the_jk/cleversync/io/ModifiableTree.kt (renamed from app/src/main/java/org/the_jk/cleversync/io/ModifiableTree.kt)0
-rw-r--r--libs/io/src/main/java/org/the_jk/cleversync/io/Tree.kt (renamed from app/src/main/java/org/the_jk/cleversync/io/Tree.kt)0
-rw-r--r--libs/local/build.gradle.kts12
-rw-r--r--libs/local/src/main/java/org/the_jk/cleversync/io/local/PathDirectory.kt (renamed from app/src/main/java/org/the_jk/cleversync/io/impl/PathDirectory.kt)2
-rw-r--r--libs/local/src/main/java/org/the_jk/cleversync/io/local/PathFile.kt (renamed from app/src/main/java/org/the_jk/cleversync/io/impl/PathFile.kt)2
-rw-r--r--libs/local/src/main/java/org/the_jk/cleversync/io/local/PathLink.kt (renamed from app/src/main/java/org/the_jk/cleversync/io/impl/PathLink.kt)2
-rw-r--r--libs/local/src/main/java/org/the_jk/cleversync/io/local/PathTree.kt (renamed from app/src/main/java/org/the_jk/cleversync/io/impl/PathTree.kt)4
-rw-r--r--libs/local/src/main/java/org/the_jk/cleversync/io/local/PathWatcher.kt (renamed from app/src/main/java/org/the_jk/cleversync/io/impl/PathWatcher.kt)2
-rw-r--r--libs/local/src/main/java/org/the_jk/cleversync/local/LocalTreeFactory.kt16
-rw-r--r--libs/local/src/main/res/values/strings.xml3
-rw-r--r--libs/local/src/test/java/org/the_jk/cleversync/local/LocalTreeTest.kt (renamed from app/src/test/java/org/the_jk/cleversync/io/LocalTreeTest.kt)8
-rw-r--r--libs/utils/build.gradle.kts12
-rw-r--r--libs/utils/src/main/java/org/the_jk/cleversync/LiveDataUtils.kt (renamed from app/src/main/java/org/the_jk/cleversync/LiveDataUtils.kt)0
-rw-r--r--libs/utils/src/main/java/org/the_jk/cleversync/StringUtils.kt (renamed from app/src/main/java/org/the_jk/cleversync/StringUtils.kt)0
-rw-r--r--libs/utils/src/test/java/org/the_jk/cleversync/StringUtilsTest.kt (renamed from app/src/test/java/org/the_jk/cleversync/StringUtilsTest.kt)0
-rw-r--r--settings.gradle.kts3
33 files changed, 190 insertions, 44 deletions
diff --git a/.gitignore b/.gitignore
index aa724b7..b2ed268 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,7 +8,7 @@
/.idea/navEditor.xml
/.idea/assetWizardSettings.xml
.DS_Store
-/build
+build
/captures
.externalNativeBuild
.cxx
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 0897082..cc8d323 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -4,12 +4,28 @@
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
+ <compositeConfiguration>
+ <compositeBuild compositeDefinitionSource="SCRIPT">
+ <builds>
+ <build path="$PROJECT_DIR$/buildSrc" name="the_jk-conventions">
+ <projects>
+ <project path="$PROJECT_DIR$/buildSrc" />
+ </projects>
+ </build>
+ </builds>
+ </compositeBuild>
+ </compositeConfiguration>
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleJvm" value="#GRADLE_LOCAL_JAVA_HOME" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
<option value="$PROJECT_DIR$/app" />
+ <option value="$PROJECT_DIR$/buildSrc" />
+ <option value="$PROJECT_DIR$/libs" />
+ <option value="$PROJECT_DIR$/libs/io" />
+ <option value="$PROJECT_DIR$/libs/local" />
+ <option value="$PROJECT_DIR$/libs/utils" />
</set>
</option>
<option name="resolveExternalAnnotations" value="false" />
diff --git a/app/.gitignore b/app/.gitignore
deleted file mode 100644
index 42afabf..0000000
--- a/app/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/build \ No newline at end of file
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index d432519..ea29544 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -1,21 +1,14 @@
plugins {
alias(libs.plugins.android.application)
- alias(libs.plugins.arturbosch.detekt)
- alias(libs.plugins.jetbrains.kotlin.android)
}
android {
namespace = "org.the_jk.cleversync"
- compileSdk = 34
defaultConfig {
applicationId = "org.the_jk.cleversync"
- minSdk = 29
- targetSdk = 34
versionCode = 1
versionName = "0.1"
-
- testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
@@ -27,41 +20,22 @@ android {
)
}
}
- compileOptions {
- sourceCompatibility = JavaVersion.VERSION_11
- targetCompatibility = JavaVersion.VERSION_11
- }
- kotlinOptions {
- jvmTarget = "11"
- }
buildFeatures {
viewBinding = true
}
}
dependencies {
+ implementation(project(":libs:local"))
+ implementation(project(":libs:io"))
+ implementation(project(":libs:samba"))
+ implementation(project(":libs:utils"))
implementation(libs.androidx.appcompat)
implementation(libs.androidx.constraintlayout)
implementation(libs.androidx.core.ktx)
- implementation(libs.androidx.livedata)
- implementation(libs.androidx.livedata.ktx)
implementation(libs.androidx.navigation.fragment.ktx)
implementation(libs.androidx.navigation.ui.ktx)
implementation(libs.material)
- testImplementation(libs.junit)
- testImplementation(libs.robolectric)
- testImplementation(libs.truth)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
}
-
-detekt {
- config.setFrom(rootProject.file("detekt.yaml"))
-}
-
-tasks.withType<io.gitlab.arturbosch.detekt.Detekt>().configureEach {
- this.jvmTarget = "11"
-}
-tasks.withType<io.gitlab.arturbosch.detekt.DetektCreateBaselineTask>().configureEach {
- this.jvmTarget = "11"
-}
diff --git a/app/src/main/java/org/the_jk/cleversync/io/TreeFactory.kt b/app/src/main/java/org/the_jk/cleversync/io/TreeFactory.kt
index d7c22f5..6df2c93 100644
--- a/app/src/main/java/org/the_jk/cleversync/io/TreeFactory.kt
+++ b/app/src/main/java/org/the_jk/cleversync/io/TreeFactory.kt
@@ -1,12 +1,14 @@
package org.the_jk.cleversync.io
-import org.the_jk.cleversync.io.impl.PathTree
+import org.the_jk.cleversync.local.LocalTreeFactory
import java.nio.file.Path
object TreeFactory {
fun localModifiableTree(root: Path): ModifiableTree {
- return PathTree(root)
+ return LocalTreeFactory.modifiableTree(root)
}
- fun localTree(root: Path): Tree = localModifiableTree(root)
+ fun localTree(root: Path): Tree {
+ return LocalTreeFactory.tree(root)
+ }
}
diff --git a/build.gradle.kts b/build.gradle.kts
index 435b1fa..0c60167 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -1,4 +1,15 @@
plugins {
alias(libs.plugins.android.application) apply false
+ alias(libs.plugins.android.library) apply false
+ alias(libs.plugins.arturbosch.detekt) apply false
alias(libs.plugins.jetbrains.kotlin.android) apply false
}
+
+subprojects {
+ plugins.withId("com.android.application") {
+ apply(plugin = "the_jk.android-conventions")
+ }
+ plugins.withId("com.android.library") {
+ apply(plugin = "the_jk.android-conventions")
+ }
+}
diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts
new file mode 100644
index 0000000..b3d40ac
--- /dev/null
+++ b/buildSrc/build.gradle.kts
@@ -0,0 +1,25 @@
+plugins {
+ id("groovy-gradle-plugin")
+
+ `kotlin-dsl`
+}
+
+repositories {
+ google()
+ gradlePluginPortal()
+}
+
+dependencies {
+ implementation(libs.android.build.gradle.api)
+}
+
+java {
+ toolchain {
+ // 11 needed for compile the groovy
+ languageVersion = JavaLanguageVersion.of(11)
+ }
+}
+
+kotlin {
+ jvmToolchain(11)
+}
diff --git a/buildSrc/settings.gradle.kts b/buildSrc/settings.gradle.kts
new file mode 100644
index 0000000..8edb952
--- /dev/null
+++ b/buildSrc/settings.gradle.kts
@@ -0,0 +1,9 @@
+rootProject.name="the_jk-conventions"
+
+dependencyResolutionManagement {
+ versionCatalogs {
+ create("libs") {
+ from(files("../gradle/libs.versions.toml"))
+ }
+ }
+}
diff --git a/buildSrc/src/main/groovy/the_jk.android-conventions.gradle b/buildSrc/src/main/groovy/the_jk.android-conventions.gradle
new file mode 100644
index 0000000..9ff8adf
--- /dev/null
+++ b/buildSrc/src/main/groovy/the_jk.android-conventions.gradle
@@ -0,0 +1,45 @@
+plugins {
+ id("io.gitlab.arturbosch.detekt")
+ id("org.jetbrains.kotlin.android")
+}
+
+android {
+ compileSdk = 34
+
+ defaultConfig {
+ minSdk = 29
+
+ testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ compileOptions {
+ sourceCompatibility = JavaVersion.VERSION_11
+ targetCompatibility = JavaVersion.VERSION_11
+ }
+ kotlinOptions {
+ jvmTarget = "11"
+ }
+}
+
+dependencies {
+ testImplementation(libs.junit)
+ testImplementation(libs.robolectric)
+ testImplementation(libs.truth)
+}
+
+detekt {
+ config.setFrom(rootProject.file("detekt.yaml"))
+}
+
+def detektPlugin = project.plugins['io.gitlab.arturbosch.detekt']
+def detektCls = Class.forName('io.gitlab.arturbosch.detekt.Detekt', true, detektPlugin.class.classLoader)
+
+tasks.withType(detektCls).configureEach {
+ jvmTarget = "11"
+}
+
+def detektCreateBaselineTaskCls = Class.forName('io.gitlab.arturbosch.detekt.DetektCreateBaselineTask', true, detektPlugin.class.classLoader)
+
+tasks.withType(detektCreateBaselineTaskCls).configureEach {
+ jvmTarget = "11"
+}
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 6f124db..ba79550 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -3,6 +3,7 @@ agp = "8.5.1"
appcompat = "1.7.0"
constraintlayout = "2.1.4"
coreKtx = "1.13.1"
+detekt = "1.23.6"
espressoCore = "3.6.1"
junit = "4.13.2"
junitVersion = "1.2.1"
@@ -13,6 +14,7 @@ navigationFragmentKtx = "2.7.7"
navigationUiKtx = "2.7.7"
[libraries]
+android-build-gradle-api = { group = "com.android.tools.build", name = "gradle-api", version.ref = "agp" }
androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" }
androidx-constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "constraintlayout" }
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
@@ -29,5 +31,6 @@ truth = { group = "com.google.truth", name = "truth", version = "1.4.3" }
[plugins]
android-application = { id = "com.android.application", version.ref = "agp" }
-arturbosch-detekt = { id = "io.gitlab.arturbosch.detekt", version = "1.23.3" }
+android-library = { id = "com.android.library", version.ref = "agp" }
+arturbosch-detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" }
jetbrains-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
diff --git a/libs/io/build.gradle.kts b/libs/io/build.gradle.kts
new file mode 100644
index 0000000..c091a90
--- /dev/null
+++ b/libs/io/build.gradle.kts
@@ -0,0 +1,12 @@
+plugins {
+ alias(libs.plugins.android.library)
+}
+
+android {
+ namespace = "org.the_jk.cleversync.io"
+}
+
+dependencies {
+ api(libs.androidx.livedata)
+ api(libs.androidx.livedata.ktx)
+}
diff --git a/app/src/main/java/org/the_jk/cleversync/io/Directory.kt b/libs/io/src/main/java/org/the_jk/cleversync/io/Directory.kt
index e653059..e653059 100644
--- a/app/src/main/java/org/the_jk/cleversync/io/Directory.kt
+++ b/libs/io/src/main/java/org/the_jk/cleversync/io/Directory.kt
diff --git a/app/src/main/java/org/the_jk/cleversync/io/File.kt b/libs/io/src/main/java/org/the_jk/cleversync/io/File.kt
index 17f142a..17f142a 100644
--- a/app/src/main/java/org/the_jk/cleversync/io/File.kt
+++ b/libs/io/src/main/java/org/the_jk/cleversync/io/File.kt
diff --git a/app/src/main/java/org/the_jk/cleversync/io/Link.kt b/libs/io/src/main/java/org/the_jk/cleversync/io/Link.kt
index c05f29e..c05f29e 100644
--- a/app/src/main/java/org/the_jk/cleversync/io/Link.kt
+++ b/libs/io/src/main/java/org/the_jk/cleversync/io/Link.kt
diff --git a/app/src/main/java/org/the_jk/cleversync/io/ModifiableDirectory.kt b/libs/io/src/main/java/org/the_jk/cleversync/io/ModifiableDirectory.kt
index 8bddc2c..8bddc2c 100644
--- a/app/src/main/java/org/the_jk/cleversync/io/ModifiableDirectory.kt
+++ b/libs/io/src/main/java/org/the_jk/cleversync/io/ModifiableDirectory.kt
diff --git a/app/src/main/java/org/the_jk/cleversync/io/ModifiableFile.kt b/libs/io/src/main/java/org/the_jk/cleversync/io/ModifiableFile.kt
index 8675dae..8675dae 100644
--- a/app/src/main/java/org/the_jk/cleversync/io/ModifiableFile.kt
+++ b/libs/io/src/main/java/org/the_jk/cleversync/io/ModifiableFile.kt
diff --git a/app/src/main/java/org/the_jk/cleversync/io/ModifiableLink.kt b/libs/io/src/main/java/org/the_jk/cleversync/io/ModifiableLink.kt
index 7dd565b..7dd565b 100644
--- a/app/src/main/java/org/the_jk/cleversync/io/ModifiableLink.kt
+++ b/libs/io/src/main/java/org/the_jk/cleversync/io/ModifiableLink.kt
diff --git a/app/src/main/java/org/the_jk/cleversync/io/ModifiableTree.kt b/libs/io/src/main/java/org/the_jk/cleversync/io/ModifiableTree.kt
index 383360d..383360d 100644
--- a/app/src/main/java/org/the_jk/cleversync/io/ModifiableTree.kt
+++ b/libs/io/src/main/java/org/the_jk/cleversync/io/ModifiableTree.kt
diff --git a/app/src/main/java/org/the_jk/cleversync/io/Tree.kt b/libs/io/src/main/java/org/the_jk/cleversync/io/Tree.kt
index b6f2d54..b6f2d54 100644
--- a/app/src/main/java/org/the_jk/cleversync/io/Tree.kt
+++ b/libs/io/src/main/java/org/the_jk/cleversync/io/Tree.kt
diff --git a/libs/local/build.gradle.kts b/libs/local/build.gradle.kts
new file mode 100644
index 0000000..46d8128
--- /dev/null
+++ b/libs/local/build.gradle.kts
@@ -0,0 +1,12 @@
+plugins {
+ alias(libs.plugins.android.library)
+}
+
+android {
+ namespace = "org.the_jk.cleversync.local"
+}
+
+dependencies {
+ implementation(project(":libs:io"))
+ testImplementation(project(":libs:utils"))
+}
diff --git a/app/src/main/java/org/the_jk/cleversync/io/impl/PathDirectory.kt b/libs/local/src/main/java/org/the_jk/cleversync/io/local/PathDirectory.kt
index 55bed6a..9899f02 100644
--- a/app/src/main/java/org/the_jk/cleversync/io/impl/PathDirectory.kt
+++ b/libs/local/src/main/java/org/the_jk/cleversync/io/local/PathDirectory.kt
@@ -1,4 +1,4 @@
-package org.the_jk.cleversync.io.impl
+package org.the_jk.cleversync.io.local
import androidx.annotation.AnyThread
import androidx.lifecycle.LiveData
diff --git a/app/src/main/java/org/the_jk/cleversync/io/impl/PathFile.kt b/libs/local/src/main/java/org/the_jk/cleversync/io/local/PathFile.kt
index 9a8d160..6aeb895 100644
--- a/app/src/main/java/org/the_jk/cleversync/io/impl/PathFile.kt
+++ b/libs/local/src/main/java/org/the_jk/cleversync/io/local/PathFile.kt
@@ -1,4 +1,4 @@
-package org.the_jk.cleversync.io.impl
+package org.the_jk.cleversync.io.local
import org.the_jk.cleversync.io.ModifiableFile
import java.io.InputStream
diff --git a/app/src/main/java/org/the_jk/cleversync/io/impl/PathLink.kt b/libs/local/src/main/java/org/the_jk/cleversync/io/local/PathLink.kt
index 9ae8b51..97cd117 100644
--- a/app/src/main/java/org/the_jk/cleversync/io/impl/PathLink.kt
+++ b/libs/local/src/main/java/org/the_jk/cleversync/io/local/PathLink.kt
@@ -1,4 +1,4 @@
-package org.the_jk.cleversync.io.impl
+package org.the_jk.cleversync.io.local
import org.the_jk.cleversync.io.Directory
import org.the_jk.cleversync.io.File
diff --git a/app/src/main/java/org/the_jk/cleversync/io/impl/PathTree.kt b/libs/local/src/main/java/org/the_jk/cleversync/io/local/PathTree.kt
index a8a74c5..23442a1 100644
--- a/app/src/main/java/org/the_jk/cleversync/io/impl/PathTree.kt
+++ b/libs/local/src/main/java/org/the_jk/cleversync/io/local/PathTree.kt
@@ -1,8 +1,8 @@
-package org.the_jk.cleversync.io.impl
+package org.the_jk.cleversync.io.local
import android.content.res.Resources
-import org.the_jk.cleversync.R
import org.the_jk.cleversync.io.ModifiableTree
+import org.the_jk.cleversync.local.R
import java.nio.file.Path
internal class PathTree(root: Path) : PathDirectory(root, PathWatcher()), ModifiableTree {
diff --git a/app/src/main/java/org/the_jk/cleversync/io/impl/PathWatcher.kt b/libs/local/src/main/java/org/the_jk/cleversync/io/local/PathWatcher.kt
index 945019a..0fa9f03 100644
--- a/app/src/main/java/org/the_jk/cleversync/io/impl/PathWatcher.kt
+++ b/libs/local/src/main/java/org/the_jk/cleversync/io/local/PathWatcher.kt
@@ -1,4 +1,4 @@
-package org.the_jk.cleversync.io.impl
+package org.the_jk.cleversync.io.local
import androidx.annotation.GuardedBy
import androidx.annotation.WorkerThread
diff --git a/libs/local/src/main/java/org/the_jk/cleversync/local/LocalTreeFactory.kt b/libs/local/src/main/java/org/the_jk/cleversync/local/LocalTreeFactory.kt
new file mode 100644
index 0000000..3990416
--- /dev/null
+++ b/libs/local/src/main/java/org/the_jk/cleversync/local/LocalTreeFactory.kt
@@ -0,0 +1,16 @@
+package org.the_jk.cleversync.local
+
+import org.the_jk.cleversync.io.ModifiableTree
+import org.the_jk.cleversync.io.Tree
+import org.the_jk.cleversync.io.local.PathTree
+import java.nio.file.Path
+
+object LocalTreeFactory {
+ fun tree(path: Path): Tree {
+ return PathTree(path)
+ }
+
+ fun modifiableTree(path: Path): ModifiableTree {
+ return PathTree(path)
+ }
+}
diff --git a/libs/local/src/main/res/values/strings.xml b/libs/local/src/main/res/values/strings.xml
new file mode 100644
index 0000000..9fef6ef
--- /dev/null
+++ b/libs/local/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+<resources>
+ <string name="local_directory">Local directory</string>
+</resources>
diff --git a/app/src/test/java/org/the_jk/cleversync/io/LocalTreeTest.kt b/libs/local/src/test/java/org/the_jk/cleversync/local/LocalTreeTest.kt
index 7b83c98..21002e3 100644
--- a/app/src/test/java/org/the_jk/cleversync/io/LocalTreeTest.kt
+++ b/libs/local/src/test/java/org/the_jk/cleversync/local/LocalTreeTest.kt
@@ -1,4 +1,4 @@
-package org.the_jk.cleversync.io
+package org.the_jk.cleversync.local
import com.google.common.truth.Truth.assertThat
import org.junit.Assert
@@ -10,6 +10,10 @@ import org.junit.runner.RunWith
import org.robolectric.RobolectricTestRunner
import org.robolectric.annotation.Config
import org.robolectric.shadows.ShadowLooper
+import org.the_jk.cleversync.io.Directory
+import org.the_jk.cleversync.io.Link
+import org.the_jk.cleversync.io.ModifiableLink
+import org.the_jk.cleversync.io.ModifiableTree
import org.the_jk.cleversync.safeValue
@Config(manifest=Config.NONE)
@@ -22,7 +26,7 @@ class LocalTreeTest {
@Before
fun setUp() {
- tree = TreeFactory.localModifiableTree(folder.root.toPath())
+ tree = LocalTreeFactory.modifiableTree(folder.root.toPath())
}
@Test
diff --git a/libs/utils/build.gradle.kts b/libs/utils/build.gradle.kts
new file mode 100644
index 0000000..b4f0ae5
--- /dev/null
+++ b/libs/utils/build.gradle.kts
@@ -0,0 +1,12 @@
+plugins {
+ alias(libs.plugins.android.library)
+}
+
+android {
+ namespace = "org.the_jk.cleversync.utils"
+}
+
+dependencies {
+ api(libs.androidx.livedata)
+ api(libs.androidx.livedata.ktx)
+}
diff --git a/app/src/main/java/org/the_jk/cleversync/LiveDataUtils.kt b/libs/utils/src/main/java/org/the_jk/cleversync/LiveDataUtils.kt
index 7f6ab1f..7f6ab1f 100644
--- a/app/src/main/java/org/the_jk/cleversync/LiveDataUtils.kt
+++ b/libs/utils/src/main/java/org/the_jk/cleversync/LiveDataUtils.kt
diff --git a/app/src/main/java/org/the_jk/cleversync/StringUtils.kt b/libs/utils/src/main/java/org/the_jk/cleversync/StringUtils.kt
index 6adea24..6adea24 100644
--- a/app/src/main/java/org/the_jk/cleversync/StringUtils.kt
+++ b/libs/utils/src/main/java/org/the_jk/cleversync/StringUtils.kt
diff --git a/app/src/test/java/org/the_jk/cleversync/StringUtilsTest.kt b/libs/utils/src/test/java/org/the_jk/cleversync/StringUtilsTest.kt
index 6a36156..6a36156 100644
--- a/app/src/test/java/org/the_jk/cleversync/StringUtilsTest.kt
+++ b/libs/utils/src/test/java/org/the_jk/cleversync/StringUtilsTest.kt
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 0a813b0..48dd233 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -21,3 +21,6 @@ dependencyResolutionManagement {
rootProject.name = "CleverSync"
include(":app")
+include(":libs:local")
+include(":libs:io")
+include(":libs:utils")