mirror of
https://github.com/InsanusMokrassar/KotlinPublicationScriptsBuilder.git
synced 2025-10-23 15:20:04 +00:00
almost completed adding of new creds type UI
This commit is contained in:
@@ -53,6 +53,11 @@ data class MavenPublishingRepository(
|
||||
val usernameProperty: String,
|
||||
val passwordProperty: String
|
||||
): CredentialsType {
|
||||
constructor(baseParameter: String) : this(
|
||||
"${baseParameter.uppercase()}_USER",
|
||||
"${baseParameter.uppercase()}_PASSWORD",
|
||||
)
|
||||
|
||||
override fun buildCheckPart(): String = "(project.hasProperty('${usernameProperty}') || System.getenv('${usernameProperty}') != null) && (project.hasProperty('${passwordProperty}') || System.getenv('${passwordProperty}') != null)"
|
||||
override fun buildCredsPart(): String {
|
||||
return """
|
||||
|
@@ -3,24 +3,32 @@ package dev.inmo.kmppscriptbuilder.core.ui
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.setValue
|
||||
import dev.inmo.kmppscriptbuilder.core.models.MavenPublishingRepository
|
||||
import dev.inmo.kmppscriptbuilder.core.ui.utils.ButtonsPanel
|
||||
import dev.inmo.kmppscriptbuilder.core.ui.utils.CommonText
|
||||
import dev.inmo.kmppscriptbuilder.core.ui.utils.CommonTextField
|
||||
import dev.inmo.kmppscriptbuilder.core.ui.utils.DefaultSmallVerticalMargin
|
||||
import dev.inmo.kmppscriptbuilder.core.ui.utils.Drawer
|
||||
|
||||
class RepositoryState(
|
||||
name: String = "",
|
||||
url: String = ""
|
||||
url: String = "",
|
||||
credsType: MavenPublishingRepository.CredentialsType = MavenPublishingRepository.CredentialsType.UsernameAndPassword(name)
|
||||
) {
|
||||
var name: String by mutableStateOf(name)
|
||||
var url: String by mutableStateOf(url)
|
||||
var credsType by mutableStateOf(credsType)
|
||||
|
||||
fun toRepository() = MavenPublishingRepository(name, url)
|
||||
}
|
||||
|
||||
private fun MavenPublishingRepository.toRepositoryState() = RepositoryState(name, url)
|
||||
|
||||
expect class RepositoryCredentialTypeDrawer : Drawer<MavenPublishingRepository.CredentialsType>
|
||||
expect fun RepositoryCredentialTypeDrawerWithState(repositoryState: RepositoryState): RepositoryCredentialTypeDrawer
|
||||
|
||||
class RepositoriesView : ListView<RepositoryState>("Repositories info") {
|
||||
var repositories: List<MavenPublishingRepository>
|
||||
get() = itemsList.map { it.toRepository() }
|
||||
@@ -38,6 +46,10 @@ class RepositoriesView : ListView<RepositoryState>("Repositories info") {
|
||||
|
||||
@Composable
|
||||
override fun buildView(item: RepositoryState) {
|
||||
val credsTypesDrawer = remember {
|
||||
RepositoryCredentialTypeDrawerWithState(item)
|
||||
}
|
||||
|
||||
CommonText("Repository name")
|
||||
CommonTextField(
|
||||
item.name,
|
||||
@@ -49,6 +61,49 @@ class RepositoriesView : ListView<RepositoryState>("Repositories info") {
|
||||
item.url,
|
||||
"For example: https://repo.maven.apache.org/maven2/"
|
||||
) { item.url = it }
|
||||
|
||||
ButtonsPanel(
|
||||
"Credentials type",
|
||||
MavenPublishingRepository.CredentialsType.Nothing.takeIf { item.credsType != it } ?: item.credsType,
|
||||
MavenPublishingRepository.CredentialsType.UsernameAndPassword(item.name).takeIf { item.credsType !is MavenPublishingRepository.CredentialsType.UsernameAndPassword } ?: item.credsType,
|
||||
MavenPublishingRepository.CredentialsType.HttpHeaderCredentials("Authorization", "${item.name.uppercase()}_TOKEN").takeIf { item.credsType !is MavenPublishingRepository.CredentialsType.HttpHeaderCredentials } ?: item.credsType,
|
||||
) {
|
||||
with(credsTypesDrawer) {
|
||||
with(item.credsType) {
|
||||
draw()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
when (val credsType = item.credsType) {
|
||||
is MavenPublishingRepository.CredentialsType.HttpHeaderCredentials -> {
|
||||
CommonText("Header name")
|
||||
CommonTextField(credsType.headerName) {
|
||||
item.credsType = credsType.copy(headerName = it)
|
||||
}
|
||||
DefaultSmallVerticalMargin()
|
||||
|
||||
CommonText("Property name")
|
||||
CommonTextField(credsType.headerValueProperty) {
|
||||
item.credsType = credsType.copy(headerValueProperty = it)
|
||||
}
|
||||
}
|
||||
MavenPublishingRepository.CredentialsType.Nothing -> {
|
||||
CommonText("No parameters for absence of credentials")
|
||||
}
|
||||
is MavenPublishingRepository.CredentialsType.UsernameAndPassword -> {
|
||||
CommonText("Username property name")
|
||||
CommonTextField(credsType.usernameProperty) {
|
||||
item.credsType = credsType.copy(usernameProperty = it)
|
||||
}
|
||||
DefaultSmallVerticalMargin()
|
||||
|
||||
CommonText("Password property name")
|
||||
CommonTextField(credsType.passwordProperty) {
|
||||
item.credsType = credsType.copy(passwordProperty = it)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user