fun createAndroidModule()

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()
    }