From 7592b86663eed55aede53f5f8d2dee2a12ca034c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stanis=C5=82aw=20Chmiela?= Date: Sat, 8 Jul 2023 00:32:41 +0200 Subject: [PATCH] Add `host` to `Registry` taking `port` into consideration (#544) --- Sources/tart/Commands/Push.swift | 2 +- Sources/tart/OCI/Registry.swift | 12 +++++++++++- Sources/tart/VMDirectory+OCI.swift | 2 +- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/Sources/tart/Commands/Push.swift b/Sources/tart/Commands/Push.swift index 622e7e4..af833e7 100644 --- a/Sources/tart/Commands/Push.swift +++ b/Sources/tart/Commands/Push.swift @@ -100,7 +100,7 @@ struct Push: AsyncParsableCommand { _ = try await registry.pushManifest(reference: reference, manifest: remoteManifest) } - return RemoteName(host: registry.baseURL.host!, namespace: registry.namespace, + return RemoteName(host: registry.host!, namespace: registry.namespace, reference: Reference(digest: digest)) } } diff --git a/Sources/tart/OCI/Registry.swift b/Sources/tart/OCI/Registry.swift index 2d5a7b9..2f899e4 100644 --- a/Sources/tart/OCI/Registry.swift +++ b/Sources/tart/OCI/Registry.swift @@ -99,12 +99,22 @@ struct TokenResponse: Decodable, Authentication { } class Registry { - let baseURL: URL + private let baseURL: URL let namespace: String let credentialsProviders: [CredentialsProvider] var currentAuthToken: Authentication? = nil + var host: String? { + guard let host = baseURL.host else { return nil } + + if let port = baseURL.port { + return "\(host):\(port)" + } + + return host + } + init(urlComponents: URLComponents, namespace: String, credentialsProviders: [CredentialsProvider] = [EnvironmentCredentialsProvider(), DockerConfigCredentialsProvider(), KeychainCredentialsProvider()] diff --git a/Sources/tart/VMDirectory+OCI.swift b/Sources/tart/VMDirectory+OCI.swift index 7401176..de6fe3e 100644 --- a/Sources/tart/VMDirectory+OCI.swift +++ b/Sources/tart/VMDirectory+OCI.swift @@ -159,7 +159,7 @@ extension VMDirectory { } let pushedReference = Reference(digest: try manifest.digest()) - return RemoteName(host: registry.baseURL.host!, namespace: registry.namespace, reference: pushedReference) + return RemoteName(host: registry.host!, namespace: registry.namespace, reference: pushedReference) } }