in aspoet/src/main/kotlin/com/google/androidstudiopoet/ModuleBlueprintFactory.kt [60:122]
fun createAndroidModule(
projectRoot: String,
androidModuleConfig: AndroidModuleConfig,
configMap: Map<String, ModuleConfig>,
buildSystemConfig: BuildSystemConfig?
): AndroidModuleBlueprint = createAndroidModule(
projectRoot,
createDependencies(projectRoot, androidModuleConfig, configMap, buildSystemConfig),
androidModuleConfig,
buildSystemConfig
)
private fun createAndroidModule(
projectRoot: String,
dependencies: Set<Dependency>,
androidModuleConfig: AndroidModuleConfig,
buildSystemConfig: BuildSystemConfig?,
): AndroidModuleBlueprint = AndroidModuleBlueprint(
androidModuleConfig.moduleName,
androidModuleConfig.activityCount,
androidModuleConfig.resourcesConfig,
projectRoot,
androidModuleConfig.hasLaunchActivity,
androidModuleConfig.useKotlin,
dependencies,
androidModuleConfig.productFlavorConfigs,
androidModuleConfig.buildTypes,
androidModuleConfig.java,
androidModuleConfig.kotlin,
androidModuleConfig.extraLines,
androidModuleConfig.generateTests,
androidModuleConfig.dataBindingConfig,
androidModuleConfig.composeConfig,
androidModuleConfig.viewBinding,
androidModuleConfig.androidBuildConfig,
androidModuleConfig.plugins,
buildSystemConfig?.generateBazelFiles
)
private fun createDependencies(projectRoot: String, moduleConfig: ModuleConfig, configMap: Map<String, ModuleConfig>, buildSystemConfig: BuildSystemConfig?): Set<Dependency> {
val moduleDependencies = moduleConfig.dependencies
?.mapNotNull { dependencyConfig ->
when (dependencyConfig) {
is DependencyConfig.ModuleDependencyConfig -> {
val dependencyModuleConfig = configMap[dependencyConfig.moduleName]
when (dependencyModuleConfig) {
is AndroidModuleConfig -> {
val methodToCall = getMethodToCall(projectRoot, dependencyModuleConfig, buildSystemConfig)
val resourcesToRefer = getResourcesToRefer(projectRoot, dependencyModuleConfig, buildSystemConfig)
AndroidModuleDependency(dependencyConfig.moduleName, methodToCall, dependencyConfig.method.toDependencyMethod(), resourcesToRefer)
}
is ModuleConfig -> {
val methodToCall = getMethodToCall(projectRoot, dependencyModuleConfig, buildSystemConfig)
ModuleDependency(dependencyConfig.moduleName, methodToCall, dependencyConfig.method.toDependencyMethod())
}
else -> null
}
}
is DependencyConfig.LibraryDependencyConfig -> LibraryDependency(dependencyConfig.method.toDependencyMethod(), dependencyConfig.library)
}
} ?: listOf()
return moduleDependencies.toHashSet()
}