From 6adcc0ab55822caf1471248b36cac4ac46db7ffe Mon Sep 17 00:00:00 2001 From: AmirHossein Abdolmotallebi Date: Sat, 23 Nov 2024 09:02:06 +0330 Subject: [PATCH] add arch name in output release binaries --- .../src/main/kotlin/buildlogic/CiUtils.kt | 5 +- .../kotlin/ir/amirab/util/platform/Arch.kt | 53 +++++++++++++++++++ 2 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 compositeBuilds/shared/platform/src/main/kotlin/ir/amirab/util/platform/Arch.kt diff --git a/buildSrc/src/main/kotlin/buildlogic/CiUtils.kt b/buildSrc/src/main/kotlin/buildlogic/CiUtils.kt index f959d46..15956e9 100644 --- a/buildSrc/src/main/kotlin/buildlogic/CiUtils.kt +++ b/buildSrc/src/main/kotlin/buildlogic/CiUtils.kt @@ -2,8 +2,8 @@ package buildlogic import io.github.z4kn4fein.semver.Version import ir.amirab.installer.InstallerTargetFormat +import ir.amirab.util.platform.Arch import ir.amirab.util.platform.Platform -import org.jetbrains.compose.desktop.application.dsl.TargetFormat import java.io.File object CiUtils { @@ -35,7 +35,8 @@ object CiUtils { } } }.name.lowercase() - return "${packageName}_${appVersion}_${platformName}.${fileExtension}" + val archName = Arch.getCurrentArch().name + return "${packageName}_${appVersion}_${platformName}_${archName}.${fileExtension}" } fun getFileOfPackagedTarget( diff --git a/compositeBuilds/shared/platform/src/main/kotlin/ir/amirab/util/platform/Arch.kt b/compositeBuilds/shared/platform/src/main/kotlin/ir/amirab/util/platform/Arch.kt new file mode 100644 index 0000000..494b87c --- /dev/null +++ b/compositeBuilds/shared/platform/src/main/kotlin/ir/amirab/util/platform/Arch.kt @@ -0,0 +1,53 @@ +package ir.amirab.util.platform + +sealed class Arch(val name: String) { + data object X64 : Arch("x64") + data object Arm64 : Arch("arm64") + data object X32 : Arch("x32") + + override fun toString(): String { + return name + } + + companion object : ArchFinder by JvmArchFinder() { + private val DefinedArchStrings = mapOf( + X64 to listOf( + "amd64", "x64" + ), + Arm64 to listOf( + "arm64", "aarch64" + ), + X32 to listOf( + "x86", + ), + ) + + fun fromString(archName: String): Arch? { + val a = archName.lowercase() + return DefinedArchStrings.entries.firstOrNull { + a in it.value + }?.key + } + } +} + +interface ArchFinder { + fun getCurrentArch(): Arch +} + +private class JvmArchFinder : ArchFinder { + private val _arch by lazy { + getCurrentArchFromJVMProperty() + } + + private fun getCurrentArchFromJVMProperty(): Arch { + val osString = System.getProperty("os.arch").lowercase() + return requireNotNull(Arch.fromString(osString)) { + "this arch is not recognized: $osString" + } + } + + override fun getCurrentArch(): Arch { + return _arch + } +} \ No newline at end of file