2021-03-01 14:17:06 +00:00
|
|
|
package dev.inmo.kmppscriptbuilder.desktop.utils
|
2019-11-20 15:16:34 +00:00
|
|
|
|
2021-03-01 14:17:06 +00:00
|
|
|
import dev.inmo.kmppscriptbuilder.core.models.Config
|
2022-11-15 12:53:59 +00:00
|
|
|
import dev.inmo.kmppscriptbuilder.core.ui.utils.FileFilter
|
2021-03-01 14:17:06 +00:00
|
|
|
import dev.inmo.kmppscriptbuilder.core.utils.serialFormat
|
2019-11-20 15:16:34 +00:00
|
|
|
import java.io.File
|
|
|
|
import javax.swing.JFileChooser
|
|
|
|
|
|
|
|
private const val appExtension = "kpsb"
|
|
|
|
|
|
|
|
private var lastFile: File? = null
|
|
|
|
|
|
|
|
fun loadConfigFile(file: File): Config {
|
|
|
|
lastFile = file
|
|
|
|
return serialFormat.decodeFromString(Config.serializer(), file.readText())
|
|
|
|
}
|
|
|
|
|
|
|
|
fun loadConfig(): Config? {
|
|
|
|
val fc = JFileChooser(lastFile ?.parent)
|
|
|
|
fc.addChoosableFileFilter(FileFilter("Kotlin Publication Scripts Builder", Regex(".*\\.$appExtension")))
|
|
|
|
fc.addChoosableFileFilter(FileFilter("JSON", Regex(".*\\.json")))
|
|
|
|
return when (fc.showOpenDialog(null)) {
|
|
|
|
JFileChooser.APPROVE_OPTION -> {
|
|
|
|
val file = fc.selectedFile
|
|
|
|
lastFile = file
|
|
|
|
return serialFormat.decodeFromString(Config.serializer(), fc.selectedFile.readText())
|
|
|
|
}
|
|
|
|
else -> null
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
fun saveConfig(config: Config): Boolean {
|
|
|
|
return lastFile ?.also {
|
|
|
|
it.writeText(serialFormat.encodeToString(Config.serializer(), config))
|
|
|
|
} != null
|
|
|
|
}
|
|
|
|
|
|
|
|
fun exportGradle(config: Config): Boolean {
|
|
|
|
val fc = JFileChooser(lastFile ?.parent)
|
|
|
|
fc.fileSelectionMode = JFileChooser.DIRECTORIES_ONLY
|
|
|
|
return when (fc.showSaveDialog(null)) {
|
|
|
|
JFileChooser.APPROVE_OPTION -> {
|
|
|
|
val file = fc.selectedFile
|
|
|
|
val mavenConfigContent = config.type.buildMavenGradleConfig(
|
|
|
|
config.mavenConfig,
|
|
|
|
config.licenses
|
|
|
|
)
|
|
|
|
File(file, "publish.gradle").apply {
|
|
|
|
delete()
|
|
|
|
createNewFile()
|
|
|
|
writeText(mavenConfigContent)
|
|
|
|
}
|
|
|
|
true
|
|
|
|
}
|
|
|
|
else -> false
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
fun saveAs(config: Config): Boolean {
|
|
|
|
val fc = JFileChooser(lastFile ?.parent)
|
|
|
|
fc.addChoosableFileFilter(FileFilter("Kotlin Publication Scripts Builder", Regex(".*\\.$appExtension")))
|
|
|
|
fc.addChoosableFileFilter(FileFilter("JSON", Regex(".*\\.json")))
|
|
|
|
return when (fc.showSaveDialog(null)) {
|
|
|
|
JFileChooser.APPROVE_OPTION -> {
|
|
|
|
val file = fc.selectedFile
|
|
|
|
val resultFile = if (file.extension == "") {
|
|
|
|
File(file.parentFile, "${file.name}.$appExtension")
|
|
|
|
} else {
|
|
|
|
file
|
|
|
|
}
|
|
|
|
resultFile.writeText(serialFormat.encodeToString(Config.serializer(), config))
|
|
|
|
lastFile = resultFile
|
|
|
|
true
|
|
|
|
}
|
|
|
|
else -> false
|
|
|
|
}
|
|
|
|
}
|