Skip to content

factor binary dependencies handling outside workspace class [nfc] #4197

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Mar 4, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 10 additions & 2 deletions Sources/Commands/SwiftPackageTool.swift
Original file line number Diff line number Diff line change
Expand Up @@ -860,8 +860,16 @@ extension SwiftPackageTool {
var path: AbsolutePath

func run(_ swiftTool: SwiftTool) throws {
let workspace = try swiftTool.getActiveWorkspace()
let checksum = try workspace.checksum(forBinaryArtifactAt: path)
let binaryArtifactsManager = try Workspace.BinaryArtifactsManager(
fileSystem: swiftTool.fileSystem,
authorizationProvider: swiftTool.getAuthorizationProvider(),
hostToolchain: swiftTool.getHostToolchain(),
checksumAlgorithm: SHA256(),
customHTTPClient: .none,
customArchiver: .none,
delegate: .none
)
let checksum = try binaryArtifactsManager.checksum(forBinaryArtifactAt: path)
print(checksum)
}
}
Expand Down
8 changes: 4 additions & 4 deletions Sources/PackageLoading/ManifestLoader.swift
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ public protocol ManifestLoaderProtocol {
}

public extension ManifestLoaderProtocol {
var supportedArchiveExtensions: [String] { ["zip"] }
static var supportedArchiveExtensions: [String] { ["zip"] }
}

public protocol ManifestLoaderDelegate {
Expand Down Expand Up @@ -437,7 +437,7 @@ public final class ManifestLoader: ManifestLoaderProtocol {
continue
}

let validExtensions = self.supportedArchiveExtensions + BinaryTarget.Kind.allCases.filter{ $0 != .unknown }.map { $0.fileExtension }
let validExtensions = Self.supportedArchiveExtensions + BinaryTarget.Kind.allCases.filter{ $0 != .unknown }.map { $0.fileExtension }
guard let fileExtension = relativePath.extension, validExtensions.contains(fileExtension) else {
observabilityScope.emit(.unsupportedBinaryLocationExtension(
targetName: target.name,
Expand Down Expand Up @@ -470,10 +470,10 @@ public final class ManifestLoader: ManifestLoaderProtocol {
continue
}

guard self.supportedArchiveExtensions.contains(url.pathExtension) else {
guard Self.supportedArchiveExtensions.contains(url.pathExtension) else {
observabilityScope.emit(.unsupportedBinaryLocationExtension(
targetName: target.name,
validExtensions: self.supportedArchiveExtensions
validExtensions: Self.supportedArchiveExtensions
))
continue
}
Expand Down
17 changes: 8 additions & 9 deletions Sources/SPMTestSupport/MockWorkspace.swift
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,9 @@ public final class MockWorkspace {
let toolsVersion: ToolsVersion
let fingerprints: MockPackageFingerprintStorage
let mirrors: DependencyMirrors
public var httpClient: HTTPClient
public var registryClient: RegistryClient
let registry: MockRegistry
public var archiver: MockArchiver
let customBinaryArtifactsManager: Workspace.CustomBinaryArtifactsManager
public var checksumAlgorithm: MockHashAlgorithm
public private(set) var manifestLoader: MockManifestLoader
public let repositoryProvider: InMemoryGitRepositoryProvider
Expand All @@ -49,9 +48,8 @@ public final class MockWorkspace {
toolsVersion: ToolsVersion = ToolsVersion.currentToolsVersion,
fingerprints customFingerprints: MockPackageFingerprintStorage? = .none,
mirrors customMirrors: DependencyMirrors? = nil,
httpClient customHttpClient: HTTPClient? = .none,
registryClient customRegistryClient: RegistryClient? = .none,
binaryArchiver customBinaryArchiver: MockArchiver? = .none,
binaryArtifactsManager customBinaryArtifactsManager: Workspace.CustomBinaryArtifactsManager? = .none,
checksumAlgorithm customChecksumAlgorithm: MockHashAlgorithm? = .none,
customPackageContainerProvider: MockPackageContainerProvider? = .none,
skipDependenciesUpdates: Bool = false,
Expand All @@ -66,8 +64,8 @@ public final class MockWorkspace {
self.identityResolver = DefaultIdentityResolver(locationMapper: self.mirrors.effectiveURL(for:))
self.manifestLoader = MockManifestLoader(manifests: [:])
self.customPackageContainerProvider = customPackageContainerProvider
self.checksumAlgorithm = customChecksumAlgorithm ?? MockHashAlgorithm()
self.repositoryProvider = InMemoryGitRepositoryProvider()
self.checksumAlgorithm = customChecksumAlgorithm ?? MockHashAlgorithm()
self.registry = MockRegistry(
filesystem: self.fileSystem,
identityResolver: self.identityResolver,
Expand All @@ -78,8 +76,10 @@ public final class MockWorkspace {
self.toolsVersion = toolsVersion
self.skipDependenciesUpdates = skipDependenciesUpdates
self.sourceControlToRegistryDependencyTransformation = sourceControlToRegistryDependencyTransformation
self.httpClient = customHttpClient ?? HTTPClient.mock(fileSystem: fileSystem)
self.archiver = customBinaryArchiver ?? MockArchiver()
self.customBinaryArtifactsManager = customBinaryArtifactsManager ?? .init(
httpClient: HTTPClient.mock(fileSystem: fileSystem),
archiver: MockArchiver()
)
try self.create()
}

Expand Down Expand Up @@ -268,9 +268,8 @@ public final class MockWorkspace {
customPackageContainerProvider: self.customPackageContainerProvider,
customRepositoryProvider: self.repositoryProvider,
customRegistryClient: self.registryClient,
customBinaryArtifactsManager: self.customBinaryArtifactsManager,
customIdentityResolver: self.identityResolver,
customHTTPClient: self.httpClient,
customArchiver: self.archiver,
customChecksumAlgorithm: self.checksumAlgorithm,
delegate: self.delegate
)
Expand Down
5 changes: 3 additions & 2 deletions Sources/Workspace/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,9 @@ add_library(Workspace
ToolsVersionSpecificationRewriter.swift
UserToolchain.swift
Workspace.swift
WorkspaceConfiguration.swift
WorkspaceState.swift
Workspace+BinaryArtifacts.swift
Workspace+Configuration.swift
Workspace+State.swift
WindowsToolchainInfo.swift)
target_link_libraries(Workspace PUBLIC
TSCBasic
Expand Down
Loading