Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
package com.mitteloupe.cag.core.content

fun buildApplicationKotlinFile(projectNamespace: String): String {
val appName = projectNamespace.split('.').last().capitalized
fun buildApplicationKotlinFile(
projectNamespace: String,
appName: String
): String =
"""
package $projectNamespace

return """
package $projectNamespace
import android.app.Application
import dagger.hilt.android.HiltAndroidApp

import android.app.Application
@HiltAndroidApp
class ${appName}Application : Application()

class ${appName}Application : Application() {
override fun onCreate() {
super.onCreate()
}
}
""".trimIndent()
}
""".trimIndent()
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,7 @@ fun buildMainActivityKotlinFile(
val result =
if (enableCompose) {
val optimizedImports =
"""
import android.os.Bundle
"""import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.fillMaxSize
Expand All @@ -23,64 +22,60 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import $projectNamespace.ui.theme.${appName}Theme
""".optimizeImports()
"""
package $projectNamespace
$$"""package $$projectNamespace

$optimizedImports
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
${appName}Theme {
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background
) {
Greeting("Android")
}
}
}
$$optimizedImports
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
$${appName}Theme {
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background
) {
Greeting("Android")
}
}
}
}
}

@Composable
fun Greeting(name: String, modifier: Modifier = Modifier) {
Text(
text = "Hello ${'$'}name!",
modifier = modifier
)
}
@Composable
fun Greeting(name: String, modifier: Modifier = Modifier) {
Text(
text = "Hello $name!",
modifier = modifier
)
}

@Preview(showBackground = true)
@Composable
fun GreetingPreview() {
${appName}Theme {
Greeting("Android")
}
}
""".trimIndent()
@Preview(showBackground = true)
@Composable
fun GreetingPreview() {
$${appName}Theme {
Greeting("Android")
}
}
"""
} else {
val optimizedImports =
"""
import android.os.Bundle
"""import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import $projectNamespace.databinding.ActivityMainBinding
""".optimizeImports()
"""
package $projectNamespace

$optimizedImports
"""package $projectNamespace

class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
$optimizedImports
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
}
}
""".trimIndent()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
}
}
"""
}

return result
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ fun buildSettingsGradleScript(
featureNames.joinToString(
separator = "\n "
) { featureName ->
"""
$$"""
setOf("ui", "presentation", "domain", "data").forEach { layer ->
include("features:${featureName.lowercase()}:${'$'}layer")
include("features:$${featureName.lowercase()}:$layer")
}
"""
}
return """
return $$"""
enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")

pluginManagement {
Expand All @@ -33,7 +33,7 @@ fun buildSettingsGradleScript(
}
}

rootProject.name = "$projectName"
rootProject.name = "$$projectName"
include(":app")
include(":coroutine")

Expand All @@ -44,14 +44,14 @@ fun buildSettingsGradleScript(
"presentation-test",
"domain"
).forEach { module ->
include(":architecture:${'$'}module")
include(":architecture:$module")
}
$featuresBlock
$$featuresBlock
setOf(
"source",
"implementation"
).forEach { module ->
include(":datasource:${'$'}module")
include(":datasource:$module")
}
""".trimIndent()
}
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,9 @@ class GradleFileExtender internal constructor() {
configRelativePathFromModule: String = "../../detekt.yml"
): String =
if (catalog.isPluginAvailable(PluginConstants.DETEKT)) {
"""
$$"""
detekt {
config.setFrom("${'$'}projectDir/$configRelativePathFromModule")
config.setFrom("$projectDir/$$configRelativePathFromModule")
}
"""
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,12 +60,12 @@ class AppModuleContentGenerator(
) {
val appModuleDirectory = File(startDirectory, "app")
val sourceRoot = File(appModuleDirectory, "src/main/java")
val basePackageDir = buildPackageDirectory(sourceRoot, projectNamespace.toSegments())
val basePackageDirectory = buildPackageDirectory(sourceRoot, projectNamespace.toSegments())

fileCreator.createDirectoryIfNotExists(basePackageDir)
fileCreator.createDirectoryIfNotExists(basePackageDirectory)

val sanitizedAppName = appName.withoutSpaces()
val mainActivityFile = File(basePackageDir, "MainActivity.kt")
val mainActivityFile = File(basePackageDirectory, "MainActivity.kt")
fileCreator.createFileIfNotExists(mainActivityFile) {
buildMainActivityKotlinFile(
appName = sanitizedAppName,
Expand All @@ -74,9 +74,10 @@ class AppModuleContentGenerator(
)
}

val applicationFile = File(basePackageDir, "Application.kt")
val applicationContent = buildApplicationKotlinFile(projectNamespace)
fileCreator.createFileIfNotExists(applicationFile) { applicationContent }
val applicationFile = File(basePackageDirectory, "${sanitizedAppName}Application.kt")
fileCreator.createFileIfNotExists(applicationFile) {
buildApplicationKotlinFile(projectNamespace = projectNamespace, appName = sanitizedAppName)
}

generateAndroidResources(
appModuleDirectory = appModuleDirectory,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,9 +75,9 @@ class SettingsFileUpdater(
throw GenerationException("Failed to read ${settingsFile.name}: ${it.message}")
}

val groupedIncludeKts = "include(\"$groupPrefix:${'$'}module\")"
val groupedIncludeGroovyDouble = "include \"$groupPrefix:${'$'}module\""
val groupedIncludeGroovySingle = "include '$groupPrefix:${'$'}module'"
val groupedIncludeKts = $$"include(\"$$groupPrefix:$module\")"
val groupedIncludeGroovyDouble = $$"include \"$$groupPrefix:$module\""
val groupedIncludeGroovySingle = $$"include '$$groupPrefix:$module'"

val hasGroupedInclude =
originalFileContent.contains(groupedIncludeKts) ||
Expand Down Expand Up @@ -134,15 +134,15 @@ class SettingsFileUpdater(
"setOf(\n" +
modulesKtsBlock +
"\n).forEach { module ->\n" +
" include(\"$groupPrefix:${'$'}module\")\n" +
$$" include(\"$$groupPrefix:$module\")\n" +
"}"
)
} else {
append(
"[\n" +
modulesGroovyBlock +
"\n].each { module ->\n" +
" include \"$groupPrefix:${'$'}module\"\n" +
$$" include \"$$groupPrefix:$module\"\n" +
"}"
)
}
Expand Down
Loading