From 9f9e68945c89b94b960cb654a6a00be98df52331 Mon Sep 17 00:00:00 2001 From: nikky Date: Sat, 20 Mar 2021 18:39:07 +0100 Subject: [PATCH] making the api slightly less insane --- .../main/kotlin/voodoo/curse/CurseClient.kt | 2 +- .../data/components/ComponentsMutable.kt | 8 +- .../kotlin/voodoo/data/components/Parts.kt | 16 +- .../main/kotlin/voodoo/data/lock/LockEntry.kt | 6 +- .../kotlin/voodoo/provider/JenkinsProvider.kt | 9 +- samples/fabricpack/164Version.voodoo.json5 | 1 - .../kotlin/voodoo/cli/ImportCurseCommand.kt | 14 +- .../src/main/kotlin/voodoo/pack/FileEntry.kt | 359 ++++++++++++------ .../main/kotlin/voodoo/pack/VersionPack.kt | 24 +- 9 files changed, 281 insertions(+), 158 deletions(-) diff --git a/core/src/main/kotlin/voodoo/curse/CurseClient.kt b/core/src/main/kotlin/voodoo/curse/CurseClient.kt index a7614910..084c09d5 100644 --- a/core/src/main/kotlin/voodoo/curse/CurseClient.kt +++ b/core/src/main/kotlin/voodoo/curse/CurseClient.kt @@ -454,7 +454,7 @@ object CurseClient : KLogging() { var oldFiles = files - if (version.isNotBlank()) { + if (version != null && version.isNotBlank()) { files = files.filter { f -> (f.fileName.contains(version.toRegex()) || f.fileName == version) } diff --git a/core/src/main/kotlin/voodoo/data/components/ComponentsMutable.kt b/core/src/main/kotlin/voodoo/data/components/ComponentsMutable.kt index c8aaf942..324f1763 100644 --- a/core/src/main/kotlin/voodoo/data/components/ComponentsMutable.kt +++ b/core/src/main/kotlin/voodoo/data/components/ComponentsMutable.kt @@ -23,12 +23,12 @@ data class CommonComponent( override var description: String? = null, override var optionalData: OptionalData? = null, override var side: Side = Side.BOTH, - override var websiteUrl: String = "", + override var websiteUrl: String? = null, override var dependencies: MutableMap = mutableMapOf(), // override var replaceDependencies: Map = mapOf(), override var packageType: PackageType = PackageType.MOD, override var transient: Boolean = false, // this entry got added as dependency for something else - override var version: String = "", // TODO: use regex only ? + override var version: String? = null, // TODO: use regex only ? override var fileName: String? = null, override var fileNameRegex: String = ".*(? = setOf(), @@ -61,9 +61,9 @@ data class DirectComponent( @Serializable data class JenkinsComponent( - override var jenkinsUrl: String = "", + override var jenkinsUrl: String? = null, override var job: String = "", - override var buildNumber: Int = -1, + override var buildNumber: Int? = null, override var useOriginalUrl: Boolean = true ) : JenkinsMutable diff --git a/core/src/main/kotlin/voodoo/data/components/Parts.kt b/core/src/main/kotlin/voodoo/data/components/Parts.kt index 360fa017..938a793e 100644 --- a/core/src/main/kotlin/voodoo/data/components/Parts.kt +++ b/core/src/main/kotlin/voodoo/data/components/Parts.kt @@ -15,11 +15,11 @@ interface Common { val description: String? val optionalData: OptionalData? val side: Side - val websiteUrl: String + val websiteUrl: String? val dependencies: MutableMap val packageType: PackageType val transient: Boolean // this entry got added as dependency for somethin - val version: String // TODO: use regex only ? + val version: String? // TODO: use regex only ? val fileName: String? val fileNameRegex: String val validMcVersions: Set @@ -37,12 +37,12 @@ interface CommonMutable : CommonImmutable { override var description: String? override var optionalData: OptionalData? override var side: Side - override var websiteUrl: String + override var websiteUrl: String? override var dependencies: MutableMap // override var replaceDependencies: Map override var packageType: PackageType override var transient: Boolean // this entry got added as dependency for somethin - override var version: String // TODO: use regex only ? + override var version: String? // TODO: use regex only ? override var fileName: String? override var fileNameRegex: String override var validMcVersions: Set @@ -88,15 +88,15 @@ interface DirectMutable: DirectImmutable { } interface JenkinsImmutable { - val jenkinsUrl: String + val jenkinsUrl: String? val job: String - val buildNumber: Int + val buildNumber: Int? val useOriginalUrl: Boolean } interface JenkinsMutable: JenkinsImmutable { - override var jenkinsUrl: String + override var jenkinsUrl: String? override var job: String - override var buildNumber: Int + override var buildNumber: Int? override var useOriginalUrl: Boolean } diff --git a/core/src/main/kotlin/voodoo/data/lock/LockEntry.kt b/core/src/main/kotlin/voodoo/data/lock/LockEntry.kt index a29cea81..56d9e5a7 100644 --- a/core/src/main/kotlin/voodoo/data/lock/LockEntry.kt +++ b/core/src/main/kotlin/voodoo/data/lock/LockEntry.kt @@ -74,9 +74,9 @@ sealed class LockEntry() : CommonLockModule, Comparable { override val description: String? = null, override val optionalData: OptionalData? = null, override val dependencies: Map = mapOf(), - val jenkinsUrl: String = "", - val job: String = "", - val buildNumber: Int = -1, + val jenkinsUrl: String, + val job: String, + val buildNumber: Int, val artifactRelativePath: String, val artifactFileName: String, val fileNameRegex: String = ".*(? { -// folder = "mods" +// entry = entry.copy( +// folder = "mods" +// ) } CurseSection.RESOURCE_PACKS.sectionName -> { - entry.folder = "resourcepacks" + entry = entry.copy( + folder = "resourcepacks" + ) hasCustomProperties = true } else -> { @@ -196,6 +202,8 @@ class ImportCurseCommand() : CliktCommand( // fileNameRegex = "\\Q${addonFile.fileName}\\E" if(!hasCustomProperties) { + // had single line string declaration herei n the past + // wo probbably can drop hasCustomProperties flag FileEntry.Curse( curse_projectName = entry.curse_projectName ) diff --git a/voodoo/src/main/kotlin/voodoo/pack/FileEntry.kt b/voodoo/src/main/kotlin/voodoo/pack/FileEntry.kt index 07fc5a74..c59d14e9 100644 --- a/voodoo/src/main/kotlin/voodoo/pack/FileEntry.kt +++ b/voodoo/src/main/kotlin/voodoo/pack/FileEntry.kt @@ -19,27 +19,60 @@ sealed class FileEntry { private val logger = KotlinLogging.logger {} } + data class CommonBlob( + val applyOverrides: List, + val id: String?, + val name: String?, + val folder: String?, + val description: String?, + val optional: Optional?, + val side: Side, + val websiteUrl: String?, + val packageType: PackageType, + val version: String?, + val transient: Boolean, + val fileName: String?, + val fileNameRegex: String, + val validMcVersions: Set, + val invalidMcVersions: Set, + ) + abstract val applyOverrides: List - abstract var id: String? - abstract var name: String? - abstract var folder: String? - abstract var description: String? - abstract var optional: Optional? - abstract var side: Side - abstract var websiteUrl: String - abstract var packageType: PackageType - - // this entry got added as dependency for something else, only setthis if you know what you are doing - abstract var version: String // TODO: use regex only ? - abstract var transient: Boolean - abstract var fileName: String? - abstract var fileNameRegex: String - abstract var validMcVersions: Set - abstract var invalidMcVersions: Set + abstract val id: String? + abstract val name: String? + abstract val folder: String? + abstract val description: String? + abstract val optional: Optional? + abstract val side: Side + abstract val websiteUrl: String? + abstract val packageType: PackageType + abstract val version: String? + abstract val transient: Boolean + abstract val fileName: String? + abstract val fileNameRegex: String + abstract val validMcVersions: Set + abstract val invalidMcVersions: Set + + val common: CommonBlob get() = CommonBlob( + applyOverrides = applyOverrides, + id = id, + name = name, + folder = folder, + description = description, + optional = optional, + side = side, + websiteUrl = websiteUrl, + packageType = packageType, + transient = transient, + version = version, + fileName = fileName, + fileNameRegex = fileNameRegex, + validMcVersions = validMcVersions, + invalidMcVersions = invalidMcVersions, + ) abstract fun id(): String? abstract fun applyOverride(override: EntryOverride): FileEntry - abstract fun copyCommon(): FileEntry fun toCommonComponent(defaultId: String? = null): CommonComponent = CommonComponent( id = id.takeUnless { it.isNullOrBlank() } ?: defaultId ?: error("id must be set on $this"), @@ -59,22 +92,27 @@ sealed class FileEntry { invalidMcVersions = invalidMcVersions ) - fun applyCommonOverride(override: EntryOverride) { - override.folder?.let { folder = it } - override.description?.let { description = it } + abstract fun assignCommonValues(commonBlob: CommonBlob): E + + protected fun applyCommonOverride(override: EntryOverride): E { + var c = common + + override.folder?.let { c = c.copy(folder = it) } + override.description?.let { c = c.copy(description = it) } override.optional?.let { optionalOverride -> val opt = this.optional ?: Optional() opt.applyOverride(optionalOverride) - optional = opt + c = c.copy(optional = opt) } - override.side?.let { side = it } - override.websiteUrl?.let { websiteUrl = it } - override.packageType?.let { packageType = it } - override.version?.let { version = it } - override.fileName?.let { fileName = it } - override.fileNameRegex?.let { fileNameRegex = it } - override.validMcVersions?.let { validMcVersions += it } - override.invalidMcVersions?.let { invalidMcVersions += it } + override.side?.let { c = c.copy(side = it) } + override.websiteUrl?.let { c = c.copy(websiteUrl = it) } + override.packageType?.let { c = c.copy(packageType = it) } + override.version?.let { c = c.copy(version = it) } + override.fileName?.let { c = c.copy(fileName = it) } + override.fileNameRegex?.let { c = c.copy(fileNameRegex = it) } + override.validMcVersions?.let { c = c.copy(validMcVersions = c.validMcVersions + it) } + override.invalidMcVersions?.let { c = c.copy(invalidMcVersions = c.invalidMcVersions + it) } + return assignCommonValues(c) } fun foldOverrides(overrides: Map): E { @@ -142,20 +180,20 @@ sealed class FileEntry { @JsonSchema.StringEnum(["replace_with_overrides"]) override val applyOverrides: List = listOf(), - override var id: String? = null, - override var name: String? = CommonComponent.DEFAULT.name, - override var folder: String? = CommonComponent.DEFAULT.folder, - override var description: String? = CommonComponent.DEFAULT.description, - override var optional: Optional? = null, - override var side: Side = CommonComponent.DEFAULT.side, - override var websiteUrl: String = CommonComponent.DEFAULT.websiteUrl, - override var packageType: PackageType = CommonComponent.DEFAULT.packageType, - override var transient: Boolean = CommonComponent.DEFAULT.transient, - override var version: String = CommonComponent.DEFAULT.version, - override var fileName: String? = CommonComponent.DEFAULT.fileName, - override var fileNameRegex: String = CommonComponent.DEFAULT.fileNameRegex, - override var validMcVersions: Set = CommonComponent.DEFAULT.validMcVersions, - override var invalidMcVersions: Set = CommonComponent.DEFAULT.invalidMcVersions, + override val id: String? = null, + override val name: String? = CommonComponent.DEFAULT.name, + override val folder: String? = CommonComponent.DEFAULT.folder, + override val description: String? = CommonComponent.DEFAULT.description, + override val optional: Optional? = null, + override val side: Side = CommonComponent.DEFAULT.side, + override val websiteUrl: String? = CommonComponent.DEFAULT.websiteUrl, + override val packageType: PackageType = CommonComponent.DEFAULT.packageType, + override val transient: Boolean = CommonComponent.DEFAULT.transient, + override val version: String? = CommonComponent.DEFAULT.version, + override val fileName: String? = CommonComponent.DEFAULT.fileName, + override val fileNameRegex: String = CommonComponent.DEFAULT.fileNameRegex, + override val validMcVersions: Set = CommonComponent.DEFAULT.validMcVersions, + override val invalidMcVersions: Set = CommonComponent.DEFAULT.invalidMcVersions, ) : FileEntry() { override fun id() = id.takeUnless { it.isNullOrBlank() } ?: curse_projectName?.substringAfterLast('/') override fun applyOverride(override: EntryOverride): Curse { @@ -163,18 +201,33 @@ sealed class FileEntry { is EntryOverride.Curse -> copy( curse_useOriginalUrl = override.curse_useOriginalUrl ?: curse_useOriginalUrl, curse_skipFingerprintCheck = override.curse_skipFingerprintCheck ?: curse_skipFingerprintCheck, - ).apply { - applyCommonOverride(override) + ).run { + assignCommonValues(applyCommonOverride(override)) } - is EntryOverride.Common -> apply { - applyCommonOverride(override) + is EntryOverride.Common -> run { + applyCommonOverride(override) as Curse } else -> this } } - override fun copyCommon(): FileEntry { - return copy() + override fun assignCommonValues(commonBlob: CommonBlob): E { + return copy( + id = commonBlob.id, + name = commonBlob.name, + folder = commonBlob.folder, + description = commonBlob.description, + optional = commonBlob.optional, + side = commonBlob.side, + websiteUrl = commonBlob.websiteUrl, + packageType = commonBlob.packageType, + transient = commonBlob.transient, + version = commonBlob.version, + fileName = commonBlob.fileName, + fileNameRegex = commonBlob.fileNameRegex, + validMcVersions = commonBlob.validMcVersions, + invalidMcVersions = commonBlob.invalidMcVersions, + ) as E } override fun toEntry(overrides: Map): FlatEntry = @@ -208,20 +261,20 @@ sealed class FileEntry { @JsonSchema.StringEnum(["replace_with_overrides"]) override val applyOverrides: List = listOf(), - override var id: String? = null, - override var name: String? = CommonComponent.DEFAULT.name, - override var folder: String? = CommonComponent.DEFAULT.folder, - override var description: String? = CommonComponent.DEFAULT.description, - override var optional: Optional? = null, - override var side: Side = CommonComponent.DEFAULT.side, - override var websiteUrl: String = CommonComponent.DEFAULT.websiteUrl, - override var packageType: PackageType = CommonComponent.DEFAULT.packageType, - override var transient: Boolean = CommonComponent.DEFAULT.transient, - override var version: String = CommonComponent.DEFAULT.version, - override var fileName: String? = CommonComponent.DEFAULT.fileName, - override var fileNameRegex: String = CommonComponent.DEFAULT.fileNameRegex, - override var validMcVersions: Set = CommonComponent.DEFAULT.validMcVersions, - override var invalidMcVersions: Set = CommonComponent.DEFAULT.invalidMcVersions, + override val id: String? = null, + override val name: String? = CommonComponent.DEFAULT.name, + override val folder: String? = CommonComponent.DEFAULT.folder, + override val description: String? = CommonComponent.DEFAULT.description, + override val optional: Optional? = null, + override val side: Side = CommonComponent.DEFAULT.side, + override val websiteUrl: String? = CommonComponent.DEFAULT.websiteUrl, + override val packageType: PackageType = CommonComponent.DEFAULT.packageType, + override val transient: Boolean = CommonComponent.DEFAULT.transient, + override val version: String? = CommonComponent.DEFAULT.version, + override val fileName: String? = CommonComponent.DEFAULT.fileName, + override val fileNameRegex: String = CommonComponent.DEFAULT.fileNameRegex, + override val validMcVersions: Set = CommonComponent.DEFAULT.validMcVersions, + override val invalidMcVersions: Set = CommonComponent.DEFAULT.invalidMcVersions, ) : FileEntry() { override fun id() = id.takeUnless { it.isNullOrBlank() } ?: direct_url.split(":|&|=".toRegex()).joinToString("_") @@ -231,18 +284,33 @@ sealed class FileEntry { is EntryOverride.Direct -> copy( // direct_url = override.url ?: direct_url, direct_useOriginalUrl = override.direct_useOriginalUrl ?: direct_useOriginalUrl - ).apply { + ).run { applyCommonOverride(override) } - is EntryOverride.Common -> apply { + is EntryOverride.Common -> run { applyCommonOverride(override) } else -> this } } - override fun copyCommon(): FileEntry { - return copy() + override fun assignCommonValues(commonBlob: CommonBlob): E { + return copy( + id = commonBlob.id, + name = commonBlob.name, + folder = commonBlob.folder, + description = commonBlob.description, + optional = commonBlob.optional, + side = commonBlob.side, + websiteUrl = commonBlob.websiteUrl, + packageType = commonBlob.packageType, + transient = commonBlob.transient, + version = commonBlob.version, + fileName = commonBlob.fileName, + fileNameRegex = commonBlob.fileNameRegex, + validMcVersions = commonBlob.validMcVersions, + invalidMcVersions = commonBlob.invalidMcVersions, + ) as E } override fun toEntry(overrides: Map): FlatEntry = @@ -262,29 +330,29 @@ sealed class FileEntry { @Serializable @SerialName("jenkins") data class Jenkins( - val jenkins_jenkinsUrl: String = "", - val jenkins_job: String, // = "", - val jenkins_buildNumber: Int = -1, + val jenkins_jenkinsUrl: String? = null, + val jenkins_job: String, + val jenkins_buildNumber: Int? = null, val jenkins_useOriginalUrl: Boolean = true, @JsonSchema.Definition("entry.overridesList") @JsonSchema.StringEnum(["replace_with_overrides"]) override val applyOverrides: List = listOf(), - override var id: String? = null, - override var name: String? = CommonComponent.DEFAULT.name, - override var folder: String? = CommonComponent.DEFAULT.folder, - override var description: String? = CommonComponent.DEFAULT.description, - override var optional: Optional? = null, - override var side: Side = CommonComponent.DEFAULT.side, - override var websiteUrl: String = CommonComponent.DEFAULT.websiteUrl, - override var packageType: PackageType = CommonComponent.DEFAULT.packageType, - override var transient: Boolean = CommonComponent.DEFAULT.transient, - override var version: String = CommonComponent.DEFAULT.version, - override var fileName: String? = CommonComponent.DEFAULT.fileName, - override var fileNameRegex: String = CommonComponent.DEFAULT.fileNameRegex, - override var validMcVersions: Set = CommonComponent.DEFAULT.validMcVersions, - override var invalidMcVersions: Set = CommonComponent.DEFAULT.invalidMcVersions, + override val id: String? = null, + override val name: String? = CommonComponent.DEFAULT.name, + override val folder: String? = CommonComponent.DEFAULT.folder, + override val description: String? = CommonComponent.DEFAULT.description, + override val optional: Optional? = null, + override val side: Side = CommonComponent.DEFAULT.side, + override val websiteUrl: String? = CommonComponent.DEFAULT.websiteUrl, + override val packageType: PackageType = CommonComponent.DEFAULT.packageType, + override val transient: Boolean = CommonComponent.DEFAULT.transient, + override val version: String? = CommonComponent.DEFAULT.version, + override val fileName: String? = CommonComponent.DEFAULT.fileName, + override val fileNameRegex: String = CommonComponent.DEFAULT.fileNameRegex, + override val validMcVersions: Set = CommonComponent.DEFAULT.validMcVersions, + override val invalidMcVersions: Set = CommonComponent.DEFAULT.invalidMcVersions, ) : FileEntry() { override fun id() = id.takeUnless { it.isNullOrBlank() } ?: jenkins_job override fun applyOverride(override: EntryOverride): Jenkins { @@ -294,18 +362,33 @@ sealed class FileEntry { // jenkins_job = override.job ?: jenkins_job, // jenkins_buildNumber = override.buildNumber ?: jenkins_buildNumber jenkins_useOriginalUrl = override.jenkins_useOriginalUrl ?: jenkins_useOriginalUrl - ).apply { + ).run { applyCommonOverride(override) } - is EntryOverride.Common -> apply { + is EntryOverride.Common -> run { applyCommonOverride(override) } else -> this } } - override fun copyCommon(): FileEntry { - return copy() + override fun assignCommonValues(commonBlob: CommonBlob): E { + return copy( + id = commonBlob.id, + name = commonBlob.name, + folder = commonBlob.folder, + description = commonBlob.description, + optional = commonBlob.optional, + side = commonBlob.side, + websiteUrl = commonBlob.websiteUrl, + packageType = commonBlob.packageType, + transient = commonBlob.transient, + version = commonBlob.version, + fileName = commonBlob.fileName, + fileNameRegex = commonBlob.fileNameRegex, + validMcVersions = commonBlob.validMcVersions, + invalidMcVersions = commonBlob.invalidMcVersions, + ) as E } override fun toEntry(overrides: Map): FlatEntry = @@ -334,38 +417,53 @@ sealed class FileEntry { @JsonSchema.StringEnum(["replace_with_overrides"]) override val applyOverrides: List = listOf(), - override var id: String? = null, - override var name: String? = CommonComponent.DEFAULT.name, - override var folder: String? = CommonComponent.DEFAULT.folder, - override var description: String? = CommonComponent.DEFAULT.description, - override var optional: Optional? = null, - override var side: Side = CommonComponent.DEFAULT.side, - override var websiteUrl: String = CommonComponent.DEFAULT.websiteUrl, - override var packageType: PackageType = CommonComponent.DEFAULT.packageType, - override var transient: Boolean = CommonComponent.DEFAULT.transient, - override var version: String = CommonComponent.DEFAULT.version, - override var fileName: String? = CommonComponent.DEFAULT.fileName, - override var fileNameRegex: String = CommonComponent.DEFAULT.fileNameRegex, - override var validMcVersions: Set = CommonComponent.DEFAULT.validMcVersions, - override var invalidMcVersions: Set = CommonComponent.DEFAULT.invalidMcVersions, + override val id: String? = null, + override val name: String? = CommonComponent.DEFAULT.name, + override val folder: String? = CommonComponent.DEFAULT.folder, + override val description: String? = CommonComponent.DEFAULT.description, + override val optional: Optional? = null, + override val side: Side = CommonComponent.DEFAULT.side, + override val websiteUrl: String? = CommonComponent.DEFAULT.websiteUrl, + override val packageType: PackageType = CommonComponent.DEFAULT.packageType, + override val transient: Boolean = CommonComponent.DEFAULT.transient, + override val version: String? = CommonComponent.DEFAULT.version, + override val fileName: String? = CommonComponent.DEFAULT.fileName, + override val fileNameRegex: String = CommonComponent.DEFAULT.fileNameRegex, + override val validMcVersions: Set = CommonComponent.DEFAULT.validMcVersions, + override val invalidMcVersions: Set = CommonComponent.DEFAULT.invalidMcVersions, ) : FileEntry() { override fun id() = id.takeUnless { it.isNullOrBlank() } ?: local_fileSrc override fun applyOverride(override: EntryOverride): Local { return when (override) { is EntryOverride.Local -> copy( local_fileSrc = override.local_fileSrc ?: local_fileSrc, - ).apply { + ).run { applyCommonOverride(override) } - is EntryOverride.Common -> apply { + is EntryOverride.Common -> run { applyCommonOverride(override) } else -> this } } - override fun copyCommon(): FileEntry { - return copy() + override fun assignCommonValues(commonBlob: CommonBlob): E { + return copy( + id = commonBlob.id, + name = commonBlob.name, + folder = commonBlob.folder, + description = commonBlob.description, + optional = commonBlob.optional, + side = commonBlob.side, + websiteUrl = commonBlob.websiteUrl, + packageType = commonBlob.packageType, + transient = commonBlob.transient, + version = commonBlob.version, + fileName = commonBlob.fileName, + fileNameRegex = commonBlob.fileNameRegex, + validMcVersions = commonBlob.validMcVersions, + invalidMcVersions = commonBlob.invalidMcVersions, + ) as E } override fun toEntry(overrides: Map): FlatEntry = @@ -389,33 +487,48 @@ sealed class FileEntry { @JsonSchema.StringEnum(["replace_with_overrides"]) override val applyOverrides: List = listOf(), - override var id: String? = null, - override var name: String? = CommonComponent.DEFAULT.name, - override var folder: String? = CommonComponent.DEFAULT.folder, - override var description: String? = CommonComponent.DEFAULT.description, - override var optional: Optional? = null, - override var side: Side = CommonComponent.DEFAULT.side, - override var websiteUrl: String = CommonComponent.DEFAULT.websiteUrl, - override var packageType: PackageType = CommonComponent.DEFAULT.packageType, - override var transient: Boolean = CommonComponent.DEFAULT.transient, - override var version: String = CommonComponent.DEFAULT.version, - override var fileName: String? = CommonComponent.DEFAULT.fileName, - override var fileNameRegex: String = CommonComponent.DEFAULT.fileNameRegex, - override var validMcVersions: Set = CommonComponent.DEFAULT.validMcVersions, - override var invalidMcVersions: Set = CommonComponent.DEFAULT.invalidMcVersions, + override val id: String? = null, + override val name: String? = CommonComponent.DEFAULT.name, + override val folder: String? = CommonComponent.DEFAULT.folder, + override val description: String? = CommonComponent.DEFAULT.description, + override val optional: Optional? = null, + override val side: Side = CommonComponent.DEFAULT.side, + override val websiteUrl: String? = CommonComponent.DEFAULT.websiteUrl, + override val packageType: PackageType = CommonComponent.DEFAULT.packageType, + override val transient: Boolean = CommonComponent.DEFAULT.transient, + override val version: String? = CommonComponent.DEFAULT.version, + override val fileName: String? = CommonComponent.DEFAULT.fileName, + override val fileNameRegex: String = CommonComponent.DEFAULT.fileNameRegex, + override val validMcVersions: Set = CommonComponent.DEFAULT.validMcVersions, + override val invalidMcVersions: Set = CommonComponent.DEFAULT.invalidMcVersions, ) : FileEntry() { override fun id() = id override fun applyOverride(override: EntryOverride): Noop { return when (override) { - is EntryOverride.Common -> apply { + is EntryOverride.Common -> run { applyCommonOverride(override) } else -> this } } - override fun copyCommon(): FileEntry { - return copy() + override fun assignCommonValues(commonBlob: CommonBlob): E { + return copy( + id = commonBlob.id, + name = commonBlob.name, + folder = commonBlob.folder, + description = commonBlob.description, + optional = commonBlob.optional, + side = commonBlob.side, + websiteUrl = commonBlob.websiteUrl, + packageType = commonBlob.packageType, + transient = commonBlob.transient, + version = commonBlob.version, + fileName = commonBlob.fileName, + fileNameRegex = commonBlob.fileNameRegex, + validMcVersions = commonBlob.validMcVersions, + invalidMcVersions = commonBlob.invalidMcVersions, + ) as E } override fun toEntry(overrides: Map): FlatEntry = diff --git a/voodoo/src/main/kotlin/voodoo/pack/VersionPack.kt b/voodoo/src/main/kotlin/voodoo/pack/VersionPack.kt index adcf996f..4f855fca 100644 --- a/voodoo/src/main/kotlin/voodoo/pack/VersionPack.kt +++ b/voodoo/src/main/kotlin/voodoo/pack/VersionPack.kt @@ -135,7 +135,7 @@ data class VersionPack( fun postParse(baseDir: File): VersionPack { return run { copy( - modloader = modloader.replaceAutoCompletes(), +// modloader = modloader.replaceAutoCompletes(), )/*.apply { modEntries = mods.flatMap { (overrideKey, modsList) -> modsList.map { entry -> @@ -158,16 +158,18 @@ data class VersionPack( srcDir = srcDir, icon = icon ?: metaPack.icon, authors = authors, - modloader = when (modloader) { - is Modloader.Forge -> ModloaderPattern.Forge( - version = modloader.version - ) - is Modloader.Fabric -> ModloaderPattern.Fabric( - intermediateMappingsVersion = modloader.intermediateMappings, - loaderVersion = modloader.loader, - installerVersion = modloader.installer - ) - is Modloader.None -> ModloaderPattern.None + modloader = modloader.replaceAutoCompletes().let { modloader -> + when (modloader) { + is Modloader.Forge -> ModloaderPattern.Forge( + version = modloader.version + ) + is Modloader.Fabric -> ModloaderPattern.Fabric( + intermediateMappingsVersion = modloader.intermediateMappings, + loaderVersion = modloader.loader, + installerVersion = modloader.installer + ) + is Modloader.None -> ModloaderPattern.None + } }, packOptions = PackOptions( uploadUrl = URI(metaPack.uploadBaseUrl).resolve(id).toASCIIString(),