From 0a2d512778bf64c360b4fc0bf1b9f511481350d4 Mon Sep 17 00:00:00 2001 From: mayconcardoso Date: Tue, 28 Apr 2020 16:23:04 -0300 Subject: [PATCH] - Feature ignore (1.1.0) --- library/build.gradle | 2 +- .../generator/builder/FeatureBuilder.kt | 11 ++++++++++- .../generator/settings/FeatureSettings.kt | 5 +++++ .../module/AddFeatureOnSettingsFileTemplate.kt | 17 +++++++++++++---- 4 files changed, 29 insertions(+), 6 deletions(-) diff --git a/library/build.gradle b/library/build.gradle index 66d7341..e2f0e76 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -33,7 +33,7 @@ ext { siteUrl = 'https://github.com/MayconCardoso/ArchitectureBoilerplateGenerator' gitUrl = 'https://github.com/MayconCardoso/ArchitectureBoilerplateGenerator.git' - libraryVersion = '1.0.4' + libraryVersion = '1.1.0' developerId = 'mayconcardoso' developerName = 'Maycon Cardoso' diff --git a/library/src/main/java/com/mctech/architecture/generator/builder/FeatureBuilder.kt b/library/src/main/java/com/mctech/architecture/generator/builder/FeatureBuilder.kt index 9d7eef4..3ab9faa 100644 --- a/library/src/main/java/com/mctech/architecture/generator/builder/FeatureBuilder.kt +++ b/library/src/main/java/com/mctech/architecture/generator/builder/FeatureBuilder.kt @@ -5,6 +5,7 @@ import com.mctech.architecture.generator.context.FeatureContext import com.mctech.architecture.generator.path.ModuleDefaultLayers import com.mctech.architecture.generator.settings.FeatureSettings import com.mctech.architecture.generator.settings.GlobalSettings +import com.mctech.architecture.generator.strategy.FileDuplicatedStrategy import com.mctech.architecture.generator.templates.data.api.RetrofitAPITemplate import com.mctech.architecture.generator.templates.data.datasource.DataSourceInterfaceTemplate import com.mctech.architecture.generator.templates.data.datasource.LocalDataSourceTemplate @@ -106,6 +107,14 @@ class FeatureGenerator(val settings: FeatureSettings, featureName: FeatureName) // Set context FeatureContext.featureGenerator = this + // Need to ignore feature + if( + settings.featureDuplicatedStrategy is FileDuplicatedStrategy.Ignore + && AddFeatureOnSettingsFileTemplate.containsFeature() + ){ + return + } + // Generate files domainEntityTemplateGenerator.generate() domainServiceGenerator.generate() @@ -126,7 +135,7 @@ class FeatureGenerator(val settings: FeatureSettings, featureName: FeatureName) // Create final templates of the feature module. - AddFeatureOnSettingsFileTemplate().generate() + AddFeatureOnSettingsFileTemplate.generate() AndroidManifestTemplate(featureModulePath).generate() StringTemplate(featureModulePath).generate() diff --git a/library/src/main/java/com/mctech/architecture/generator/settings/FeatureSettings.kt b/library/src/main/java/com/mctech/architecture/generator/settings/FeatureSettings.kt index a26bde7..7e602ca 100644 --- a/library/src/main/java/com/mctech/architecture/generator/settings/FeatureSettings.kt +++ b/library/src/main/java/com/mctech/architecture/generator/settings/FeatureSettings.kt @@ -19,6 +19,11 @@ data class FeatureSettings( */ var fileDuplicatedStrategy: FileDuplicatedStrategy = FileDuplicatedStrategy.Ignore, + /** + * The duplicate feature strategy. It says the generator how handle when a feature that is being generated already exists. + */ + var featureDuplicatedStrategy: FileDuplicatedStrategy = FileDuplicatedStrategy.Ignore, + /** * When true the generator will create all of the use cases with @Inject annotation on the constructor. * So basically all of the UseCases will be auto-injectable by dagger. diff --git a/library/src/main/java/com/mctech/architecture/generator/templates/presentation/module/AddFeatureOnSettingsFileTemplate.kt b/library/src/main/java/com/mctech/architecture/generator/templates/presentation/module/AddFeatureOnSettingsFileTemplate.kt index 557e228..3f5ab79 100644 --- a/library/src/main/java/com/mctech/architecture/generator/templates/presentation/module/AddFeatureOnSettingsFileTemplate.kt +++ b/library/src/main/java/com/mctech/architecture/generator/templates/presentation/module/AddFeatureOnSettingsFileTemplate.kt @@ -10,15 +10,20 @@ import com.mctech.architecture.generator.templates.Template /** * @author MAYCON CARDOSO on 2019-12-02. */ -open class AddFeatureOnSettingsFileTemplate : Template() { +object AddFeatureOnSettingsFileTemplate : Template() { + + private val moduleName by lazy { + "include ':features:feature-${featureSegment()}'" + } + private val linesOfFile by lazy { + readFile(this).toMutableList() + } + override fun getPath(): String { return baseProjectPath + "settings.gradle" } override fun generate() { - val linesOfFile = readFile(this).toMutableList() - - val moduleName = "include ':features:feature-${featureSegment()}'" // Add new module on the of the file. if (linesOfFile.contains(moduleName).not()) { linesOfFile.add(moduleName) @@ -31,4 +36,8 @@ open class AddFeatureOnSettingsFileTemplate : Template() { } } } + + fun containsFeature() : Boolean { + return linesOfFile.contains(moduleName) + } } \ No newline at end of file