From 4a41de604524cc5e6b338c6a6266b1b4e157b1b1 Mon Sep 17 00:00:00 2001 From: Stepan Goncharov Date: Sun, 23 Apr 2023 22:15:59 -0700 Subject: [PATCH] Minor refactoring --- .../dependencies/build.gradle.kts | 4 ++- .../dependencies/src/main/kotlin/Kotlinx.kt | 5 ++-- .../dependencies/src/main/kotlin/Plugins.kt | 6 ++--- .../dependencies/src/main/kotlin/Team.kt | 6 ++--- .../dependencies/src/main/kotlin/Tools.kt | 21 ++++++++++++++-- .../src/main/kotlin/ViewBinding.kt | 4 +-- plugins/android/build.gradle.kts | 2 ++ .../android/src/main/java/TargetBuilder.kt | 4 +-- plugins/android/src/main/java/androidApp.kt | 4 +-- .../android/src/main/java/androidBinary.kt | 4 +-- .../android/src/main/java/androidLibrary.kt | 4 +-- .../android/src/main/java/androidNative.kt | 6 ++--- .../main/java/androidProjectConfiguration.kt | 10 +++----- plugins/android/src/main/java/androidRes.kt | 6 ++--- .../android/src/main/java/androidTestUtil.kt | 4 +-- plugins/android/src/main/java/androidUtil.kt | 6 ++--- plugins/android/src/main/java/api.kt | 4 +-- plugins/android/src/main/java/dataBinding.kt | 6 ++--- plugins/android/src/main/java/library.kt | 6 ++--- plugins/android/src/main/java/testUtil.kt | 4 +-- .../forma/android/dependencies/dataBinding.kt | 25 ------------------- .../android/feature/FeatureDefinition.kt | 2 +- .../tools/forma/android/feature/Kotlin.kt | 2 +- .../java/tools/forma/android/utils/android.kt | 2 +- plugins/android/src/main/java/uiLibrary.kt | 4 +-- plugins/android/src/main/java/util.kt | 4 +-- plugins/android/src/main/java/viewBinding.kt | 6 ++--- plugins/android/src/main/java/widget.kt | 4 +-- plugins/config/build.gradle.kts | 7 ++++++ .../tools/forma}/config/FormaConfiguration.kt | 22 ++++++++++++---- .../tools/forma/deps}/PluginConfiguration.kt | 4 +-- .../java/tools/forma/deps}/PluginWrapper.kt | 10 +++----- plugins/owners/build.gradle.kts | 7 ++++++ .../src/main/java/tools/forma}/owner/Owner.kt | 4 +-- 34 files changed, 117 insertions(+), 102 deletions(-) delete mode 100644 plugins/android/src/main/java/tools/forma/android/dependencies/dataBinding.kt create mode 100644 plugins/config/build.gradle.kts rename plugins/{android/src/main/java/tools/forma/android => config/src/main/java/tools/forma}/config/FormaConfiguration.kt (69%) rename plugins/{android/src/main/java/tools/forma/android/plugin => deps-core/src/main/java/tools/forma/deps}/PluginConfiguration.kt (76%) rename plugins/{android/src/main/java/tools/forma/android/plugin => deps-core/src/main/java/tools/forma/deps}/PluginWrapper.kt (77%) create mode 100644 plugins/owners/build.gradle.kts rename plugins/{android/src/main/java/tools/forma/android => owners/src/main/java/tools/forma}/owner/Owner.kt (83%) diff --git a/build-dependencies/dependencies/build.gradle.kts b/build-dependencies/dependencies/build.gradle.kts index 1fcd351c..5e7b8257 100644 --- a/build-dependencies/dependencies/build.gradle.kts +++ b/build-dependencies/dependencies/build.gradle.kts @@ -5,7 +5,9 @@ plugins { group = "tools.forma.demo" dependencies { - implementation("tools.forma:android") implementation("tools.forma:deps-core") + implementation("tools.forma:owners") + implementation("tools.forma:config") + implementation("com.google.firebase:firebase-crashlytics-gradle:2.9.5") } diff --git a/build-dependencies/dependencies/src/main/kotlin/Kotlinx.kt b/build-dependencies/dependencies/src/main/kotlin/Kotlinx.kt index 7d33571e..7f6c0e70 100644 --- a/build-dependencies/dependencies/src/main/kotlin/Kotlinx.kt +++ b/build-dependencies/dependencies/src/main/kotlin/Kotlinx.kt @@ -1,7 +1,6 @@ object kotlinx { val coroutines_core = deps( "org.jetbrains.kotlinx:kotlinx-coroutines-core:${versions.jetbrains.coroutines}".dep, - kotlin.stdlib ) val coroutines_android = deps( "org.jetbrains.kotlinx:kotlinx-coroutines-android:${versions.jetbrains.coroutines}".dep, @@ -10,6 +9,6 @@ object kotlinx { val coroutines_test = deps( "org.jetbrains.kotlinx:kotlinx-coroutines-test:${versions.jetbrains.coroutines}".dep, - kotlinx.coroutines_core + coroutines_core ) -} \ No newline at end of file +} diff --git a/build-dependencies/dependencies/src/main/kotlin/Plugins.kt b/build-dependencies/dependencies/src/main/kotlin/Plugins.kt index e7e7d667..3eecde46 100644 --- a/build-dependencies/dependencies/src/main/kotlin/Plugins.kt +++ b/build-dependencies/dependencies/src/main/kotlin/Plugins.kt @@ -1,6 +1,6 @@ import com.google.firebase.crashlytics.buildtools.gradle.CrashlyticsExtension -import tools.forma.android.plugin.PluginWrapper -import tools.forma.android.plugin.pluginConfiguration +import tools.forma.deps.PluginWrapper +import tools.forma.deps.pluginConfiguration object Plugins { @@ -18,4 +18,4 @@ object Plugins { } ) -} \ No newline at end of file +} diff --git a/build-dependencies/dependencies/src/main/kotlin/Team.kt b/build-dependencies/dependencies/src/main/kotlin/Team.kt index 96812822..92812e46 100644 --- a/build-dependencies/dependencies/src/main/kotlin/Team.kt +++ b/build-dependencies/dependencies/src/main/kotlin/Team.kt @@ -1,5 +1,5 @@ -import tools.forma.android.owner.Person -import tools.forma.android.owner.Team +import tools.forma.owner.Person +import tools.forma.owner.Team object Users { val stepango = Person( @@ -24,4 +24,4 @@ object Teams { Users.michaem ) ) -} \ No newline at end of file +} diff --git a/build-dependencies/dependencies/src/main/kotlin/Tools.kt b/build-dependencies/dependencies/src/main/kotlin/Tools.kt index 8e97a30e..103d4036 100644 --- a/build-dependencies/dependencies/src/main/kotlin/Tools.kt +++ b/build-dependencies/dependencies/src/main/kotlin/Tools.kt @@ -1,5 +1,22 @@ @file:Suppress("ClassName", "MemberVisibilityCanBePrivate") -val kotlin = tools.forma.android.dependencies.kotlin -val dataBinding = tools.forma.android.dependencies.dataBinding +import tools.forma.config.FormaConfigurationStore + +object dataBinding { + val viewBinding = transitiveDeps( + "androidx.databinding:viewbinding:${FormaConfigurationStore.configuration.agpVersion}" + ) + + val runtime = transitiveDeps( + "androidx.databinding:databinding-runtime:${FormaConfigurationStore.configuration.agpVersion}" + ) + + val common = transitiveDeps( + "androidx.databinding:databinding-common:${FormaConfigurationStore.configuration.agpVersion}" + ) + + val adapters = transitiveDeps( + "androidx.databinding:databinding-adapters:${FormaConfigurationStore.configuration.agpVersion}" + ) +} diff --git a/build-dependencies/dependencies/src/main/kotlin/ViewBinding.kt b/build-dependencies/dependencies/src/main/kotlin/ViewBinding.kt index 3773f7cb..3bac26c5 100644 --- a/build-dependencies/dependencies/src/main/kotlin/ViewBinding.kt +++ b/build-dependencies/dependencies/src/main/kotlin/ViewBinding.kt @@ -1,10 +1,10 @@ object viewbinding { val viewBinding = transitiveDeps( - "androidx.databinding:viewbinding:${Forma.configuration.agpVersion}" + "androidx.databinding:viewbinding" ) val viewpropertydelegate = deps( "com.github.kirich1409:viewbindingpropertydelegate-noreflection:${versions.viewbinding.viewbindingpropertydelegate}".dep, "com.github.kirich1409:viewbindingpropertydelegate-core:${versions.viewbinding.viewbindingpropertydelegate}".dep, ) -} \ No newline at end of file +} diff --git a/plugins/android/build.gradle.kts b/plugins/android/build.gradle.kts index 8628ccf0..5e4331c2 100644 --- a/plugins/android/build.gradle.kts +++ b/plugins/android/build.gradle.kts @@ -12,6 +12,8 @@ dependencies { implementation(project(":deps-core")) implementation(project(":target")) implementation(project(":validation")) + implementation(project(":owners")) + implementation(project(":config")) } gradlePlugin { diff --git a/plugins/android/src/main/java/TargetBuilder.kt b/plugins/android/src/main/java/TargetBuilder.kt index 51a9d26b..5a549d85 100644 --- a/plugins/android/src/main/java/TargetBuilder.kt +++ b/plugins/android/src/main/java/TargetBuilder.kt @@ -1,5 +1,5 @@ import org.gradle.api.Project -import tools.forma.android.plugin.PluginWrapper +import tools.forma.deps.PluginWrapper class TargetBuilder( private val project: Project @@ -15,4 +15,4 @@ class TargetBuilder( return this } -} \ No newline at end of file +} diff --git a/plugins/android/src/main/java/androidApp.kt b/plugins/android/src/main/java/androidApp.kt index 365f23c9..cb4f1042 100644 --- a/plugins/android/src/main/java/androidApp.kt +++ b/plugins/android/src/main/java/androidApp.kt @@ -3,8 +3,8 @@ import tools.forma.android.feature.androidLibraryFeatureDefinition import tools.forma.android.feature.applyFeatures import tools.forma.android.feature.kotlinAndroidFeatureDefinition import tools.forma.android.target.ApplicationTargetTemplate -import tools.forma.android.owner.NoOwner -import tools.forma.android.owner.Owner +import tools.forma.owner.NoOwner +import tools.forma.owner.Owner import tools.forma.android.utils.BuildConfiguration import tools.forma.validation.EmptyValidator import tools.forma.android.validation.disallowResources diff --git a/plugins/android/src/main/java/androidBinary.kt b/plugins/android/src/main/java/androidBinary.kt index 7dfd06de..f514ef2f 100644 --- a/plugins/android/src/main/java/androidBinary.kt +++ b/plugins/android/src/main/java/androidBinary.kt @@ -2,8 +2,8 @@ import org.gradle.api.Project import tools.forma.android.feature.AndroidBinaryFeatureConfiguration import tools.forma.android.feature.androidBinaryFeatureDefinition import tools.forma.android.feature.applyFeatures -import tools.forma.android.owner.NoOwner -import tools.forma.android.owner.Owner +import tools.forma.owner.NoOwner +import tools.forma.owner.Owner import tools.forma.android.target.BinaryTargetTemplate import tools.forma.android.utils.BuildConfiguration import tools.forma.android.validation.disallowResources diff --git a/plugins/android/src/main/java/androidLibrary.kt b/plugins/android/src/main/java/androidLibrary.kt index 6e268216..34f269a8 100644 --- a/plugins/android/src/main/java/androidLibrary.kt +++ b/plugins/android/src/main/java/androidLibrary.kt @@ -4,8 +4,8 @@ import tools.forma.android.feature.androidLibraryFeatureDefinition import tools.forma.android.feature.applyFeatures import tools.forma.android.feature.kaptConfigurationFeature import tools.forma.android.feature.kotlinAndroidFeatureDefinition -import tools.forma.android.owner.NoOwner -import tools.forma.android.owner.Owner +import tools.forma.owner.NoOwner +import tools.forma.owner.Owner import tools.forma.android.target.LibraryTargetTemplate import tools.forma.android.utils.BuildConfiguration import tools.forma.android.visibility.Public diff --git a/plugins/android/src/main/java/androidNative.kt b/plugins/android/src/main/java/androidNative.kt index e3c14af0..6c5f748b 100644 --- a/plugins/android/src/main/java/androidNative.kt +++ b/plugins/android/src/main/java/androidNative.kt @@ -1,8 +1,8 @@ import org.gradle.api.Project import tools.forma.android.config.NdkAbi import tools.forma.android.config.NdkBuildSystem -import tools.forma.android.owner.NoOwner -import tools.forma.android.owner.Owner +import tools.forma.owner.NoOwner +import tools.forma.owner.Owner import tools.forma.android.target.NativeTarget import tools.forma.android.visibility.Public import tools.forma.android.visibility.Visibility @@ -31,4 +31,4 @@ fun Project.androidNative( applyFeatures( androidNativeDefinition(configuration) ) -} \ No newline at end of file +} diff --git a/plugins/android/src/main/java/androidProjectConfiguration.kt b/plugins/android/src/main/java/androidProjectConfiguration.kt index 0077e0bf..f883ff5c 100644 --- a/plugins/android/src/main/java/androidProjectConfiguration.kt +++ b/plugins/android/src/main/java/androidProjectConfiguration.kt @@ -6,7 +6,8 @@ import org.gradle.api.artifacts.dsl.RepositoryHandler import org.gradle.api.tasks.Delete import org.gradle.kotlin.dsl.ScriptHandlerScope import org.gradle.kotlin.dsl.repositories -import tools.forma.android.config.FormaConfiguration +import tools.forma.config.FormaConfiguration +import tools.forma.config.FormaConfigurationStore import tools.forma.android.utils.register // TODO: add docs for every fun param @@ -105,12 +106,9 @@ fun Project.androidProjectConfiguration( */ object Forma { - private lateinit var _configuration: FormaConfiguration - val configuration: FormaConfiguration get() = _configuration + val configuration: FormaConfiguration get() = FormaConfigurationStore.configuration - fun store(configuration: FormaConfiguration) { - _configuration = configuration - } + fun store(configuration: FormaConfiguration) = FormaConfigurationStore.store(configuration) val buildScriptConfiguration: ScriptHandlerScope.(List) -> Unit = { classpathDeps -> // TODO pass repositories configuration diff --git a/plugins/android/src/main/java/androidRes.kt b/plugins/android/src/main/java/androidRes.kt index 65d32e5f..20c79b31 100644 --- a/plugins/android/src/main/java/androidRes.kt +++ b/plugins/android/src/main/java/androidRes.kt @@ -4,8 +4,8 @@ import tools.forma.android.feature.applyFeatures import tools.forma.android.feature.kotlinAndroidFeatureDefinition import tools.forma.android.target.ResourcesTargetTemplate import tools.forma.android.target.WidgetTargetTemplate -import tools.forma.android.owner.NoOwner -import tools.forma.android.owner.Owner +import tools.forma.owner.NoOwner +import tools.forma.owner.Owner import tools.forma.validation.validate import tools.forma.validation.validator import tools.forma.android.validation.onlyAllowResources @@ -44,4 +44,4 @@ fun Project.androidRes( dependencies = dependencies, repositoriesConfiguration = Forma.configuration.repositories ) -} \ No newline at end of file +} diff --git a/plugins/android/src/main/java/androidTestUtil.kt b/plugins/android/src/main/java/androidTestUtil.kt index c957b938..6b067c89 100644 --- a/plugins/android/src/main/java/androidTestUtil.kt +++ b/plugins/android/src/main/java/androidTestUtil.kt @@ -4,8 +4,8 @@ import tools.forma.android.feature.applyFeatures import tools.forma.android.feature.kotlinAndroidFeatureDefinition import tools.forma.android.target.AndroidTestUtilTargetTemplate import tools.forma.android.target.TestUtilTargetTemplate -import tools.forma.android.owner.NoOwner -import tools.forma.android.owner.Owner +import tools.forma.owner.NoOwner +import tools.forma.owner.Owner import tools.forma.validation.validate import tools.forma.validation.validator import tools.forma.android.visibility.Public diff --git a/plugins/android/src/main/java/androidUtil.kt b/plugins/android/src/main/java/androidUtil.kt index 62e9e23a..e22b4789 100644 --- a/plugins/android/src/main/java/androidUtil.kt +++ b/plugins/android/src/main/java/androidUtil.kt @@ -5,8 +5,8 @@ import tools.forma.android.feature.kotlinAndroidFeatureDefinition import tools.forma.android.target.AndroidUtilTargetTemplate import tools.forma.android.target.ResourcesTargetTemplate import tools.forma.android.target.TestUtilTargetTemplate -import tools.forma.android.owner.NoOwner -import tools.forma.android.owner.Owner +import tools.forma.owner.NoOwner +import tools.forma.owner.Owner import tools.forma.validation.validate import tools.forma.validation.validator import tools.forma.android.validation.disallowResources @@ -66,4 +66,4 @@ fun Project.androidUtil( repositoriesConfiguration = Forma.configuration.repositories, configurationFeatures = kaptConfigurationFeature() ) -} \ No newline at end of file +} diff --git a/plugins/android/src/main/java/api.kt b/plugins/android/src/main/java/api.kt index 005ef741..3eca1594 100644 --- a/plugins/android/src/main/java/api.kt +++ b/plugins/android/src/main/java/api.kt @@ -3,8 +3,8 @@ import tools.forma.android.feature.kotlinFeatureDefinition import tools.forma.android.target.ApiTargetTemplate import tools.forma.android.target.LibraryTargetTemplate import tools.forma.validation.validator -import tools.forma.android.owner.Owner -import tools.forma.android.owner.NoOwner +import tools.forma.owner.Owner +import tools.forma.owner.NoOwner import tools.forma.android.validation.disallowResources import org.gradle.api.Project import tools.forma.deps.applyDependencies diff --git a/plugins/android/src/main/java/dataBinding.kt b/plugins/android/src/main/java/dataBinding.kt index b2736364..c7dc08c9 100644 --- a/plugins/android/src/main/java/dataBinding.kt +++ b/plugins/android/src/main/java/dataBinding.kt @@ -12,8 +12,8 @@ import tools.forma.android.target.DataBindingTargetTemplate import tools.forma.android.target.WidgetTargetTemplate import tools.forma.validation.validator import tools.forma.android.validation.onlyAllowLayouts -import tools.forma.android.owner.Owner -import tools.forma.android.owner.NoOwner +import tools.forma.owner.Owner +import tools.forma.owner.NoOwner import tools.forma.android.validation.disallowResources import tools.forma.android.visibility.Public import tools.forma.android.visibility.Visibility @@ -120,4 +120,4 @@ private fun checkDataBindingFlag() { if (!Forma.configuration.dataBinding) { throw IllegalArgumentException("Please enable dataBinding feature trough androidProjectConfiguration") } -} \ No newline at end of file +} diff --git a/plugins/android/src/main/java/library.kt b/plugins/android/src/main/java/library.kt index 711d2ffb..389e4e91 100644 --- a/plugins/android/src/main/java/library.kt +++ b/plugins/android/src/main/java/library.kt @@ -3,8 +3,8 @@ import tools.forma.android.feature.kotlinFeatureDefinition import tools.forma.android.target.LibraryTargetTemplate import tools.forma.android.target.TestUtilTargetTemplate import tools.forma.android.target.UtilTargetTemplate -import tools.forma.android.owner.NoOwner -import tools.forma.android.owner.Owner +import tools.forma.owner.NoOwner +import tools.forma.owner.Owner import tools.forma.validation.validator import tools.forma.android.visibility.Public import tools.forma.android.visibility.Visibility @@ -38,4 +38,4 @@ fun Project.library( repositoriesConfiguration = Forma.configuration.repositories, configurationFeatures = kaptConfigurationFeature() ) -} \ No newline at end of file +} diff --git a/plugins/android/src/main/java/testUtil.kt b/plugins/android/src/main/java/testUtil.kt index e9f9a932..2fba160c 100644 --- a/plugins/android/src/main/java/testUtil.kt +++ b/plugins/android/src/main/java/testUtil.kt @@ -2,8 +2,8 @@ import tools.forma.android.feature.applyFeatures import tools.forma.android.feature.kotlinFeatureDefinition import tools.forma.android.target.TestUtilTargetTemplate import tools.forma.android.target.UtilTargetTemplate -import tools.forma.android.owner.NoOwner -import tools.forma.android.owner.Owner +import tools.forma.owner.NoOwner +import tools.forma.owner.Owner import tools.forma.android.validation.disallowResources import tools.forma.validation.validator import tools.forma.android.visibility.Public diff --git a/plugins/android/src/main/java/tools/forma/android/dependencies/dataBinding.kt b/plugins/android/src/main/java/tools/forma/android/dependencies/dataBinding.kt deleted file mode 100644 index 6ea27a0d..00000000 --- a/plugins/android/src/main/java/tools/forma/android/dependencies/dataBinding.kt +++ /dev/null @@ -1,25 +0,0 @@ -package tools.forma.android.dependencies - -import Forma -import transitiveDeps - -/** - * Data Bindind dependencies declarations for internal use - */ -object dataBinding { - val viewBinding = transitiveDeps( - "androidx.databinding:viewbinding:${Forma.configuration.agpVersion}" - ) - - val runtime = transitiveDeps( - "androidx.databinding:databinding-runtime:${Forma.configuration.agpVersion}" - ) - - val common = transitiveDeps( - "androidx.databinding:databinding-common:${Forma.configuration.agpVersion}" - ) - - val adapters = transitiveDeps( - "androidx.databinding:databinding-adapters:${Forma.configuration.agpVersion}" - ) -} diff --git a/plugins/android/src/main/java/tools/forma/android/feature/FeatureDefinition.kt b/plugins/android/src/main/java/tools/forma/android/feature/FeatureDefinition.kt index cd0c65f1..b914ef19 100644 --- a/plugins/android/src/main/java/tools/forma/android/feature/FeatureDefinition.kt +++ b/plugins/android/src/main/java/tools/forma/android/feature/FeatureDefinition.kt @@ -2,7 +2,7 @@ package tools.forma.android.feature import Forma import tools.forma.deps.NamedDependency -import tools.forma.android.config.FormaConfiguration +import tools.forma.config.FormaConfiguration import emptyDependency import kotlin.reflect.KClass import org.gradle.api.Project diff --git a/plugins/android/src/main/java/tools/forma/android/feature/Kotlin.kt b/plugins/android/src/main/java/tools/forma/android/feature/Kotlin.kt index 19878dff..61d7e6d8 100644 --- a/plugins/android/src/main/java/tools/forma/android/feature/Kotlin.kt +++ b/plugins/android/src/main/java/tools/forma/android/feature/Kotlin.kt @@ -2,7 +2,7 @@ package tools.forma.android.feature import deps import kapt -import tools.forma.android.config.FormaConfiguration +import tools.forma.config.FormaConfiguration import org.gradle.api.Project import tools.forma.android.dependencies.kotlin import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidProjectExtension diff --git a/plugins/android/src/main/java/tools/forma/android/utils/android.kt b/plugins/android/src/main/java/tools/forma/android/utils/android.kt index 508ee435..ee25bacc 100644 --- a/plugins/android/src/main/java/tools/forma/android/utils/android.kt +++ b/plugins/android/src/main/java/tools/forma/android/utils/android.kt @@ -3,7 +3,7 @@ package tools.forma.android.utils import com.android.build.gradle.internal.CompileOptions import com.android.build.gradle.internal.dsl.BuildType import com.android.build.gradle.internal.dsl.DefaultConfig -import tools.forma.android.config.FormaConfiguration +import tools.forma.config.FormaConfiguration import org.gradle.api.NamedDomainObjectContainer data class BuildConfiguration( diff --git a/plugins/android/src/main/java/uiLibrary.kt b/plugins/android/src/main/java/uiLibrary.kt index 92e44961..c54e46f9 100644 --- a/plugins/android/src/main/java/uiLibrary.kt +++ b/plugins/android/src/main/java/uiLibrary.kt @@ -4,8 +4,8 @@ import tools.forma.android.feature.androidLibraryFeatureDefinition import tools.forma.android.feature.applyFeatures import tools.forma.android.feature.kaptConfigurationFeature import tools.forma.android.feature.kotlinAndroidFeatureDefinition -import tools.forma.android.owner.NoOwner -import tools.forma.android.owner.Owner +import tools.forma.owner.NoOwner +import tools.forma.owner.Owner import tools.forma.android.target.AndroidUtilTargetTemplate import tools.forma.android.target.ResourcesTargetTemplate import tools.forma.android.target.UiLibraryTargetTemplate diff --git a/plugins/android/src/main/java/util.kt b/plugins/android/src/main/java/util.kt index f4f8ae7b..2ea7de93 100644 --- a/plugins/android/src/main/java/util.kt +++ b/plugins/android/src/main/java/util.kt @@ -2,8 +2,8 @@ import tools.forma.android.feature.applyFeatures import tools.forma.android.feature.kotlinFeatureDefinition import tools.forma.android.target.UtilTargetTemplate import tools.forma.android.target.LibraryTargetTemplate -import tools.forma.android.owner.NoOwner -import tools.forma.android.owner.Owner +import tools.forma.owner.NoOwner +import tools.forma.owner.Owner import tools.forma.android.validation.disallowResources import tools.forma.validation.validator import tools.forma.android.visibility.Public diff --git a/plugins/android/src/main/java/viewBinding.kt b/plugins/android/src/main/java/viewBinding.kt index 4a7cc7a7..f256283c 100644 --- a/plugins/android/src/main/java/viewBinding.kt +++ b/plugins/android/src/main/java/viewBinding.kt @@ -2,8 +2,8 @@ import org.gradle.api.Project import tools.forma.android.feature.AndroidLibraryFeatureConfiguration import tools.forma.android.feature.androidLibraryFeatureDefinition import tools.forma.android.feature.applyFeatures -import tools.forma.android.owner.NoOwner -import tools.forma.android.owner.Owner +import tools.forma.owner.NoOwner +import tools.forma.owner.Owner import tools.forma.android.target.LibraryTargetTemplate import tools.forma.android.target.ResourcesTargetTemplate import tools.forma.android.target.ViewBindingTargetTemplate @@ -54,4 +54,4 @@ fun Project.viewBinding( dependencies = dependencies, repositoriesConfiguration = Forma.configuration.repositories ) -} \ No newline at end of file +} diff --git a/plugins/android/src/main/java/widget.kt b/plugins/android/src/main/java/widget.kt index bbf7293b..752b523a 100644 --- a/plugins/android/src/main/java/widget.kt +++ b/plugins/android/src/main/java/widget.kt @@ -6,8 +6,8 @@ import tools.forma.android.target.AndroidUtilTargetTemplate import tools.forma.android.target.UtilTargetTemplate import tools.forma.android.target.WidgetTargetTemplate import tools.forma.android.target.ResourcesTargetTemplate -import tools.forma.android.owner.NoOwner -import tools.forma.android.owner.Owner +import tools.forma.owner.NoOwner +import tools.forma.owner.Owner import tools.forma.validation.validator import tools.forma.android.visibility.Public import tools.forma.android.visibility.Visibility diff --git a/plugins/config/build.gradle.kts b/plugins/config/build.gradle.kts new file mode 100644 index 00000000..cbf11855 --- /dev/null +++ b/plugins/config/build.gradle.kts @@ -0,0 +1,7 @@ +plugins { + id("org.jetbrains.kotlin.jvm") + id("com.gradle.plugin-publish") +} + +group = "tools.forma" +version = "0.0.1" diff --git a/plugins/android/src/main/java/tools/forma/android/config/FormaConfiguration.kt b/plugins/config/src/main/java/tools/forma/config/FormaConfiguration.kt similarity index 69% rename from plugins/android/src/main/java/tools/forma/android/config/FormaConfiguration.kt rename to plugins/config/src/main/java/tools/forma/config/FormaConfiguration.kt index 53ed0ec0..d41f2154 100644 --- a/plugins/android/src/main/java/tools/forma/android/config/FormaConfiguration.kt +++ b/plugins/config/src/main/java/tools/forma/config/FormaConfiguration.kt @@ -1,6 +1,5 @@ -package tools.forma.android.config +package tools.forma.config -import com.android.apksig.internal.util.AndroidSdkVersion import org.gradle.api.JavaVersion import org.gradle.api.artifacts.dsl.RepositoryHandler @@ -17,9 +16,9 @@ import org.gradle.api.artifacts.dsl.RepositoryHandler // TODO how we make sure dependency sources is correct? // TODO Should we use extension class as the last arg for complex config? // TODO Should we restrict build flavor per module? -// TODO Manifest placeholders // TODO Configuration override // TODO 3rd party plugins +// TODO generalize and split into code configuration and android specific configuration data class FormaConfiguration( val minSdk: Int, val targetSdk: Int, @@ -30,7 +29,20 @@ data class FormaConfiguration( // Databinding is Application level feature, android_binary will be infering dataBinding flag, developers does not need to know about val dataBinding: Boolean = false, val compose: Boolean = false, - val vectorDrawablesUseSupportLibrary: Boolean = minSdk < AndroidSdkVersion.N, + val vectorDrawablesUseSupportLibrary: Boolean = true, val javaVersionCompatibility: JavaVersion = JavaVersion.VERSION_1_8, // Java/Kotlin configuration val mandatoryOwners: Boolean -) \ No newline at end of file +) + +/** + * Singleton project configuration store + */ +object FormaConfigurationStore { + + private lateinit var _configuration: FormaConfiguration + val configuration: FormaConfiguration get() = _configuration + + fun store(configuration: FormaConfiguration) { + _configuration = configuration + } +} diff --git a/plugins/android/src/main/java/tools/forma/android/plugin/PluginConfiguration.kt b/plugins/deps-core/src/main/java/tools/forma/deps/PluginConfiguration.kt similarity index 76% rename from plugins/android/src/main/java/tools/forma/android/plugin/PluginConfiguration.kt rename to plugins/deps-core/src/main/java/tools/forma/deps/PluginConfiguration.kt index c061cdea..961cb49b 100644 --- a/plugins/android/src/main/java/tools/forma/android/plugin/PluginConfiguration.kt +++ b/plugins/deps-core/src/main/java/tools/forma/deps/PluginConfiguration.kt @@ -1,4 +1,4 @@ -package tools.forma.android.plugin +package tools.forma.deps import kotlin.reflect.KClass @@ -8,4 +8,4 @@ data class PluginConfiguration( ) inline fun pluginConfiguration(noinline configuration: (TPluginExtension.() -> Unit)) = - PluginConfiguration(TPluginExtension::class, configuration) \ No newline at end of file + PluginConfiguration(TPluginExtension::class, configuration) diff --git a/plugins/android/src/main/java/tools/forma/android/plugin/PluginWrapper.kt b/plugins/deps-core/src/main/java/tools/forma/deps/PluginWrapper.kt similarity index 77% rename from plugins/android/src/main/java/tools/forma/android/plugin/PluginWrapper.kt rename to plugins/deps-core/src/main/java/tools/forma/deps/PluginWrapper.kt index 85a53c1c..98e34cf3 100644 --- a/plugins/android/src/main/java/tools/forma/android/plugin/PluginWrapper.kt +++ b/plugins/deps-core/src/main/java/tools/forma/deps/PluginWrapper.kt @@ -1,12 +1,9 @@ -package tools.forma.android.plugin +package tools.forma.deps -import Forma import emptyDependency import org.gradle.api.Project import org.gradle.kotlin.dsl.apply import org.gradle.kotlin.dsl.the -import tools.forma.deps.FormaDependency -import tools.forma.deps.applyDependencies import tools.forma.validation.EmptyValidator class PluginWrapper( @@ -23,8 +20,7 @@ class PluginWrapper( project.applyDependencies( validator = EmptyValidator, dependencies = dependencies, - repositoriesConfiguration = Forma.configuration.repositories + repositoriesConfiguration = {} ) } - -} \ No newline at end of file +} diff --git a/plugins/owners/build.gradle.kts b/plugins/owners/build.gradle.kts new file mode 100644 index 00000000..cbf11855 --- /dev/null +++ b/plugins/owners/build.gradle.kts @@ -0,0 +1,7 @@ +plugins { + id("org.jetbrains.kotlin.jvm") + id("com.gradle.plugin-publish") +} + +group = "tools.forma" +version = "0.0.1" diff --git a/plugins/android/src/main/java/tools/forma/android/owner/Owner.kt b/plugins/owners/src/main/java/tools/forma/owner/Owner.kt similarity index 83% rename from plugins/android/src/main/java/tools/forma/android/owner/Owner.kt rename to plugins/owners/src/main/java/tools/forma/owner/Owner.kt index a7ad6729..c410a87a 100644 --- a/plugins/android/src/main/java/tools/forma/android/owner/Owner.kt +++ b/plugins/owners/src/main/java/tools/forma/owner/Owner.kt @@ -1,4 +1,4 @@ -package tools.forma.android.owner +package tools.forma.owner sealed class Owner(val name: String, val email: String, val tags: Map) @@ -16,4 +16,4 @@ class Team( tags: Map = emptyMap() ) : Owner(name, emailAlias, tags) -object NoOwner : Owner("No owner", "", emptyMap()) \ No newline at end of file +object NoOwner : Owner("No owner", "", emptyMap())