Skip to content

Commit

Permalink
bug fix and bind versions service
Browse files Browse the repository at this point in the history
  • Loading branch information
cnrture committed Sep 9, 2024
1 parent 67c109e commit 40cc4e1
Show file tree
Hide file tree
Showing 5 changed files with 235 additions and 215 deletions.
222 changes: 116 additions & 106 deletions src/main/kotlin/com/github/cnrture/quickprojectwizard/ComposeTemplate.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,128 +4,138 @@ import com.android.tools.idea.wizard.template.*
import com.android.tools.idea.wizard.template.impl.defaultPackageNameParameter
import com.github.cnrture.quickprojectwizard.general.ImageLibrary
import com.github.cnrture.quickprojectwizard.general.NetworkLibrary
import com.github.cnrture.quickprojectwizard.gradle.network.getVersions
import com.github.cnrture.quickprojectwizard.recipes.composeProjectRecipe
import kotlinx.coroutines.*
import java.net.URL
import java.util.*

val composeTemplate
get() = template {
name = "QPW - Compose Project"
description = "Quickly create a new project with libraries, tools and screens you want."
minApi = 23
constraints = listOf(TemplateConstraint.AndroidX, TemplateConstraint.Kotlin)
category = Category.Application
formFactor = FormFactor.Mobile
screens = listOf(WizardUiContext.NewProject, WizardUiContext.NewProjectExtraDetail)

val packageName = defaultPackageNameParameter
val projectName = packageName.value.split(".").last()
.replaceFirstChar { if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString() }

val selectedNetworkLibrary = enumParameter<NetworkLibrary> {
name = "Network Library"
default = NetworkLibrary.None
val composeTemplate = template {
name = "QPW - Compose Project"
description = "Quickly create a new project with libraries, tools and screens you want."
minApi = 23
constraints = listOf(TemplateConstraint.AndroidX, TemplateConstraint.Kotlin)
category = Category.Application
formFactor = FormFactor.Mobile
screens = listOf(WizardUiContext.NewProject, WizardUiContext.NewProjectExtraDetail)

runBlocking {
try {
getVersions()
println("Versions fetched successfully")
} catch (e: Exception) {
println("Failed to fetch versions: ${e.message}")
}
}

val isRoomEnable = booleanParameter {
name = "Room"
default = false
}
val packageName = defaultPackageNameParameter
val projectName = packageName.value.split(".").last()
.replaceFirstChar { if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString() }

val isHiltEnable = booleanParameter {
name = "Hilt"
default = false
}
val selectedNetworkLibrary = enumParameter<NetworkLibrary> {
name = "Network Library"
default = NetworkLibrary.None
}

val isNavigationEnable = booleanParameter {
name = "Navigation"
default = false
}
val isRoomEnable = booleanParameter {
name = "Room"
default = false
}

val selectedImageLibrary = enumParameter<ImageLibrary> {
name = "Image Library"
default = ImageLibrary.None
}
val isHiltEnable = booleanParameter {
name = "Hilt"
default = false
}

val isKtLintEnable = booleanParameter {
name = "KtLint"
default = false
}
val isNavigationEnable = booleanParameter {
name = "Navigation"
default = false
}

val isDetektEnable = booleanParameter {
name = "Detekt"
default = false
}
val selectedImageLibrary = enumParameter<ImageLibrary> {
name = "Image Library"
default = ImageLibrary.None
}

val isFirebaseEnable = booleanParameter {
name = "Firebase"
default = false
}
val isKtLintEnable = booleanParameter {
name = "KtLint"
default = false
}

val isWorkManagerEnable = booleanParameter {
name = "WorkManager"
default = false
}
val isDetektEnable = booleanParameter {
name = "Detekt"
default = false
}

val dataDiDomainPresentationUiPackages = booleanParameter {
name = "data - di - domain - presentation - ui packages"
default = false
}
val isFirebaseEnable = booleanParameter {
name = "Firebase"
default = false
}

val screens = stringParameter {
name = "Screens"
default = ""
}
val isWorkManagerEnable = booleanParameter {
name = "WorkManager"
default = false
}

val javaJvmVersion = stringParameter {
name = "Java & JVM Version"
default = "17"
}
val dataDiDomainPresentationUiPackages = booleanParameter {
name = "data - di - domain - presentation - ui packages"
default = false
}

widgets(
CheckBoxWidget(isRoomEnable),
CheckBoxWidget(isHiltEnable),
CheckBoxWidget(isNavigationEnable),
CheckBoxWidget(isFirebaseEnable),
CheckBoxWidget(isKtLintEnable),
CheckBoxWidget(isDetektEnable),
CheckBoxWidget(isWorkManagerEnable),
CheckBoxWidget(dataDiDomainPresentationUiPackages),
EnumWidget(selectedNetworkLibrary),
EnumWidget(selectedImageLibrary),
TextFieldWidget(screens),
LabelWidget(
"Please enter the screens you want to create. (e.g. Home, Detail, Profile)" +
"\nNote: First item is start destination"
),
LabelWidget(" "),
TextFieldWidget(javaJvmVersion),
LabelWidget("8 or 11 or 17 etc."),
LabelWidget(" "),
UrlLinkWidget("Created by Caner Ture", "https://bento.me/canerture"),
PackageNameWidget(packageName),
)
val screens = stringParameter {
name = "Screens"
default = ""
}

thumb = { Thumb { URL("https://canerture.com/quick_project_wizard_template.png") } }

recipe = { data: TemplateData ->
composeProjectRecipe(
moduleData = data as ModuleTemplateData,
packageName = packageName.value,
isRoomEnable = isRoomEnable.value,
isWorkManagerEnable = isWorkManagerEnable.value,
selectedNetworkLibrary = selectedNetworkLibrary.value,
isHiltEnable = isHiltEnable.value,
isNavigationEnable = isNavigationEnable.value,
selectedImageLibrary = selectedImageLibrary.value,
isKtLintEnable = isKtLintEnable.value,
isDetektEnable = isDetektEnable.value,
isFirebaseEnable = isFirebaseEnable.value,
dataDiDomainPresentationUiPackages = dataDiDomainPresentationUiPackages.value,
screens = screens.value,
minApi = minApi,
javaJvmVersion = javaJvmVersion.value,
projectName = projectName
)
}
val javaJvmVersion = stringParameter {
name = "Java & JVM Version"
default = "17"
}

widgets(
CheckBoxWidget(isRoomEnable),
CheckBoxWidget(isHiltEnable),
CheckBoxWidget(isNavigationEnable),
CheckBoxWidget(isFirebaseEnable),
CheckBoxWidget(isKtLintEnable),
CheckBoxWidget(isDetektEnable),
CheckBoxWidget(isWorkManagerEnable),
CheckBoxWidget(dataDiDomainPresentationUiPackages),
EnumWidget(selectedNetworkLibrary),
EnumWidget(selectedImageLibrary),
TextFieldWidget(screens),
LabelWidget(
"Please enter the screens you want to create. (e.g. Home, Detail, Profile)" +
"\nNote: First item is start destination"
),
LabelWidget(" "),
TextFieldWidget(javaJvmVersion),
LabelWidget("8 or 11 or 17 etc."),
LabelWidget(" "),
UrlLinkWidget("Created by Caner Ture", "https://bento.me/canerture"),
PackageNameWidget(packageName),
)

thumb = { Thumb { URL("https://canerture.com/quick_project_wizard_template.png") } }

recipe = { data: TemplateData ->
composeProjectRecipe(
moduleData = data as ModuleTemplateData,
packageName = packageName.value,
isRoomEnable = isRoomEnable.value,
isWorkManagerEnable = isWorkManagerEnable.value,
selectedNetworkLibrary = selectedNetworkLibrary.value,
isHiltEnable = isHiltEnable.value,
isNavigationEnable = isNavigationEnable.value,
selectedImageLibrary = selectedImageLibrary.value,
isKtLintEnable = isKtLintEnable.value,
isDetektEnable = isDetektEnable.value,
isFirebaseEnable = isFirebaseEnable.value,
dataDiDomainPresentationUiPackages = dataDiDomainPresentationUiPackages.value,
screens = screens.value,
minApi = minApi,
javaJvmVersion = javaJvmVersion.value,
projectName = projectName
)
}
}
Loading

0 comments on commit 40cc4e1

Please sign in to comment.