diff --git a/templates-impl/src/main/java/com/itsaky/androidide/templates/impl/zip/ZipJson.kt b/templates-impl/src/main/java/com/itsaky/androidide/templates/impl/zip/ZipJson.kt index 3dc2b7859d..ec55aa7c2e 100644 --- a/templates-impl/src/main/java/com/itsaky/androidide/templates/impl/zip/ZipJson.kt +++ b/templates-impl/src/main/java/com/itsaky/androidide/templates/impl/zip/ZipJson.kt @@ -10,6 +10,7 @@ data class TemplateJson( val version: String?, val tooltipTag: String = "", val defaultSaveLocation: String? = null, + val defaultAppName: String? = null, val parameters: ParametersJson? = null, val system: SystemParametersJson? = null ) diff --git a/templates-impl/src/main/java/com/itsaky/androidide/templates/impl/zip/ZipRecipeExecutor.kt b/templates-impl/src/main/java/com/itsaky/androidide/templates/impl/zip/ZipRecipeExecutor.kt index efe91dbdd0..345763b956 100644 --- a/templates-impl/src/main/java/com/itsaky/androidide/templates/impl/zip/ZipRecipeExecutor.kt +++ b/templates-impl/src/main/java/com/itsaky/androidide/templates/impl/zip/ZipRecipeExecutor.kt @@ -37,6 +37,7 @@ class ZipRecipeExecutor( companion object { private val log = LoggerFactory.getLogger(ZipRecipeExecutor::class.java) + private val CLASS_NAME_PATTERN = Regex("[^a-zA-Z0-9]") } override fun execute( @@ -73,7 +74,9 @@ class ZipRecipeExecutor( .syntax(customSyntax) .build() - val (identifiers, warnings) = metaJson.pebbleParams(data, defModule, params) + val className = data.name.replace(CLASS_NAME_PATTERN, "") + val (baseIdentifiers, warnings) = metaJson.pebbleParams(data, defModule, params) + val identifiers = baseIdentifiers + (KEY_CLASS_NAME to className) if (warnings.isNotEmpty()) { warn("Identifier warnings: ${warnings.joinToString(System.lineSeparator())}") } @@ -98,6 +101,7 @@ class ZipRecipeExecutor( val relativePath = normalized.removePrefix("$basePath/") .replace(packageName.value, defModule.packageName.replace(".", "/")) + .replace(KEY_CLASS_NAME, className) val outFile = File(projectDir, relativePath.removeSuffix(TEMPLATE_EXTENSION)).canonicalFile diff --git a/templates-impl/src/main/java/com/itsaky/androidide/templates/impl/zip/ZipTemplateConstants.kt b/templates-impl/src/main/java/com/itsaky/androidide/templates/impl/zip/ZipTemplateConstants.kt index 0afb7c77d8..9b4c69104a 100644 --- a/templates-impl/src/main/java/com/itsaky/androidide/templates/impl/zip/ZipTemplateConstants.kt +++ b/templates-impl/src/main/java/com/itsaky/androidide/templates/impl/zip/ZipTemplateConstants.kt @@ -17,6 +17,7 @@ const val DELIM_COMMENT_CLOSE = "#}" const val KEY_PACKAGE_NAME = "PACKAGE_NAME" const val KEY_APP_NAME = "APP_NAME" +const val KEY_CLASS_NAME = "CLASS_NAME" const val KEY_SAVE_LOCATION = "SAVE_LOCATION" const val KEY_AGP_VERSION = "AGP_VERSION" const val KEY_KOTLIN_VERSION = "KOTLIN_VERSION" diff --git a/templates-impl/src/main/java/com/itsaky/androidide/templates/impl/zip/ZipTemplateReader.kt b/templates-impl/src/main/java/com/itsaky/androidide/templates/impl/zip/ZipTemplateReader.kt index 7b5358fb12..a193e62ff6 100644 --- a/templates-impl/src/main/java/com/itsaky/androidide/templates/impl/zip/ZipTemplateReader.kt +++ b/templates-impl/src/main/java/com/itsaky/androidide/templates/impl/zip/ZipTemplateReader.kt @@ -13,6 +13,7 @@ import com.itsaky.androidide.templates.TextFieldWidget import com.itsaky.androidide.templates.Widget import com.itsaky.androidide.templates.base.baseZipProject import com.itsaky.androidide.templates.booleanParameter +import com.itsaky.androidide.templates.projectNameParameter import com.itsaky.androidide.templates.stringParameter import com.itsaky.androidide.utils.FeatureFlags import org.slf4j.LoggerFactory @@ -86,6 +87,9 @@ object ZipTemplateReader { } val project = baseZipProject( + projectName = projectNameParameter { + metaJson.defaultAppName?.let { default = it } + }, showLanguage = (metaJson.parameters?.optional?.language != null), showMinSdk = (metaJson.parameters?.optional?.minsdk != null), showPackageName = (metaJson.parameters?.required?.packageName != null),