Skip to content
Snippets Groups Projects

Organizing Package.swift

Merged Bruno Muniz requested to merge refactor/package-swift into development
+ 1067
883
// swift-tools-version:5.6
// swift-tools-version:5.6
import PackageDescription
import PackageDescription
 
// MARK: - Helpers
 
 
struct Feature {
 
var product: Product
 
var targets: [Target]
 
var targetDependency: Target.Dependency
 
 
static func library(
 
name: String,
 
dependencies: [Target.Dependency] = [],
 
testDependencies: [Target.Dependency] = [],
 
swiftSettings: [SwiftSetting] = [
 
.unsafeFlags(
 
[
 
"-Xfrontend",
 
"-debug-time-function-bodies",
 
"-Xfrontend",
 
"-debug-time-expression-type-checking",
 
],
 
.when(configuration: .debug)
 
)
 
]
 
) -> Feature {
 
.init(
 
product: .library(name: name, targets: [name]),
 
targets: [
 
.target(
 
name: name,
 
dependencies: dependencies,
 
swiftSettings: swiftSettings
 
),
 
.testTarget(
 
name: "\(name)Tests",
 
dependencies: [.target(name: name)] + testDependencies,
 
swiftSettings: swiftSettings
 
),
 
],
 
targetDependency: .target(name: name)
 
)
 
}
 
}
 
 
struct Dependency {
 
var packageDependency: Package.Dependency
 
var targetDependency: Target.Dependency
 
 
static func local(
 
path: String,
 
name: String,
 
package: String
 
) -> Dependency {
 
.init(
 
packageDependency: .package(path: path),
 
targetDependency: .product(name: name, package: package)
 
)
 
}
 
 
static func external(
 
url: String,
 
version: Range<Version>,
 
name: String,
 
package: String
 
) -> Dependency {
 
.init(
 
packageDependency: .package(url: url, version),
 
targetDependency: .product(name: name, package: package)
 
)
 
}
 
}
 
 
// MARK: - Manifest
 
 
extension Dependency {
 
static let all: [Dependency] = [
 
.retry,
 
.quick,
 
.shout,
 
.nimble,
 
.snapkit,
 
.firebase,
 
.chatLayout,
 
.googleDrive,
 
.googleSignIn,
 
.fileProvider,
 
.swiftyBeaver,
 
.swiftyDropbox,
 
.differenceKit,
 
.swiftProtobuf,
 
.clientDatabase,
 
.keychainAccess,
 
.swiftCustomDump,
 
.combineSchedulers,
 
.xcTestDynamicOverlay,
 
.scrollViewController,
 
.composableArchitecture
 
]
 
 
static let keychainAccess = Dependency.external(
 
url: "https://github.com/kishikawakatsumi/KeychainAccess.git",
 
version: .upToNextMajor(from: "4.2.2"),
 
name: "KeychainAccess",
 
package: "KeychainAccess"
 
)
 
 
static let combineSchedulers = Dependency.external(
 
url: "https://github.com/pointfreeco/combine-schedulers",
 
version: .upToNextMajor(from: "0.5.0"),
 
name: "CombineSchedulers",
 
package: "CombineSchedulers"
 
)
 
 
static let quick = Dependency.external(
 
url: "https://github.com/Quick/Quick",
 
version: .upToNextMajor(from: "3.0.0"),
 
name: "Quick",
 
package: "Quick"
 
)
 
 
static let nimble = Dependency.external(
 
url: "https://github.com/Quick/Nimble",
 
version: .upToNextMajor(from: "9.0.0"),
 
name: "Nimble",
 
package: "Nimble"
 
)
 
 
static let snapkit = Dependency.external(
 
url: "https://github.com/SnapKit/SnapKit",
 
version: .upToNextMajor(from: "5.0.1"),
 
name: "SnapKit",
 
package: "SnapKit"
 
)
 
 
static let retry = Dependency.external(
 
url: "https://github.com/icanzilb/Retry.git",
 
version: .upToNextMajor(from: "0.6.3"),
 
name: "Retry",
 
package: "Retry"
 
)
 
 
static let chatLayout = Dependency.external(
 
url: "https://github.com/ekazaev/ChatLayout",
 
version: .upToNextMajor(from: "1.1.14"),
 
name: "ChatLayout",
 
package: "ChatLayout"
 
)
 
 
static let differenceKit = Dependency.external(
 
url: "https://github.com/ra1028/DifferenceKit",
 
version: .upToNextMajor(from: "1.2.0"),
 
name: "DifferenceKit",
 
package: "DifferenceKit"
 
)
 
 
static let swiftProtobuf = Dependency.external(
 
url: "https://github.com/apple/swift-protobuf",
 
version: .upToNextMajor(from: "1.14.0"),
 
name: "SwiftProtobuf",
 
package: "SwiftProtobuf"
 
)
 
 
static let googleSignIn = Dependency.external(
 
url: "https://github.com/google/GoogleSignIn-iOS",
 
version: .upToNextMajor(from: "6.1.0"),
 
name: "GoogleSignIn-iOS",
 
package: "GoogleSignIn-iOS"
 
)
 
 
static let swiftyDropbox = Dependency.external(
 
url: "https://github.com/dropbox/SwiftyDropbox.git",
 
version: .upToNextMajor(from: "8.2.1"),
 
name: "SwiftyDropbox",
 
package: "SwiftyDropbox"
 
)
 
 
static let fileProvider = Dependency.external(
 
url: "https://github.com/amosavian/FileProvider.git",
 
version: .upToNextMajor(from: "0.26.0"),
 
name: "FileProvider",
 
package: "FileProvider"
 
)
 
 
static let swiftyBeaver = Dependency.external(
 
url: "https://github.com/SwiftyBeaver/SwiftyBeaver.git",
 
version: .upToNextMajor(from: "1.9.5"),
 
name: "SwiftyBeaver",
 
package: "SwiftyBeaver"
 
)
 
 
static let scrollViewController = Dependency.external(
 
url: "https://github.com/darrarski/ScrollViewController",
 
version: .upToNextMajor(from: "1.2.0"),
 
name: "ScrollViewController",
 
package: "ScrollViewController"
 
)
 
 
static let swiftCustomDump = Dependency.external(
 
url: "https://github.com/pointfreeco/swift-custom-dump.git",
 
version: .upToNextMajor(from: "0.5.0"),
 
name: "SwiftCustomDump",
 
package: "SwiftCustomDump"
 
)
 
 
static let xcTestDynamicOverlay = Dependency.external(
 
url: "https://github.com/pointfreeco/xctest-dynamic-overlay.git",
 
version: .upToNextMajor(from: "0.3.3"),
 
name: "XCTestDynamicOverlay",
 
package: "xctest-dynamic-overlay"
 
)
 
 
static let composableArchitecture = Dependency.external(
 
url: "https://github.com/pointfreeco/swift-composable-architecture.git",
 
version: .upToNextMajor(from: "0.32.0"),
 
name: "ComposableArchitecture",
 
package: "swift-composable-architecture"
 
)
 
 
static let shout = Dependency.external(
 
url: "https://github.com/darrarski/Shout.git",
 
version: .upToNextMajor(from: ""), // revision: df5a662293f0ac15eeb4f2fd3ffd0c07b73d0de0
 
name: "Shout",
 
package: "Shout"
 
)
 
 
static let firebase = Dependency.external(
 
url: "https://github.com/firebase/firebase-ios-sdk.git",
 
version: .upToNextMajor(from: "8.10.0"),
 
name: "Firebase",
 
package: "Firebase"
 
)
 
 
static let clientDatabase = Dependency.external(
 
url: "https://git.xx.network/elixxir/client-ios-db.git",
 
version: .upToNextMajor(from: "1.0.8"),
 
name: "",
 
package: ""
 
)
 
 
static let googleDrive = Dependency.external(
 
url: "https://github.com/google/google-api-objectivec-client-for-rest",
 
version: .upToNextMajor(from: "1.6.0"),
 
name: "GoogleDrive",
 
package: "GoogleDrive"
 
)
 
}
 
 
extension Feature {
 
static let all: [Feature] = [
 
.app
 
]
 
 
static let app = Feature.library(
 
name: "App",
 
dependencies: [
 
Feature.scan.targetDependency,
 
Feature.chat.targetDependency,
 
Feature.menu.targetDependency,
 
Feature.push.targetDependency,
 
Feature.sftp.targetDependency,
 
Feature.toast.targetDependency,
 
Feature.crash.targetDependency,
 
Feature.backup.targetDependency,
 
Feature.search.targetDependency,
 
Feature.launch.targetDependency,
 
Feature.icloud.targetDependency,
 
Feature.dropbox.targetDependency,
 
Feature.contact.targetDependency,
 
Feature.restore.targetDependency,
 
Feature.profile.targetDependency,
 
Feature.chatList.targetDependency,
 
Feature.settings.targetDependency,
 
Feature.requests.targetDependency,
 
Feature.keychain.targetDependency,
 
Feature.voxophone.targetDependency,
 
Feature.onboarding.targetDependency,
 
Feature.googleDrive.targetDependency,
 
Feature.contactList.targetDependency,
 
Feature.permissions.targetDependency
 
]
 
)
 
 
static let permissions = Feature.library(
 
name: "Permissions",
 
dependencies: [
 
Feature.theme.targetDependency,
 
Feature.shared.targetDependency,
 
Feature.dependencyInjection.targetDependency
 
]
 
)
 
}
 
let package = Package(
let package = Package(
name: "client-ios",
name: "client-ios",
defaultLocalization: "en",
defaultLocalization: "en",
platforms: [
platforms: [.iOS(.v14)],
.iOS(.v14),
products: Feature.all.map(\.product),
],
dependencies: Dependency.all.map(\.packageDependency),
products: [
targets: Feature.all.flatMap(\.targets)
.library(name: "App", targets: ["App"]),
)
.library(name: "HUD", targets: ["HUD"]),
.library(name: "Theme", targets: ["Theme"]),
.library(name: "Shared", targets: ["Shared"]),
.library(name: "Models", targets: ["Models"]),
.library(name: "XXLogger", targets: ["XXLogger"]),
.library(name: "Defaults", targets: ["Defaults"]),
.library(name: "Bindings", targets: ["Bindings"]),
.library(name: "Keychain", targets: ["Keychain"]),
.library(name: "Voxophone", targets: ["Voxophone"]),
.library(name: "Countries", targets: ["Countries"]),
.library(name: "InputField", targets: ["InputField"]),
.library(name: "TestHelpers", targets: ["TestHelpers"]),
.library(name: "ScanFeature", targets: ["ScanFeature"]),
.library(name: "Permissions", targets: ["Permissions"]),
.library(name: "MenuFeature", targets: ["MenuFeature"]),
.library(name: "Integration", targets: ["Integration"]),
.library(name: "ChatFeature", targets: ["ChatFeature"]),
.library(name: "PushFeature", targets: ["PushFeature"]),
.library(name: "SFTPFeature", targets: ["SFTPFeature"]),
.library(name: "CrashService", targets: ["CrashService"]),
.library(name: "Presentation", targets: ["Presentation"]),
.library(name: "BackupFeature", targets: ["BackupFeature"]),
.library(name: "LaunchFeature", targets: ["LaunchFeature"]),
.library(name: "iCloudFeature", targets: ["iCloudFeature"]),
.library(name: "SearchFeature", targets: ["SearchFeature"]),
.library(name: "DrawerFeature", targets: ["DrawerFeature"]),
.library(name: "CollectionView", targets: ["CollectionView"]),
.library(name: "RestoreFeature", targets: ["RestoreFeature"]),
.library(name: "CrashReporting", targets: ["CrashReporting"]),
.library(name: "ProfileFeature", targets: ["ProfileFeature"]),
.library(name: "ContactFeature", targets: ["ContactFeature"]),
.library(name: "NetworkMonitor", targets: ["NetworkMonitor"]),
.library(name: "DropboxFeature", targets: ["DropboxFeature"]),
.library(name: "VersionChecking", targets: ["VersionChecking"]),
.library(name: "SettingsFeature", targets: ["SettingsFeature"]),
.library(name: "ChatListFeature", targets: ["ChatListFeature"]),
.library(name: "RequestsFeature", targets: ["RequestsFeature"]),
.library(name: "ChatInputFeature", targets: ["ChatInputFeature"]),
.library(name: "OnboardingFeature", targets: ["OnboardingFeature"]),
.library(name: "GoogleDriveFeature", targets: ["GoogleDriveFeature"]),
.library(name: "ContactListFeature", targets: ["ContactListFeature"]),
.library(name: "DependencyInjection", targets: ["DependencyInjection"])
],
dependencies: [
.package(url: "https://github.com/Quick/Quick", from: "3.0.0"),
.package(url: "https://github.com/Quick/Nimble", from: "9.0.0"),
.package(url: "https://github.com/SnapKit/SnapKit", from: "5.0.1"),
.package(url: "https://github.com/icanzilb/Retry.git", from: "0.6.3"),
.package(url: "https://github.com/ekazaev/ChatLayout", from: "1.1.14"),
.package(url: "https://github.com/ra1028/DifferenceKit", from: "1.2.0"),
.package(url: "https://github.com/apple/swift-protobuf", from: "1.14.0"),
.package(url: "https://github.com/google/GoogleSignIn-iOS", from: "6.1.0"),
.package(url: "https://github.com/dropbox/SwiftyDropbox.git", from: "8.2.1"),
.package(url: "https://github.com/amosavian/FileProvider.git", from: "0.26.0"),
.package(url: "https://github.com/SwiftyBeaver/SwiftyBeaver.git", from: "1.9.5"),
.package(url: "https://github.com/darrarski/ScrollViewController", from: "1.2.0"),
.package(url: "https://github.com/pointfreeco/combine-schedulers", from: "0.5.0"),
.package(url: "https://github.com/kishikawakatsumi/KeychainAccess", from: "4.2.1"),
.package(url: "https://github.com/google/google-api-objectivec-client-for-rest", from: "1.6.0"),
.package(url: "https://git.xx.network/elixxir/client-ios-db.git", .upToNextMajor(from: "1.0.8")),
.package(url: "https://github.com/firebase/firebase-ios-sdk.git", .upToNextMajor(from: "8.10.0")),
.package(url: "https://github.com/darrarski/Shout.git", revision: "df5a662293f0ac15eeb4f2fd3ffd0c07b73d0de0"),
.package(url: "https://github.com/pointfreeco/swift-composable-architecture.git",.upToNextMajor(from: "0.32.0")),
.package(url: "https://github.com/pointfreeco/swift-custom-dump.git", .upToNextMajor(from: "0.5.0")),
.package(url: "https://github.com/pointfreeco/xctest-dynamic-overlay.git", .upToNextMajor(from: "0.3.3")),
],
targets: [
.target(
name: "App",
dependencies: [
"Keychain",
"Voxophone",
"Permissions",
"ScanFeature",
"ChatFeature",
"MenuFeature",
"PushFeature",
"SFTPFeature",
"ToastFeature",
"CrashService",
"BackupFeature",
"SearchFeature",
"LaunchFeature",
"iCloudFeature",
"DropboxFeature",
"ContactFeature",
"RestoreFeature",
"ProfileFeature",
"CrashReporting",
"ChatListFeature",
"SettingsFeature",
"RequestsFeature",
"OnboardingFeature",
"GoogleDriveFeature",
"ContactListFeature"
]
),
.target(name: "CrashReporting"),
.target(name: "NetworkMonitor"),
.target(name: "VersionChecking"),
.target(name: "DependencyInjection"),
.target(name: "InputField", dependencies: ["Shared"]),
.binaryTarget(name: "Bindings", path: "XCFrameworks/Bindings.xcframework"),
// MARK: - Permissions
.target(
name: "Permissions",
dependencies: [
"Theme",
"Shared",
"DependencyInjection"
]
),
// MARK: - PushFeature
.target(
name: "PushFeature",
dependencies: [
"Models",
"Defaults",
"Integration",
"DependencyInjection"
]
),
// MARK: - TestHelpers
.target(
name: "TestHelpers",
dependencies: [
"Models",
"Presentation"
]
),
// MARK: - Keychain
.target(
name: "Keychain",
dependencies: [
.product(
name: "KeychainAccess",
package: "KeychainAccess"
)
]
),
// MARK: - Voxophone
.target(
name: "Voxophone",
dependencies: [
"Shared"
]
),
// MARK: - Models
.target(
name: "Models",
dependencies: [
.product(
name: "DifferenceKit",
package: "DifferenceKit"
),
.product(
name: "SwiftProtobuf",
package: "swift-protobuf"
)
]
),
// MARK: - Defaults
.target(
name: "Defaults",
dependencies: [
"DependencyInjection"
]
),
// MARK: - ToastFeature
.target(
name: "ToastFeature",
dependencies: [
"Shared"
]
),
// MARK: - CrashService
.target(
name: "CrashService",
dependencies: [
"CrashReporting",
.product(
name: "FirebaseCrashlytics",
package: "firebase-ios-sdk"
)
]
),
// MARK: - SFTPFeature
.target(
name: "SFTPFeature",
dependencies: [
"HUD",
"Models",
"Shared",
"Keychain",
"InputField",
"Presentation",
"DependencyInjection",
.product(
name: "Shout",
package: "Shout"
)
]
),
// MARK: - GoogleDriveFeature
.target(
name: "GoogleDriveFeature",
dependencies: [
.product(
name: "GoogleSignIn",
package: "GoogleSignIn-iOS"
),
.product(
name: "GoogleAPIClientForREST_Drive",
package: "google-api-objectivec-client-for-rest"
)
],
resources: [.process("Resources")]
),
// MARK: - iCloudFeature
.target(
name: "iCloudFeature",
dependencies: [
.product(
name: "FilesProvider",
package: "FileProvider"
)
]
),
// MARK: - DropboxFeature
.target(
name: "DropboxFeature",
dependencies: [
.product(
name: "SwiftyDropbox",
package: "SwiftyDropbox"
)
],
resources: [.process("Resources")]
),
// MARK: - Countries
.target(
// .target(name: "CrashReporting"),
name: "Countries",
// .target(name: "NetworkMonitor"),
dependencies: [
// .target(name: "VersionChecking"),
"Theme",
// .target(name: "DependencyInjection"),
"Shared",
// .target(name: "InputField", dependencies: ["Shared"]),
"DependencyInjection"
//
],
//
resources: [.process("Resources")]
// // MARK: - PushFeature
),
//
// .target(
// MARK: - Theme
// name: "PushFeature",
// dependencies: [
.target(
// "Models",
name: "Theme",
// "Defaults",
dependencies: [
// "Integration",
"Defaults",
// "DependencyInjection"
"DependencyInjection"
// ]
]
// ),
),
//
// // MARK: - TestHelpers
// MARK: - DrawerFeature
//
// .target(
.target(
// name: "TestHelpers",
name: "DrawerFeature",
// dependencies: [
dependencies: [
// "Models",
"Shared",
// "Presentation"
"InputField",
// ]
.product(
// ),
name: "ScrollViewController",
//
package: "ScrollViewController"
// // MARK: - Keychain
)
//
]
// .target(
),
// name: "Keychain",
// dependencies: [
// MARK: - HUD
// .product(
// name: "KeychainAccess",
.target(
// package: "KeychainAccess"
name: "HUD",
// )
dependencies: [
// ]
"Theme",
// ),
"Shared",
//
.product(
// // MARK: - Voxophone
name: "SnapKit",
//
package: "SnapKit"
// .target(
)
// name: "Voxophone",
]
// dependencies: [
),
// "Shared"
// ]
// MARK: - XXLogger
// ),
//
.target(
// // MARK: - Models
name: "XXLogger",
//
dependencies: [
// .target(
.product(
// name: "Models",
name: "SwiftyBeaver",
// dependencies: [
package: "SwiftyBeaver"
// .product(
)
// name: "DifferenceKit",
]
// package: "DifferenceKit"
),
// ),
// .product(
// MARK: - Shared
// name: "SwiftProtobuf",
// package: "swift-protobuf"
.target(
// )
name: "Shared",
// ]
dependencies: [
// ),
.product(
//
name: "SnapKit",
// // MARK: - Defaults
package: "SnapKit"
//
),
// .target(
.product(
// name: "Defaults",
name: "ChatLayout",
// dependencies: [
package: "ChatLayout"
// "DependencyInjection"
),
// ]
.product(
// ),
name: "DifferenceKit",
//
package: "DifferenceKit"
// // MARK: - ToastFeature
)
//
],
// .target(
exclude: ["swiftgen.yml"],
// name: "ToastFeature",
resources: [.process("Resources")]
// dependencies: [
),
// "Shared"
// ]
// MARK: - Integration
// ),
//
.target(
// // MARK: - CrashService
name: "Integration",
//
dependencies: [
// .target(
"Shared",
// name: "CrashService",
"Bindings",
// dependencies: [
"XXLogger",
// "CrashReporting",
"Keychain",
// .product(
"ToastFeature",
// name: "FirebaseCrashlytics",
"BackupFeature",
// package: "firebase-ios-sdk"
"CrashReporting",
// )
"NetworkMonitor",
// ]
"DependencyInjection",
// ),
.product(
//
name: "Retry",
// // MARK: - SFTPFeature
package: "Retry"
//
),
// .target(
.product(
// name: "SFTPFeature",
name: "XXDatabase",
// dependencies: [
package: "client-ios-db"
// "HUD",
),
// "Models",
.product(
// "Shared",
name: "XXLegacyDatabaseMigrator",
// "Keychain",
package: "client-ios-db"
// "InputField",
)
// "Presentation",
],
// "DependencyInjection",
resources: [.process("Resources")]
// .product(
),
// name: "Shout",
// package: "Shout"
// MARK: - Presentation
// )
// ]
.target(
// ),
name: "Presentation",
//
dependencies: [
// // MARK: - GoogleDriveFeature
"Theme",
//
"Shared",
// .target(
.product(
// name: "GoogleDriveFeature",
name: "SnapKit",
// dependencies: [
package: "SnapKit"
// .product(
)
// name: "GoogleSignIn",
]
// package: "GoogleSignIn-iOS"
),
// ),
// .product(
// MARK: - ChatInputFeature
// name: "GoogleAPIClientForREST_Drive",
// package: "google-api-objectivec-client-for-rest"
.target(
// )
name: "ChatInputFeature",
// ],
dependencies: [
// resources: [.process("Resources")]
"Voxophone",
// ),
.product(
//
name: "ComposableArchitecture",
// // MARK: - iCloudFeature
package: "swift-composable-architecture"
//
)
// .target(
]
// name: "iCloudFeature",
),
// dependencies: [
// .product(
// MARK: - RestoreFeature
// name: "FilesProvider",
// package: "FileProvider"
.target(
// )
name: "RestoreFeature",
// ]
dependencies: [
// ),
"HUD",
//
"Shared",
// // MARK: - DropboxFeature
"SFTPFeature",
//
"Integration",
// .target(
"Presentation",
// name: "DropboxFeature",
"iCloudFeature",
// dependencies: [
"DropboxFeature",
// .product(
"GoogleDriveFeature",
// name: "SwiftyDropbox",
"DependencyInjection"
// package: "SwiftyDropbox"
]
// )
),
// ],
// resources: [.process("Resources")]
// MARK: - ContactFeature
// ),
//
.target(
// // MARK: - Countries
name: "ContactFeature",
//
dependencies: [
// .target(
"Shared",
// name: "Countries",
"InputField",
// dependencies: [
"ChatFeature",
// "Theme",
"Presentation",
// "Shared",
.product(
// "DependencyInjection"
name: "CombineSchedulers",
// ],
package: "combine-schedulers"
// resources: [.process("Resources")]
),
// ),
.product(
//
name: "ScrollViewController",
// // MARK: - Theme
package: "ScrollViewController"
//
)
// .target(
]
// name: "Theme",
),
// dependencies: [
// "Defaults",
// MARK: - ChatFeature
// "DependencyInjection"
// ]
.target(
// ),
name: "ChatFeature",
//
dependencies: [
// // MARK: - DrawerFeature
"HUD",
//
"Theme",
// .target(
"Shared",
// name: "DrawerFeature",
"Defaults",
// dependencies: [
"Keychain",
// "Shared",
"Voxophone",
// "InputField",
"Integration",
// .product(
"Permissions",
// name: "ScrollViewController",
"Presentation",
// package: "ScrollViewController"
"DrawerFeature",
// )
"ChatInputFeature",
// ]
"DependencyInjection",
// ),
.product(
//
name: "ChatLayout",
// // MARK: - HUD
package: "ChatLayout"
//
),
// .target(
.product(
// name: "HUD",
name: "DifferenceKit",
// dependencies: [
package: "DifferenceKit"
// "Theme",
),
// "Shared",
.product(
// .product(
name: "ScrollViewController",
// name: "SnapKit",
package: "ScrollViewController"
// package: "SnapKit"
)
// )
]
// ]
),
// ),
//
// MARK: - SearchFeature
// // MARK: - XXLogger
//
.target(
// .target(
name: "SearchFeature",
// name: "XXLogger",
dependencies: [
// dependencies: [
"HUD",
// .product(
"Shared",
// name: "SwiftyBeaver",
"Countries",
// package: "SwiftyBeaver"
"Integration",
// )
"Presentation",
// ]
"ContactFeature",
// ),
"DependencyInjection"
//
]
// // MARK: - Shared
),
//
// .target(
// MARK: - LaunchFeature
// name: "Shared",
// dependencies: [
.target(
// .product(
name: "LaunchFeature",
// name: "SnapKit",
dependencies: [
// package: "SnapKit"
"HUD",
// ),
"Theme",
// .product(
"Shared",
// name: "ChatLayout",
"Defaults",
// package: "ChatLayout"
"PushFeature",
// ),
"Integration",
// .product(
"Permissions",
// name: "DifferenceKit",
"DropboxFeature",
// package: "DifferenceKit"
"VersionChecking",
// )
"DependencyInjection"
// ],
]
// exclude: ["swiftgen.yml"],
),
// resources: [.process("Resources")]
// ),
// MARK: - RequestsFeature
//
// // MARK: - Integration
.target(
//
name: "RequestsFeature",
// .target(
dependencies: [
// name: "Integration",
"Theme",
// dependencies: [
"Shared",
// "Shared",
"Integration",
// "Bindings",
"ToastFeature",
// "XXLogger",
"ContactFeature",
// "Keychain",
"DependencyInjection",
// "ToastFeature",
.product(
// "BackupFeature",
name: "DifferenceKit",
// "CrashReporting",
package: "DifferenceKit"
// "NetworkMonitor",
)
// "DependencyInjection",
]
// .product(
),
// name: "Retry",
// package: "Retry"
// MARK: - ProfileFeature
// ),
// .product(
.target(
// name: "XXDatabase",
name: "ProfileFeature",
// package: "client-ios-db"
dependencies: [
// ),
"HUD",
// .product(
"Theme",
// name: "XXLegacyDatabaseMigrator",
"Shared",
// package: "client-ios-db"
"Keychain",
// )
"Defaults",
// ],
"Countries",
// resources: [.process("Resources")]
"InputField",
// ),
"MenuFeature",
//
"Permissions",
// // MARK: - Presentation
"Integration",
//
"Presentation",
// .target(
"DrawerFeature",
// name: "Presentation",
"DependencyInjection",
// dependencies: [
.product(
// "Theme",
name: "CombineSchedulers",
// "Shared",
package: "combine-schedulers"
// .product(
),
// name: "SnapKit",
.product(
// package: "SnapKit"
name: "ScrollViewController",
// )
package: "ScrollViewController"
// ]
)
// ),
]
//
),
// // MARK: - ChatInputFeature
//
// MARK: - ChatListFeature
// .target(
// name: "ChatInputFeature",
.target(
// dependencies: [
name: "ChatListFeature",
// "Voxophone",
dependencies: [
// .product(
"Theme",
// name: "ComposableArchitecture",
"Shared",
// package: "swift-composable-architecture"
"Defaults",
// )
"MenuFeature",
// ]
"ChatFeature",
// ),
"ProfileFeature",
//
"SettingsFeature",
// // MARK: - RestoreFeature
"ContactListFeature",
//
"DependencyInjection",
// .target(
.product(
// name: "RestoreFeature",
name: "DifferenceKit",
// dependencies: [
package: "DifferenceKit"
// "HUD",
)
// "Shared",
]
// "SFTPFeature",
),
// "Integration",
// "Presentation",
// MARK: - OnboardingFeature
// "iCloudFeature",
// "DropboxFeature",
.target(
// "GoogleDriveFeature",
name: "OnboardingFeature",
// "DependencyInjection"
dependencies: [
// ]
"HUD",
// ),
"Shared",
//
"Defaults",
// // MARK: - ContactFeature
"Keychain",
//
"Countries",
// .target(
"InputField",
// name: "ContactFeature",
"Permissions",
// dependencies: [
"PushFeature",
// "Shared",
"Integration",
// "InputField",
"Presentation",
// "ChatFeature",
"DrawerFeature",
// "Presentation",
"VersionChecking",
// .product(
"DependencyInjection",
// name: "CombineSchedulers",
.product(
// package: "combine-schedulers"
name: "CombineSchedulers",
// ),
package: "combine-schedulers"
// .product(
),
// name: "ScrollViewController",
.product(
// package: "ScrollViewController"
name: "ScrollViewController",
// )
package: "ScrollViewController"
// ]
)
// ),
]
//
),
// // MARK: - ChatFeature
//
// MARK: - MenuFeature
// .target(
// name: "ChatFeature",
.target(
// dependencies: [
name: "MenuFeature",
// "HUD",
dependencies: [
// "Theme",
"Theme",
// "Shared",
"Shared",
// "Defaults",
"Defaults",
// "Keychain",
"Integration",
// "Voxophone",
"Presentation",
// "Integration",
"DependencyInjection"
// "Permissions",
]
// "Presentation",
),
// "DrawerFeature",
// "ChatInputFeature",
// MARK: - BackupFeature
// "DependencyInjection",
// .product(
.target(
// name: "ChatLayout",
name: "BackupFeature",
// package: "ChatLayout"
dependencies: [
// ),
"HUD",
// .product(
"Shared",
// name: "DifferenceKit",
"Models",
// package: "DifferenceKit"
"InputField",
// ),
"SFTPFeature",
// .product(
"Presentation",
// name: "ScrollViewController",
"iCloudFeature",
// package: "ScrollViewController"
"DrawerFeature",
// )
"DropboxFeature",
// ]
"GoogleDriveFeature",
// ),
"DependencyInjection"
//
]
// // MARK: - SearchFeature
),
//
// .target(
// MARK: - ScanFeature
// name: "SearchFeature",
// dependencies: [
.target(
// "HUD",
name: "ScanFeature",
// "Shared",
dependencies: [
// "Countries",
"Theme",
// "Integration",
"Shared",
// "Presentation",
"Countries",
// "ContactFeature",
"Permissions",
// "DependencyInjection"
"Integration",
// ]
"Presentation",
// ),
"ContactFeature",
//
"DependencyInjection",
// // MARK: - LaunchFeature
.product(
//
name: "SnapKit",
// .target(
package: "SnapKit"
// name: "LaunchFeature",
)
// dependencies: [
]
// "HUD",
),
// "Theme",
// "Shared",
// MARK: - ContactListFeature
// "Defaults",
// "PushFeature",
.target(
// "Integration",
name: "ContactListFeature",
// "Permissions",
dependencies: [
// "DropboxFeature",
"Theme",
// "VersionChecking",
"Shared",
// "DependencyInjection"
"Integration",
// ]
"Presentation",
// ),
"ContactFeature",
//
"DependencyInjection",
// // MARK: - RequestsFeature
.product(
//
name: "DifferenceKit",
// .target(
package: "DifferenceKit"
// name: "RequestsFeature",
)
// dependencies: [
]
// "Theme",
),
// "Shared",
// "Integration",
// MARK: - SettingsFeature
// "ToastFeature",
// "ContactFeature",
.target(
// "DependencyInjection",
name: "SettingsFeature",
// .product(
dependencies: [
// name: "DifferenceKit",
"HUD",
// package: "DifferenceKit"
"Theme",
// )
"Shared",
// ]
"Defaults",
// ),
"Keychain",
//
"InputField",
// // MARK: - ProfileFeature
"PushFeature",
//
"Permissions",
// .target(
"MenuFeature",
// name: "ProfileFeature",
"Integration",
// dependencies: [
"Presentation",
// "HUD",
"DrawerFeature",
// "Theme",
"DependencyInjection",
// "Shared",
.product(
// "Keychain",
name: "CombineSchedulers",
// "Defaults",
package: "combine-schedulers"
// "Countries",
),
// "InputField",
.product(
// "MenuFeature",
name: "ScrollViewController",
// "Permissions",
package: "ScrollViewController"
// "Integration",
)
// "Presentation",
]
// "DrawerFeature",
),
// "DependencyInjection",
// .product(
// MARK: - DependencyInjectionTests
// name: "CombineSchedulers",
// package: "combine-schedulers"
.testTarget(
// ),
name: "DependencyInjectionTests",
// .product(
dependencies: ["DependencyInjection"]
// name: "ScrollViewController",
),
// package: "ScrollViewController"
// )
// MARK: - AppTests
// ]
// ),
.testTarget(
//
name: "AppTests",
// // MARK: - ChatListFeature
dependencies: ["App"]
//
),
// .target(
// name: "ChatListFeature",
// MARK: - ProfileFeatureTests
// dependencies: [
// "Theme",
.testTarget(
// "Shared",
name: "ProfileFeatureTests",
// "Defaults",
dependencies: [
// "MenuFeature",
"TestHelpers",
// "ChatFeature",
"ProfileFeature",
// "ProfileFeature",
.product(name: "Quick", package: "Quick"),
// "SettingsFeature",
.product(name: "Nimble", package: "Nimble")
// "ContactListFeature",
]
// "DependencyInjection",
),
// .product(
// name: "DifferenceKit",
// MARK: - ContactFeatureTests
// package: "DifferenceKit"
// )
.testTarget(
// ]
name: "ContactFeatureTests",
// ),
dependencies: [
//
"TestHelpers",
// // MARK: - OnboardingFeature
"ContactFeature",
//
.product(name: "Quick", package: "Quick"),
// .target(
.product(name: "Nimble", package: "Nimble")
// name: "OnboardingFeature",
]
// dependencies: [
),
// "HUD",
// "Shared",
// MARK: - SearchFeatureTests
// "Defaults",
// "Keychain",
.testTarget(
// "Countries",
name: "SearchFeatureTests",
// "InputField",
dependencies: [
// "Permissions",
"TestHelpers",
// "PushFeature",
"SearchFeature",
// "Integration",
.product(name: "Quick", package: "Quick"),
// "Presentation",
.product(name: "Nimble", package: "Nimble")
// "DrawerFeature",
]
// "VersionChecking",
),
// "DependencyInjection",
// .product(
// MARK: - RequestsFeatureTests
// name: "CombineSchedulers",
// package: "combine-schedulers"
.testTarget(
// ),
name: "RequestsFeatureTests",
// .product(
dependencies: [
// name: "ScrollViewController",
"TestHelpers",
// package: "ScrollViewController"
"RequestsFeature",
// )
.product(name: "Quick", package: "Quick"),
// ]
.product(name: "Nimble", package: "Nimble")
// ),
]
//
),
// // MARK: - MenuFeature
//
// MARK: - SettingsFeatureTests
// .target(
// name: "MenuFeature",
.testTarget(
// dependencies: [
name: "SettingsFeatureTests",
// "Theme",
dependencies: [
// "Shared",
"TestHelpers",
// "Defaults",
"SettingsFeature",
// "Integration",
.product(name: "Quick", package: "Quick"),
// "Presentation",
.product(name: "Nimble", package: "Nimble")
// "DependencyInjection"
]
// ]
),
// ),
//
// MARK: - SettingsFeatureTests
// // MARK: - BackupFeature
//
.testTarget(
// .target(
name: "ChatListFeatureTests",
// name: "BackupFeature",
dependencies: [
// dependencies: [
"TestHelpers",
// "HUD",
"ChatListFeature",
// "Shared",
.product(name: "Quick", package: "Quick"),
// "Models",
.product(name: "Nimble", package: "Nimble")
// "InputField",
]
// "SFTPFeature",
),
// "Presentation",
// "iCloudFeature",
// MARK: - ContactListFeatureTests
// "DrawerFeature",
// "DropboxFeature",
.testTarget(
// "GoogleDriveFeature",
name: "ContactListFeatureTests",
// "DependencyInjection"
dependencies: [
// ]
"TestHelpers",
// ),
"ContactListFeature",
//
.product(name: "Quick", package: "Quick"),
// // MARK: - ScanFeature
.product(name: "Nimble", package: "Nimble")
//
]
// .target(
),
// name: "ScanFeature",
// dependencies: [
// MARK: - OnboardingFeatureTests
// "Theme",
// "Shared",
.testTarget(
// "Countries",
name: "OnboardingFeatureTests",
// "Permissions",
dependencies: [
// "Integration",
"TestHelpers",
// "Presentation",
"OnboardingFeature",
// "ContactFeature",
.product(name: "Quick", package: "Quick"),
// "DependencyInjection",
.product(name: "Nimble", package: "Nimble")
// .product(
]
// name: "SnapKit",
),
// package: "SnapKit"
// )
// MARK: - PresentationTests
// ]
// ),
.testTarget(
//
name: "PresentationTests",
// // MARK: - ContactListFeature
dependencies: [
//
"Presentation",
// .target(
.product(name: "Quick", package: "Quick"),
// name: "ContactListFeature",
.product(name: "Nimble", package: "Nimble")
// dependencies: [
]
// "Theme",
),
// "Shared",
// "Integration",
// MARK: - ThemeTests
// "Presentation",
// "ContactFeature",
.testTarget(
// "DependencyInjection",
name: "ThemeTests",
// .product(
dependencies: [
// name: "DifferenceKit",
"Theme",
// package: "DifferenceKit"
.product(name: "Quick", package: "Quick"),
// )
.product(name: "Nimble", package: "Nimble")
// ]
]
// ),
),
//
// // MARK: - SettingsFeature
// MARK: - ChatFeatureTests
//
// .target(
.testTarget(
// name: "SettingsFeature",
name: "ChatFeatureTests",
// dependencies: [
dependencies: [
// "HUD",
"ChatFeature",
// "Theme",
"TestHelpers",
// "Shared",
.product(name: "Quick", package: "Quick"),
// "Defaults",
.product(name: "Nimble", package: "Nimble")
// "Keychain",
]
// "InputField",
),
// "PushFeature",
// "Permissions",
// MARK: - ScanFeatureTests
// "MenuFeature",
// "Integration",
.testTarget(
// "Presentation",
name: "ScanFeatureTests",
// "DrawerFeature",
dependencies: [
// "DependencyInjection",
"TestHelpers",
// .product(
"ScanFeature",
// name: "CombineSchedulers",
.product(name: "Quick", package: "Quick"),
// package: "combine-schedulers"
.product(name: "Nimble", package: "Nimble")
// ),
]
// .product(
),
// name: "ScrollViewController",
// package: "ScrollViewController"
// MARK: - CollectionView
// )
// ]
.target(
// ),
name: "CollectionView",
//
dependencies: [
// // MARK: - DependencyInjectionTests
.product(name: "ChatLayout", package: "ChatLayout"),
//
.product(name: "XCTestDynamicOverlay", package: "xctest-dynamic-overlay"),
// .testTarget(
]
// name: "DependencyInjectionTests",
),
// dependencies: ["DependencyInjection"]
.testTarget(
// ),
name: "CollectionViewTests",
//
dependencies: [
// // MARK: - AppTests
.target(name: "CollectionView"),
//
.product(name: "CustomDump", package: "swift-custom-dump"),
// .testTarget(
]
// name: "AppTests",
),
// dependencies: ["App"]
]
// ),
)
//
 
// // MARK: - ProfileFeatureTests
 
//
 
// .testTarget(
 
// name: "ProfileFeatureTests",
 
// dependencies: [
 
// "TestHelpers",
 
// "ProfileFeature",
 
// .product(name: "Quick", package: "Quick"),
 
// .product(name: "Nimble", package: "Nimble")
 
// ]
 
// ),
 
//
 
// // MARK: - ContactFeatureTests
 
//
 
// .testTarget(
 
// name: "ContactFeatureTests",
 
// dependencies: [
 
// "TestHelpers",
 
// "ContactFeature",
 
// .product(name: "Quick", package: "Quick"),
 
// .product(name: "Nimble", package: "Nimble")
 
// ]
 
// ),
 
//
 
// // MARK: - SearchFeatureTests
 
//
 
// .testTarget(
 
// name: "SearchFeatureTests",
 
// dependencies: [
 
// "TestHelpers",
 
// "SearchFeature",
 
// .product(name: "Quick", package: "Quick"),
 
// .product(name: "Nimble", package: "Nimble")
 
// ]
 
// ),
 
//
 
// // MARK: - RequestsFeatureTests
 
//
 
// .testTarget(
 
// name: "RequestsFeatureTests",
 
// dependencies: [
 
// "TestHelpers",
 
// "RequestsFeature",
 
// .product(name: "Quick", package: "Quick"),
 
// .product(name: "Nimble", package: "Nimble")
 
// ]
 
// ),
 
//
 
// // MARK: - SettingsFeatureTests
 
//
 
// .testTarget(
 
// name: "SettingsFeatureTests",
 
// dependencies: [
 
// "TestHelpers",
 
// "SettingsFeature",
 
// .product(name: "Quick", package: "Quick"),
 
// .product(name: "Nimble", package: "Nimble")
 
// ]
 
// ),
 
//
 
// // MARK: - SettingsFeatureTests
 
//
 
// .testTarget(
 
// name: "ChatListFeatureTests",
 
// dependencies: [
 
// "TestHelpers",
 
// "ChatListFeature",
 
// .product(name: "Quick", package: "Quick"),
 
// .product(name: "Nimble", package: "Nimble")
 
// ]
 
// ),
 
//
 
// // MARK: - ContactListFeatureTests
 
//
 
// .testTarget(
 
// name: "ContactListFeatureTests",
 
// dependencies: [
 
// "TestHelpers",
 
// "ContactListFeature",
 
// .product(name: "Quick", package: "Quick"),
 
// .product(name: "Nimble", package: "Nimble")
 
// ]
 
// ),
 
//
 
// // MARK: - OnboardingFeatureTests
 
//
 
// .testTarget(
 
// name: "OnboardingFeatureTests",
 
// dependencies: [
 
// "TestHelpers",
 
// "OnboardingFeature",
 
// .product(name: "Quick", package: "Quick"),
 
// .product(name: "Nimble", package: "Nimble")
 
// ]
 
// ),
 
//
 
// // MARK: - PresentationTests
 
//
 
// .testTarget(
 
// name: "PresentationTests",
 
// dependencies: [
 
// "Presentation",
 
// .product(name: "Quick", package: "Quick"),
 
// .product(name: "Nimble", package: "Nimble")
 
// ]
 
// ),
 
//
 
// // MARK: - ThemeTests
 
//
 
// .testTarget(
 
// name: "ThemeTests",
 
// dependencies: [
 
// "Theme",
 
// .product(name: "Quick", package: "Quick"),
 
// .product(name: "Nimble", package: "Nimble")
 
// ]
 
// ),
 
//
 
// // MARK: - ChatFeatureTests
 
//
 
// .testTarget(
 
// name: "ChatFeatureTests",
 
// dependencies: [
 
// "ChatFeature",
 
// "TestHelpers",
 
// .product(name: "Quick", package: "Quick"),
 
// .product(name: "Nimble", package: "Nimble")
 
// ]
 
// ),
 
//
 
// // MARK: - ScanFeatureTests
 
//
 
// .testTarget(
 
// name: "ScanFeatureTests",
 
// dependencies: [
 
// "TestHelpers",
 
// "ScanFeature",
 
// .product(name: "Quick", package: "Quick"),
 
// .product(name: "Nimble", package: "Nimble")
 
// ]
 
// ),
 
//
 
// // MARK: - CollectionView
 
//
 
// .target(
 
// name: "CollectionView",
 
// dependencies: [
 
// .product(name: "ChatLayout", package: "ChatLayout"),
 
// .product(name: "XCTestDynamicOverlay", package: "xctest-dynamic-overlay"),
 
// ]
 
// ),
 
// .testTarget(
 
// name: "CollectionViewTests",
 
// dependencies: [
 
// .target(name: "CollectionView"),
 
// .product(name: "CustomDump", package: "swift-custom-dump"),
 
// ]
 
// ),
 
// ]
 
//)
Loading