diff --git a/Sources/ContainerClient/Flags.swift b/Sources/ContainerClient/Flags.swift index 91d50498..939a5504 100644 --- a/Sources/ContainerClient/Flags.swift +++ b/Sources/ContainerClient/Flags.swift @@ -184,6 +184,9 @@ public struct Flags { @Flag(name: [.customLong("rm"), .long], help: "Remove the container after it stops") public var remove = false + @Flag(name: .long, help: "Enable Rosetta in the container") + public var rosetta = false + @Flag(name: .long, help: "Forward SSH agent socket to container") public var ssh = false diff --git a/Sources/ContainerClient/Utility.swift b/Sources/ContainerClient/Utility.swift index ed4fc7e7..9e230f3f 100644 --- a/Sources/ContainerClient/Utility.swift +++ b/Sources/ContainerClient/Utility.swift @@ -213,8 +213,10 @@ public struct Utility { ) } - if Platform.current.architecture == "arm64" && requestedPlatform.architecture == "amd64" { - config.rosetta = true + config.rosetta = management.rosetta || (Platform.current.architecture == "arm64" && requestedPlatform.architecture == "amd64") + + if management.rosetta && Platform.current.architecture != "arm64" { + throw ContainerizationError(.unsupported, message: "--rosetta flag requires an arm64 host") } config.labels = try Parser.labels(management.labels)