swift-libs/Package.swift
Javier Cicchelli c0a49b2a85 [Feature] Persistence (#5)
This PR contains the work done to implement some useful protocols, classes and extensions to use to setup a persistence layer in an application.

To provide further details about the work done:
 - [x] declared the `Persistence` target in the Package file;
 - [x] forgot to declare the `Communications` and `Persistence` target to the `SwiftLibs` library in the `Package` file;
 - [x] defined the `Service` public protocol;
 - [x] implemented the `Fetcher` generic class;
 - [x] implemented the `bitBucket` static property in the `URL+Devices` public extension;
 - [x] updated the `README` file.

Co-authored-by: Javier Cicchelli <javier@rock-n-code.com>
Reviewed-on: #5
2023-04-17 23:12:11 +00:00

102 lines
2.2 KiB
Swift

// swift-tools-version: 5.8
import PackageDescription
private var excludePlatforms: [String] = [.PlatformFolder.iOS]
#if os(iOS)
excludePlatforms = []
#endif
let package = Package(
name: "SwiftLibs",
platforms: [
.iOS(.v13),
.macOS(.v10_15),
.tvOS(.v13),
.watchOS(.v6)
],
products: [
.library(
name: "SwiftLibs",
targets: [
"Communications",
"Coordination",
"Core",
"Dependencies",
"Persistence"
]
),
],
dependencies: [],
targets: [
// MARK: Targets
.target(
name: "Communications",
dependencies: []
),
.target(
name: "Coordination",
dependencies: [],
exclude: excludePlatforms
),
.target(
name: "Core",
dependencies: []
),
.target(
name: "Dependencies",
dependencies: []
),
.target(
name: "Persistence",
dependencies: []
),
// MARK: Test targets
.testTarget(
name: "CommunicationsTests",
dependencies: [
"Communications"
],
path: "Tests/Communications"
),
.testTarget(
name: "CoordinationTests",
dependencies: [
"Coordination"
],
path: "Tests/Coordination",
exclude: excludePlatforms
),
.testTarget(
name: "CoreTests",
dependencies: [
"Core"
],
path: "Tests/Core"
),
.testTarget(
name: "DependenciesTests",
dependencies: [
"Dependencies"
],
path: "Tests/Dependencies"
),
.testTarget(
name: "PersistenceTests",
dependencies: [
"Persistence"
],
path: "Tests/Persistence"
),
]
)
// MARK: - String+Constants
private extension String {
enum PlatformFolder {
static let iOS = "Platform/iOS"
}
}