1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
|
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift open source project
//
// Copyright (c) 2014-2020 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See http://swift.org/LICENSE.txt for license information
// See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
import Basics
import PackageModel
/// A fully resolved package. Contains resolved modules, products and dependencies of the package.
public struct ResolvedPackage {
// The identity of the package.
public var identity: PackageIdentity {
return self.underlying.identity
}
/// The manifest describing the package.
public var manifest: Manifest {
return self.underlying.manifest
}
/// The local path of the package.
public var path: AbsolutePath {
return self.underlying.path
}
/// The underlying package reference.
public let underlying: Package
/// The modules contained in the package.
public let modules: IdentifiableSet<ResolvedModule>
/// The products produced by the package.
public let products: [ResolvedProduct]
/// The dependencies of the package.
public let dependencies: [PackageIdentity]
/// The default localization for resources.
public let defaultLocalization: String?
/// The list of platforms that are supported by this package.
public let supportedPlatforms: [SupportedPlatform]
/// If the given package's source is a registry release, this provides additional metadata and signature information.
public let registryMetadata: RegistryReleaseMetadata?
@_spi(SwiftPMInternal)
public let platformVersionProvider: PlatformVersionProvider
public init(
underlying: Package,
defaultLocalization: String?,
supportedPlatforms: [SupportedPlatform],
dependencies: [PackageIdentity],
modules: IdentifiableSet<ResolvedModule>,
products: [ResolvedProduct],
registryMetadata: RegistryReleaseMetadata?,
platformVersionProvider: PlatformVersionProvider
) {
self.underlying = underlying
self.products = products
self.modules = modules
self.dependencies = dependencies
self.defaultLocalization = defaultLocalization
self.supportedPlatforms = supportedPlatforms
self.registryMetadata = registryMetadata
self.platformVersionProvider = platformVersionProvider
}
public func getSupportedPlatform(for platform: Platform, usingXCTest: Bool) -> SupportedPlatform {
self.platformVersionProvider.getDerived(
declared: self.supportedPlatforms,
for: platform,
usingXCTest: usingXCTest
)
}
}
extension ResolvedPackage: CustomStringConvertible {
public var description: String {
return "<ResolvedPackage: \(self.identity)>"
}
}
extension ResolvedPackage: Identifiable {
public var id: PackageIdentity { self.underlying.identity }
}
@available(*, unavailable, message: "Use `Identifiable` conformance or `IdentifiableSet` instead")
extension ResolvedPackage: Hashable {}
|