mirror of
https://github.com/InsanusMokrassar/KotlinPublicationScriptsBuilder.git
synced 2024-11-14 20:33:55 +00:00
complete
This commit is contained in:
parent
788fe49aa4
commit
c6b1289f5a
@ -33,13 +33,10 @@ data class MavenPublishingRepository(
|
|||||||
val name: String,
|
val name: String,
|
||||||
val url: String,
|
val url: String,
|
||||||
val credsType: CredentialsType = CredentialsType.UsernameAndPassword(
|
val credsType: CredentialsType = CredentialsType.UsernameAndPassword(
|
||||||
"${name.uppercase()}_USER",
|
CredentialsType.UsernameAndPassword.defaultUsernameProperty(name),
|
||||||
"${name.uppercase()}_PASSWORD"
|
CredentialsType.UsernameAndPassword.defaultPasswordProperty(name),
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
val defaultUsernameProperty = "${name.uppercase()}_USER"
|
|
||||||
val defaultPasswordProperty = "${name.uppercase()}_PASSWORD"
|
|
||||||
val defaultHeaderValueProperty = "${name.uppercase()}_TOKEN"
|
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
sealed interface CredentialsType {
|
sealed interface CredentialsType {
|
||||||
@ -54,8 +51,8 @@ data class MavenPublishingRepository(
|
|||||||
val passwordProperty: String
|
val passwordProperty: String
|
||||||
): CredentialsType {
|
): CredentialsType {
|
||||||
constructor(baseParameter: String) : this(
|
constructor(baseParameter: String) : this(
|
||||||
"${baseParameter.uppercase()}_USER",
|
defaultUsernameProperty(baseParameter),
|
||||||
"${baseParameter.uppercase()}_PASSWORD",
|
defaultPasswordProperty(baseParameter)
|
||||||
)
|
)
|
||||||
|
|
||||||
override fun buildCheckPart(): String = "(project.hasProperty('${usernameProperty}') || System.getenv('${usernameProperty}') != null) && (project.hasProperty('${passwordProperty}') || System.getenv('${passwordProperty}') != null)"
|
override fun buildCheckPart(): String = "(project.hasProperty('${usernameProperty}') || System.getenv('${usernameProperty}') != null) && (project.hasProperty('${passwordProperty}') || System.getenv('${passwordProperty}') != null)"
|
||||||
@ -67,6 +64,15 @@ return """
|
|||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
fun defaultUsernameProperty(name: String): String {
|
||||||
|
return "${name.uppercase()}_USER"
|
||||||
|
}
|
||||||
|
fun defaultPasswordProperty(name: String): String {
|
||||||
|
return "${name.uppercase()}_PASSWORD"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@Serializable
|
@Serializable
|
||||||
data class HttpHeaderCredentials(
|
data class HttpHeaderCredentials(
|
||||||
@ -82,6 +88,12 @@ return """
|
|||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
fun defaultValueProperty(name: String): String {
|
||||||
|
return "${name.uppercase()}_TOKEN"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun buildCheckPart(): String
|
fun buildCheckPart(): String
|
||||||
|
@ -5,7 +5,7 @@ import androidx.compose.runtime.getValue
|
|||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
import androidx.compose.runtime.setValue
|
import androidx.compose.runtime.setValue
|
||||||
import dev.inmo.kmppscriptbuilder.core.models.Config
|
import dev.inmo.kmppscriptbuilder.core.models.Config
|
||||||
import dev.inmo.kmppscriptbuilder.core.ui.utils.DefaultBox
|
import dev.inmo.kmppscriptbuilder.core.ui.utils.DefaultContentColumn
|
||||||
import dev.inmo.kmppscriptbuilder.core.ui.utils.DefaultDivider
|
import dev.inmo.kmppscriptbuilder.core.ui.utils.DefaultDivider
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
@ -45,7 +45,7 @@ class BuilderView : View() {
|
|||||||
config = it
|
config = it
|
||||||
}
|
}
|
||||||
|
|
||||||
DefaultBox {
|
DefaultContentColumn {
|
||||||
projectTypeView.build()
|
projectTypeView.build()
|
||||||
DefaultDivider()
|
DefaultDivider()
|
||||||
licensesView.build()
|
licensesView.build()
|
||||||
|
@ -7,7 +7,6 @@ import androidx.compose.runtime.setValue
|
|||||||
import dev.inmo.kmppscriptbuilder.core.models.Developer
|
import dev.inmo.kmppscriptbuilder.core.models.Developer
|
||||||
import dev.inmo.kmppscriptbuilder.core.ui.utils.CommonText
|
import dev.inmo.kmppscriptbuilder.core.ui.utils.CommonText
|
||||||
import dev.inmo.kmppscriptbuilder.core.ui.utils.CommonTextField
|
import dev.inmo.kmppscriptbuilder.core.ui.utils.CommonTextField
|
||||||
import dev.inmo.kmppscriptbuilder.core.ui.utils.DefaultBox
|
|
||||||
import dev.inmo.kmppscriptbuilder.core.ui.utils.DefaultSmallVerticalMargin
|
import dev.inmo.kmppscriptbuilder.core.ui.utils.DefaultSmallVerticalMargin
|
||||||
|
|
||||||
class DeveloperState(
|
class DeveloperState(
|
||||||
|
@ -9,6 +9,7 @@ import dev.inmo.kmppscriptbuilder.core.models.MavenPublishingRepository
|
|||||||
import dev.inmo.kmppscriptbuilder.core.ui.utils.ButtonsPanel
|
import dev.inmo.kmppscriptbuilder.core.ui.utils.ButtonsPanel
|
||||||
import dev.inmo.kmppscriptbuilder.core.ui.utils.CommonText
|
import dev.inmo.kmppscriptbuilder.core.ui.utils.CommonText
|
||||||
import dev.inmo.kmppscriptbuilder.core.ui.utils.CommonTextField
|
import dev.inmo.kmppscriptbuilder.core.ui.utils.CommonTextField
|
||||||
|
import dev.inmo.kmppscriptbuilder.core.ui.utils.DefaultContentColumn
|
||||||
import dev.inmo.kmppscriptbuilder.core.ui.utils.DefaultSmallVerticalMargin
|
import dev.inmo.kmppscriptbuilder.core.ui.utils.DefaultSmallVerticalMargin
|
||||||
import dev.inmo.kmppscriptbuilder.core.ui.utils.Drawer
|
import dev.inmo.kmppscriptbuilder.core.ui.utils.Drawer
|
||||||
|
|
||||||
@ -21,10 +22,10 @@ class RepositoryState(
|
|||||||
var url: String by mutableStateOf(url)
|
var url: String by mutableStateOf(url)
|
||||||
var credsType by mutableStateOf(credsType)
|
var credsType by mutableStateOf(credsType)
|
||||||
|
|
||||||
fun toRepository() = MavenPublishingRepository(name, url)
|
fun toRepository() = MavenPublishingRepository(name, url, credsType)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun MavenPublishingRepository.toRepositoryState() = RepositoryState(name, url)
|
private fun MavenPublishingRepository.toRepositoryState() = RepositoryState(name, url, credsType)
|
||||||
|
|
||||||
expect class RepositoryCredentialTypeDrawer : Drawer<MavenPublishingRepository.CredentialsType>
|
expect class RepositoryCredentialTypeDrawer : Drawer<MavenPublishingRepository.CredentialsType>
|
||||||
expect fun RepositoryCredentialTypeDrawerWithState(repositoryState: RepositoryState): RepositoryCredentialTypeDrawer
|
expect fun RepositoryCredentialTypeDrawerWithState(repositoryState: RepositoryState): RepositoryCredentialTypeDrawer
|
||||||
@ -54,7 +55,34 @@ class RepositoriesView : ListView<RepositoryState>("Repositories info") {
|
|||||||
CommonTextField(
|
CommonTextField(
|
||||||
item.name,
|
item.name,
|
||||||
"This name will be used to identify repository in gradle"
|
"This name will be used to identify repository in gradle"
|
||||||
) { item.name = it }
|
) {
|
||||||
|
val previous = item.name
|
||||||
|
item.name = it
|
||||||
|
when (val currentCredsType = item.credsType) {
|
||||||
|
is MavenPublishingRepository.CredentialsType.HttpHeaderCredentials -> {
|
||||||
|
if (MavenPublishingRepository.CredentialsType.HttpHeaderCredentials.defaultValueProperty(previous) == currentCredsType.headerValueProperty) {
|
||||||
|
item.credsType = currentCredsType.copy(
|
||||||
|
headerValueProperty = MavenPublishingRepository.CredentialsType.HttpHeaderCredentials.defaultValueProperty(it)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
MavenPublishingRepository.CredentialsType.Nothing -> {}
|
||||||
|
is MavenPublishingRepository.CredentialsType.UsernameAndPassword -> {
|
||||||
|
var current: MavenPublishingRepository.CredentialsType.UsernameAndPassword = currentCredsType
|
||||||
|
if (MavenPublishingRepository.CredentialsType.UsernameAndPassword.defaultUsernameProperty(previous) == currentCredsType.usernameProperty) {
|
||||||
|
current = current.copy(
|
||||||
|
usernameProperty = MavenPublishingRepository.CredentialsType.UsernameAndPassword.defaultUsernameProperty(it)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
if (MavenPublishingRepository.CredentialsType.UsernameAndPassword.defaultPasswordProperty(previous) == currentCredsType.passwordProperty) {
|
||||||
|
current = current.copy(
|
||||||
|
passwordProperty = MavenPublishingRepository.CredentialsType.UsernameAndPassword.defaultPasswordProperty(it)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
item.credsType = current
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
DefaultSmallVerticalMargin()
|
DefaultSmallVerticalMargin()
|
||||||
CommonText("Repository url")
|
CommonText("Repository url")
|
||||||
CommonTextField(
|
CommonTextField(
|
||||||
@ -66,41 +94,46 @@ class RepositoriesView : ListView<RepositoryState>("Repositories info") {
|
|||||||
"Credentials type",
|
"Credentials type",
|
||||||
MavenPublishingRepository.CredentialsType.Nothing.takeIf { item.credsType != it } ?: item.credsType,
|
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.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,
|
MavenPublishingRepository.CredentialsType.HttpHeaderCredentials(
|
||||||
|
"Authorization",
|
||||||
|
MavenPublishingRepository.CredentialsType.HttpHeaderCredentials.defaultValueProperty(item.name)
|
||||||
|
).takeIf { item.credsType !is MavenPublishingRepository.CredentialsType.HttpHeaderCredentials } ?: item.credsType,
|
||||||
) {
|
) {
|
||||||
with(credsTypesDrawer) {
|
with(credsTypesDrawer) {
|
||||||
with(item.credsType) {
|
with(it) {
|
||||||
draw()
|
draw()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
when (val credsType = item.credsType) {
|
DefaultContentColumn {
|
||||||
is MavenPublishingRepository.CredentialsType.HttpHeaderCredentials -> {
|
when (val credsType = item.credsType) {
|
||||||
CommonText("Header name")
|
is MavenPublishingRepository.CredentialsType.HttpHeaderCredentials -> {
|
||||||
CommonTextField(credsType.headerName) {
|
CommonText("Header name")
|
||||||
item.credsType = credsType.copy(headerName = it)
|
CommonTextField(credsType.headerName) {
|
||||||
}
|
item.credsType = credsType.copy(headerName = it)
|
||||||
DefaultSmallVerticalMargin()
|
}
|
||||||
|
DefaultSmallVerticalMargin()
|
||||||
|
|
||||||
CommonText("Property name")
|
CommonText("Property name")
|
||||||
CommonTextField(credsType.headerValueProperty) {
|
CommonTextField(credsType.headerValueProperty) {
|
||||||
item.credsType = credsType.copy(headerValueProperty = it)
|
item.credsType = credsType.copy(headerValueProperty = it)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
MavenPublishingRepository.CredentialsType.Nothing -> {
|
||||||
MavenPublishingRepository.CredentialsType.Nothing -> {
|
CommonText("No parameters for absence of credentials")
|
||||||
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()
|
is MavenPublishingRepository.CredentialsType.UsernameAndPassword -> {
|
||||||
|
CommonText("Username property name")
|
||||||
|
CommonTextField(credsType.usernameProperty) {
|
||||||
|
item.credsType = credsType.copy(usernameProperty = it)
|
||||||
|
}
|
||||||
|
DefaultSmallVerticalMargin()
|
||||||
|
|
||||||
CommonText("Password property name")
|
CommonText("Password property name")
|
||||||
CommonTextField(credsType.passwordProperty) {
|
CommonTextField(credsType.passwordProperty) {
|
||||||
item.credsType = credsType.copy(passwordProperty = it)
|
item.credsType = credsType.copy(passwordProperty = it)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
package dev.inmo.kmppscriptbuilder.core.ui
|
package dev.inmo.kmppscriptbuilder.core.ui
|
||||||
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import dev.inmo.kmppscriptbuilder.core.ui.utils.DefaultBox
|
import dev.inmo.kmppscriptbuilder.core.ui.utils.DefaultContentColumn
|
||||||
|
|
||||||
abstract class VerticalView(protected val title: String) : View() {
|
abstract class VerticalView(protected val title: String) : View() {
|
||||||
abstract val content: @Composable () -> Unit
|
abstract val content: @Composable () -> Unit
|
||||||
@Composable
|
@Composable
|
||||||
override fun build() {
|
override fun build() {
|
||||||
DefaultBox {
|
DefaultContentColumn {
|
||||||
DrawVertically(title, content)
|
DrawVertically(title, content)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -46,4 +46,4 @@ expect fun DefaultDivider()
|
|||||||
expect fun DefaultSmallVerticalMargin()
|
expect fun DefaultSmallVerticalMargin()
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
expect fun DefaultBox(block: @Composable () -> Unit)
|
expect fun DefaultContentColumn(block: @Composable () -> Unit)
|
||||||
|
@ -5,17 +5,15 @@ import dev.inmo.jsuikit.elements.DefaultButton
|
|||||||
import dev.inmo.jsuikit.modifiers.UIKitButton
|
import dev.inmo.jsuikit.modifiers.UIKitButton
|
||||||
import dev.inmo.jsuikit.modifiers.UIKitMargin
|
import dev.inmo.jsuikit.modifiers.UIKitMargin
|
||||||
import dev.inmo.jsuikit.modifiers.UIKitUtility
|
import dev.inmo.jsuikit.modifiers.UIKitUtility
|
||||||
import dev.inmo.jsuikit.modifiers.builder
|
import dev.inmo.kmppscriptbuilder.core.ui.utils.DefaultContentColumn
|
||||||
import dev.inmo.kmppscriptbuilder.core.ui.utils.DefaultBox
|
|
||||||
import dev.inmo.kmppscriptbuilder.core.ui.utils.Drawer
|
import dev.inmo.kmppscriptbuilder.core.ui.utils.Drawer
|
||||||
import dev.inmo.kmppscriptbuilder.core.ui.utils.NoTransform
|
import dev.inmo.kmppscriptbuilder.core.ui.utils.NoTransform
|
||||||
import org.jetbrains.compose.web.dom.Div
|
|
||||||
|
|
||||||
actual class ListViewDrawer<T> : Drawer<ListView<T>> {
|
actual class ListViewDrawer<T> : Drawer<ListView<T>> {
|
||||||
@Composable
|
@Composable
|
||||||
override fun ListView<T>.draw() {
|
override fun ListView<T>.draw() {
|
||||||
itemsList.forEach { item ->
|
itemsList.forEach { item ->
|
||||||
DefaultBox {
|
DefaultContentColumn {
|
||||||
buildView(item)
|
buildView(item)
|
||||||
DefaultButton(removeItemText, UIKitButton.Type.Default, UIKitMargin.Small, UIKitUtility.NoTransform, UIKitUtility.Border.Rounded) {
|
DefaultButton(removeItemText, UIKitButton.Type.Default, UIKitMargin.Small, UIKitUtility.NoTransform, UIKitUtility.Border.Rounded) {
|
||||||
itemsList.remove(item)
|
itemsList.remove(item)
|
||||||
|
@ -121,7 +121,7 @@ actual fun DefaultSmallVerticalMargin() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
actual fun DefaultBox(block: @Composable () -> Unit) {
|
actual fun DefaultContentColumn(block: @Composable () -> Unit) {
|
||||||
Div(attrsBuilder(UIKitMargin.Small.Horizontal, UIKitMargin.Small.Vertical)) {
|
Div(attrsBuilder(UIKitMargin.Small.Horizontal, UIKitMargin.Small.Vertical)) {
|
||||||
block()
|
block()
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package dev.inmo.kmppscriptbuilder.core.ui
|
package dev.inmo.kmppscriptbuilder.core.ui
|
||||||
|
|
||||||
import androidx.compose.foundation.layout.Column
|
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.material.Button
|
import androidx.compose.material.Button
|
||||||
import androidx.compose.material.OutlinedButton
|
import androidx.compose.material.OutlinedButton
|
||||||
@ -8,14 +7,14 @@ import androidx.compose.runtime.Composable
|
|||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import dev.inmo.kmppscriptbuilder.core.ui.utils.CommonText
|
import dev.inmo.kmppscriptbuilder.core.ui.utils.CommonText
|
||||||
import dev.inmo.kmppscriptbuilder.core.ui.utils.DefaultBox
|
import dev.inmo.kmppscriptbuilder.core.ui.utils.DefaultContentColumn
|
||||||
import dev.inmo.kmppscriptbuilder.core.ui.utils.Drawer
|
import dev.inmo.kmppscriptbuilder.core.ui.utils.Drawer
|
||||||
|
|
||||||
actual class ListViewDrawer<T> : Drawer<ListView<T>> {
|
actual class ListViewDrawer<T> : Drawer<ListView<T>> {
|
||||||
@Composable
|
@Composable
|
||||||
override fun ListView<T>.draw() {
|
override fun ListView<T>.draw() {
|
||||||
itemsList.forEach { item ->
|
itemsList.forEach { item ->
|
||||||
DefaultBox {
|
DefaultContentColumn {
|
||||||
buildView(item)
|
buildView(item)
|
||||||
OutlinedButton({ itemsList.remove(item) }, Modifier.padding(8.dp)) {
|
OutlinedButton({ itemsList.remove(item) }, Modifier.padding(8.dp)) {
|
||||||
CommonText(removeItemText,)
|
CommonText(removeItemText,)
|
||||||
|
@ -106,7 +106,7 @@ actual fun DefaultSmallVerticalMargin() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
actual fun DefaultBox(block: @Composable () -> Unit) {
|
actual fun DefaultContentColumn(block: @Composable () -> Unit) {
|
||||||
Column(Modifier.padding(8.dp)) {
|
Column(Modifier.padding(8.dp)) {
|
||||||
block()
|
block()
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user