Skip to content

Instantly share code, notes, and snippets.

@FromAtom
Created September 29, 2025 15:16
Show Gist options
  • Save FromAtom/c1d2062c977ebe0c112bcdef89b85112 to your computer and use it in GitHub Desktop.
Save FromAtom/c1d2062c977ebe0c112bcdef89b85112 to your computer and use it in GitHub Desktop.
Product
private enum ExternalPackage: CaseIterable {
case firebase
case rswift
private var definition: (name: String, dependency: Package.Dependency) {
switch self {
case .firebase:
(
name: "firebase-ios-sdk",
dependency: .package(url: "https://github.com/firebase/firebase-ios-sdk", .upToNextMajor(from: "10.22.0"))
)
case .rswift:
(
name: "R.swift",
dependency: .package(url: "https://github.com/mac-cain13/R.swift.git", from: "7.0.0")
)
}
}
var name: String { definition.name }
var dependency: Package.Dependency { definition.dependency }
}
private enum Products {
case firebaseCrashlytics
case firebaseAnalytics
case firebaseRemoteConfig
case rswift
private var definition: (name: String, package: ExternalPackage) {
switch self {
case .firebaseCrashlytics: (name: "FirebaseCrashlytics", package: .firebase)
case .firebaseAnalytics: (name: "FirebaseAnalytics", package: .firebase)
case .firebaseRemoteConfig: (name: "FirebaseRemoteConfig", package: .firebase)
case .rswift: (name: "RswiftLibrary", package: .rswift)
}
}
var name: String { definition.name }
var package: ExternalPackage { definition.package }
}
extension PackageDescription.Target.Dependency {
fileprivate static func product(_ product: Products) -> Self {
.product(name: product.name, package: product.package.name)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment