Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
xx messenger iOS
Manage
Activity
Members
Labels
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Package Registry
Model registry
Operate
Terraform modules
Analyze
Contributor analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
mobile
iOS
xx messenger iOS
Merge requests
!64
Organizing Package.swift
Code
Review changes
Check out branch
Download
Patches
Plain diff
Merged
Organizing Package.swift
refactor/package-swift
into
development
Overview
0
Commits
6
Pipelines
0
Changes
1
Merged
Bruno Muniz
requested to merge
refactor/package-swift
into
development
2 years ago
Overview
0
Commits
6
Pipelines
0
Changes
1
Expand
0
0
Merge request reports
Compare
version 1
version 3
5c86d911
2 years ago
version 2
5881219d
2 years ago
version 1
00b3c7ac
2 years ago
development (base)
and
version 3
latest version
0bb61f32
6 commits,
2 years ago
version 3
5c86d911
5 commits,
2 years ago
version 2
5881219d
1 commit,
2 years ago
version 1
00b3c7ac
1 commit,
2 years ago
Show latest version
1 file
+
721
−
1068
Inline
Compare changes
Side-by-side
Inline
Show whitespace changes
Show one file at a time
Package.swift
+
721
−
1068
Options
// swift-tools-version:5.6
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
(
name
:
"client-ios"
,
defaultLocalization
:
"en"
,
platforms
:
[
.
iOS
(
.
v14
)],
products
:
Feature
.
all
.
map
(\
.
product
),
dependencies
:
Dependency
.
all
.
map
(\
.
packageDependency
),
targets
:
Feature
.
all
.
flatMap
(\
.
targets
)
platforms
:
[
.
iOS
(
.
v14
),
],
products
:
[
.
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
:
"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
:
"ToastFeature"
,
targets
:
[
"ToastFeature"
]),
.
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"
,
.
upToNextMajor
(
from
:
"3.0.0"
)
),
.
package
(
url
:
"https://github.com/Quick/Nimble"
,
.
upToNextMajor
(
from
:
"9.0.0"
)
),
.
package
(
url
:
"https://github.com/SnapKit/SnapKit"
,
.
upToNextMajor
(
from
:
"5.0.1"
)
),
.
package
(
url
:
"https://github.com/icanzilb/Retry.git"
,
.
upToNextMajor
(
from
:
"0.6.3"
)
),
.
package
(
url
:
"https://github.com/ekazaev/ChatLayout"
,
.
upToNextMajor
(
from
:
"1.1.14"
)
),
.
package
(
url
:
"https://github.com/ra1028/DifferenceKit"
,
.
upToNextMajor
(
from
:
"1.2.0"
)
),
.
package
(
url
:
"https://github.com/apple/swift-protobuf"
,
.
upToNextMajor
(
from
:
"1.14.0"
)
),
.
package
(
url
:
"https://github.com/google/GoogleSignIn-iOS"
,
.
upToNextMajor
(
from
:
"6.1.0"
)
),
.
package
(
url
:
"https://github.com/dropbox/SwiftyDropbox.git"
,
.
upToNextMajor
(
from
:
"8.2.1"
)
),
.
package
(
url
:
"https://github.com/amosavian/FileProvider.git"
,
.
upToNextMajor
(
from
:
"0.26.0"
)
),
.
package
(
url
:
"https://github.com/SwiftyBeaver/SwiftyBeaver.git"
,
.
upToNextMajor
(
from
:
"1.9.5"
)
),
.
package
(
url
:
"https://github.com/darrarski/ScrollViewController"
,
.
upToNextMajor
(
from
:
"1.2.0"
)
),
.
package
(
url
:
"https://github.com/pointfreeco/combine-schedulers"
,
.
upToNextMajor
(
from
:
"0.5.0"
)
),
.
package
(
url
:
"https://github.com/kishikawakatsumi/KeychainAccess"
,
.
upToNextMajor
(
from
:
"4.2.1"
)
),
.
package
(
url
:
"https://github.com/google/google-api-objectivec-client-for-rest"
,
.
upToNextMajor
(
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
:
[
.
target
(
name
:
"Keychain"
),
.
target
(
name
:
"Voxophone"
),
.
target
(
name
:
"Permissions"
),
.
target
(
name
:
"ScanFeature"
),
.
target
(
name
:
"ChatFeature"
),
.
target
(
name
:
"MenuFeature"
),
.
target
(
name
:
"PushFeature"
),
.
target
(
name
:
"SFTPFeature"
),
.
target
(
name
:
"ToastFeature"
),
.
target
(
name
:
"CrashService"
),
.
target
(
name
:
"BackupFeature"
),
.
target
(
name
:
"SearchFeature"
),
.
target
(
name
:
"LaunchFeature"
),
.
target
(
name
:
"iCloudFeature"
),
.
target
(
name
:
"DropboxFeature"
),
.
target
(
name
:
"ContactFeature"
),
.
target
(
name
:
"RestoreFeature"
),
.
target
(
name
:
"ProfileFeature"
),
.
target
(
name
:
"CrashReporting"
),
.
target
(
name
:
"ChatListFeature"
),
.
target
(
name
:
"SettingsFeature"
),
.
target
(
name
:
"RequestsFeature"
),
.
target
(
name
:
"OnboardingFeature"
),
.
target
(
name
:
"GoogleDriveFeature"
),
.
target
(
name
:
"ContactListFeature"
),
]
),
.
testTarget
(
name
:
"AppTests"
,
dependencies
:
[
.
target
(
name
:
"App"
),
]
),
.
target
(
name
:
"CrashReporting"
),
.
target
(
name
:
"NetworkMonitor"
),
.
target
(
name
:
"VersionChecking"
),
.
target
(
name
:
"DependencyInjection"
),
.
testTarget
(
name
:
"DependencyInjectionTests"
,
dependencies
:
[
.
target
(
name
:
"DependencyInjection"
),
]
),
.
target
(
name
:
"InputField"
,
dependencies
:
[
.
target
(
name
:
"Shared"
),
]
),
.
binaryTarget
(
name
:
"Bindings"
,
path
:
"XCFrameworks/Bindings.xcframework"
),
.
target
(
name
:
"Permissions"
,
dependencies
:
[
.
target
(
name
:
"Theme"
),
.
target
(
name
:
"Shared"
),
.
target
(
name
:
"DependencyInjection"
),
]
),
.
target
(
name
:
"PushFeature"
,
dependencies
:
[
.
target
(
name
:
"Models"
),
.
target
(
name
:
"Defaults"
),
.
target
(
name
:
"Integration"
),
.
target
(
name
:
"DependencyInjection"
),
]
),
.
target
(
name
:
"TestHelpers"
,
dependencies
:
[
.
target
(
name
:
"Models"
),
.
target
(
name
:
"Presentation"
),
]
),
.
target
(
name
:
"Keychain"
,
dependencies
:
[
.
product
(
name
:
"KeychainAccess"
,
package
:
"KeychainAccess"
),
]
),
.
target
(
name
:
"Voxophone"
,
dependencies
:
[
.
target
(
name
:
"Shared"
),
]
),
.
target
(
name
:
"Models"
,
dependencies
:
[
.
product
(
name
:
"DifferenceKit"
,
package
:
"DifferenceKit"
),
.
product
(
name
:
"SwiftProtobuf"
,
package
:
"swift-protobuf"
),
]
),
.
target
(
name
:
"Defaults"
,
dependencies
:
[
.
target
(
name
:
"DependencyInjection"
),
]
),
.
target
(
name
:
"ToastFeature"
,
dependencies
:
[
.
target
(
name
:
"Shared"
),
]
),
.
target
(
name
:
"CrashService"
,
dependencies
:
[
.
target
(
name
:
"CrashReporting"
),
.
product
(
name
:
"FirebaseCrashlytics"
,
package
:
"firebase-ios-sdk"
),
]
),
.
target
(
name
:
"SFTPFeature"
,
dependencies
:
[
.
target
(
name
:
"HUD"
),
.
target
(
name
:
"Models"
),
.
target
(
name
:
"Shared"
),
.
target
(
name
:
"Keychain"
),
.
target
(
name
:
"InputField"
),
.
target
(
name
:
"Presentation"
),
.
target
(
name
:
"DependencyInjection"
),
.
product
(
name
:
"Shout"
,
package
:
"Shout"
),
]
),
.
target
(
name
:
"GoogleDriveFeature"
,
dependencies
:
[
.
product
(
name
:
"GoogleSignIn"
,
package
:
"GoogleSignIn-iOS"
),
.
product
(
name
:
"GoogleAPIClientForREST_Drive"
,
package
:
"google-api-objectivec-client-for-rest"
),
],
resources
:
[
.
process
(
"Resources"
),
]
),
.
target
(
name
:
"iCloudFeature"
,
dependencies
:
[
.
product
(
name
:
"FilesProvider"
,
package
:
"FileProvider"
),
]
),
.
target
(
name
:
"DropboxFeature"
,
dependencies
:
[
.
product
(
name
:
"SwiftyDropbox"
,
package
:
"SwiftyDropbox"
),
],
resources
:
[
.
process
(
"Resources"
),
]
),
.
target
(
name
:
"Countries"
,
dependencies
:
[
.
target
(
name
:
"Theme"
),
.
target
(
name
:
"Shared"
),
.
target
(
name
:
"DependencyInjection"
),
],
resources
:
[
.
process
(
"Resources"
),
]
),
.
target
(
name
:
"Theme"
,
dependencies
:
[
.
target
(
name
:
"Defaults"
),
.
target
(
name
:
"DependencyInjection"
),
]
),
.
testTarget
(
name
:
"ThemeTests"
,
dependencies
:
[
.
target
(
name
:
"Theme"
),
.
product
(
name
:
"Quick"
,
package
:
"Quick"
),
.
product
(
name
:
"Nimble"
,
package
:
"Nimble"
),
]
),
.
target
(
name
:
"DrawerFeature"
,
dependencies
:
[
.
target
(
name
:
"Shared"
),
.
target
(
name
:
"InputField"
),
.
product
(
name
:
"ScrollViewController"
,
package
:
"ScrollViewController"
),
]
),
.
target
(
name
:
"HUD"
,
dependencies
:
[
.
target
(
name
:
"Theme"
),
.
target
(
name
:
"Shared"
),
.
product
(
name
:
"SnapKit"
,
package
:
"SnapKit"
),
]
),
.
target
(
name
:
"XXLogger"
,
dependencies
:
[
.
product
(
name
:
"SwiftyBeaver"
,
package
:
"SwiftyBeaver"
),
]
),
.
target
(
name
:
"Shared"
,
dependencies
:
[
.
product
(
name
:
"SnapKit"
,
package
:
"SnapKit"
),
.
product
(
name
:
"ChatLayout"
,
package
:
"ChatLayout"
),
.
product
(
name
:
"DifferenceKit"
,
package
:
"DifferenceKit"
),
],
exclude
:
[
"swiftgen.yml"
,
],
resources
:
[
.
process
(
"Resources"
),
]
),
.
target
(
name
:
"Integration"
,
dependencies
:
[
.
target
(
name
:
"Shared"
),
.
target
(
name
:
"Bindings"
),
.
target
(
name
:
"XXLogger"
),
.
target
(
name
:
"Keychain"
),
.
target
(
name
:
"ToastFeature"
),
.
target
(
name
:
"BackupFeature"
),
.
target
(
name
:
"CrashReporting"
),
.
target
(
name
:
"NetworkMonitor"
),
.
target
(
name
:
"DependencyInjection"
),
.
product
(
name
:
"Retry"
,
package
:
"Retry"
),
.
product
(
name
:
"XXDatabase"
,
package
:
"client-ios-db"
),
.
product
(
name
:
"XXLegacyDatabaseMigrator"
,
package
:
"client-ios-db"
),
],
resources
:
[
.
process
(
"Resources"
),
]
),
.
target
(
name
:
"Presentation"
,
dependencies
:
[
.
target
(
name
:
"Theme"
),
.
target
(
name
:
"Shared"
),
.
product
(
name
:
"SnapKit"
,
package
:
"SnapKit"
),
]
),
.
testTarget
(
name
:
"PresentationTests"
,
dependencies
:
[
.
target
(
name
:
"Presentation"
),
.
product
(
name
:
"Quick"
,
package
:
"Quick"
),
.
product
(
name
:
"Nimble"
,
package
:
"Nimble"
),
]
),
.
target
(
name
:
"ChatInputFeature"
,
dependencies
:
[
.
target
(
name
:
"Voxophone"
),
.
product
(
name
:
"ComposableArchitecture"
,
package
:
"swift-composable-architecture"
),
]
),
.
target
(
name
:
"RestoreFeature"
,
dependencies
:
[
.
target
(
name
:
"HUD"
),
.
target
(
name
:
"Shared"
),
.
target
(
name
:
"SFTPFeature"
),
.
target
(
name
:
"Integration"
),
.
target
(
name
:
"Presentation"
),
.
target
(
name
:
"iCloudFeature"
),
.
target
(
name
:
"DropboxFeature"
),
.
target
(
name
:
"GoogleDriveFeature"
),
.
target
(
name
:
"DependencyInjection"
),
]
),
.
target
(
name
:
"ContactFeature"
,
dependencies
:
[
.
target
(
name
:
"Shared"
),
.
target
(
name
:
"InputField"
),
.
target
(
name
:
"ChatFeature"
),
.
target
(
name
:
"Presentation"
),
.
product
(
name
:
"CombineSchedulers"
,
package
:
"combine-schedulers"
),
.
product
(
name
:
"ScrollViewController"
,
package
:
"ScrollViewController"
),
]
),
.
testTarget
(
name
:
"ContactFeatureTests"
,
dependencies
:
[
.
target
(
name
:
"TestHelpers"
),
.
target
(
name
:
"ContactFeature"
),
.
product
(
name
:
"Quick"
,
package
:
"Quick"
),
.
product
(
name
:
"Nimble"
,
package
:
"Nimble"
),
]
),
.
target
(
name
:
"ChatFeature"
,
dependencies
:
[
.
target
(
name
:
"HUD"
),
.
target
(
name
:
"Theme"
),
.
target
(
name
:
"Shared"
),
.
target
(
name
:
"Defaults"
),
.
target
(
name
:
"Keychain"
),
.
target
(
name
:
"Voxophone"
),
.
target
(
name
:
"Integration"
),
.
target
(
name
:
"Permissions"
),
.
target
(
name
:
"Presentation"
),
.
target
(
name
:
"DrawerFeature"
),
.
target
(
name
:
"ChatInputFeature"
),
.
target
(
name
:
"DependencyInjection"
),
.
product
(
name
:
"ChatLayout"
,
package
:
"ChatLayout"
),
.
product
(
name
:
"DifferenceKit"
,
package
:
"DifferenceKit"
),
.
product
(
name
:
"ScrollViewController"
,
package
:
"ScrollViewController"
),
]
),
.
testTarget
(
name
:
"ChatFeatureTests"
,
dependencies
:
[
.
target
(
name
:
"ChatFeature"
),
.
target
(
name
:
"TestHelpers"
),
.
product
(
name
:
"Quick"
,
package
:
"Quick"
),
.
product
(
name
:
"Nimble"
,
package
:
"Nimble"
),
]
),
.
target
(
name
:
"SearchFeature"
,
dependencies
:
[
.
target
(
name
:
"HUD"
),
.
target
(
name
:
"Shared"
),
.
target
(
name
:
"Countries"
),
.
target
(
name
:
"Integration"
),
.
target
(
name
:
"Presentation"
),
.
target
(
name
:
"ContactFeature"
),
.
target
(
name
:
"DependencyInjection"
),
]
),
.
testTarget
(
name
:
"SearchFeatureTests"
,
dependencies
:
[
.
target
(
name
:
"TestHelpers"
),
.
target
(
name
:
"SearchFeature"
),
.
product
(
name
:
"Quick"
,
package
:
"Quick"
),
.
product
(
name
:
"Nimble"
,
package
:
"Nimble"
),
]
),
.
target
(
name
:
"LaunchFeature"
,
dependencies
:
[
.
target
(
name
:
"HUD"
),
.
target
(
name
:
"Theme"
),
.
target
(
name
:
"Shared"
),
.
target
(
name
:
"Defaults"
),
.
target
(
name
:
"PushFeature"
),
.
target
(
name
:
"Integration"
),
.
target
(
name
:
"Permissions"
),
.
target
(
name
:
"DropboxFeature"
),
.
target
(
name
:
"VersionChecking"
),
.
target
(
name
:
"DependencyInjection"
),
]
),
.
target
(
name
:
"RequestsFeature"
,
dependencies
:
[
.
target
(
name
:
"Theme"
),
.
target
(
name
:
"Shared"
),
.
target
(
name
:
"Integration"
),
.
target
(
name
:
"ToastFeature"
),
.
target
(
name
:
"ContactFeature"
),
.
target
(
name
:
"DependencyInjection"
),
.
product
(
name
:
"DifferenceKit"
,
package
:
"DifferenceKit"
),
]
),
.
testTarget
(
name
:
"RequestsFeatureTests"
,
dependencies
:
[
.
target
(
name
:
"TestHelpers"
),
.
target
(
name
:
"RequestsFeature"
),
.
product
(
name
:
"Quick"
,
package
:
"Quick"
),
.
product
(
name
:
"Nimble"
,
package
:
"Nimble"
),
]
),
.
target
(
name
:
"ProfileFeature"
,
dependencies
:
[
.
target
(
name
:
"HUD"
),
.
target
(
name
:
"Theme"
),
.
target
(
name
:
"Shared"
),
.
target
(
name
:
"Keychain"
),
.
target
(
name
:
"Defaults"
),
.
target
(
name
:
"Countries"
),
.
target
(
name
:
"InputField"
),
.
target
(
name
:
"MenuFeature"
),
.
target
(
name
:
"Permissions"
),
.
target
(
name
:
"Integration"
),
.
target
(
name
:
"Presentation"
),
.
target
(
name
:
"DrawerFeature"
),
.
target
(
name
:
"DependencyInjection"
),
.
product
(
name
:
"CombineSchedulers"
,
package
:
"combine-schedulers"
),
.
product
(
name
:
"ScrollViewController"
,
package
:
"ScrollViewController"
),
]
),
.
testTarget
(
name
:
"ProfileFeatureTests"
,
dependencies
:
[
.
target
(
name
:
"TestHelpers"
),
.
target
(
name
:
"ProfileFeature"
),
.
product
(
name
:
"Quick"
,
package
:
"Quick"
),
.
product
(
name
:
"Nimble"
,
package
:
"Nimble"
),
]
),
.
target
(
name
:
"ChatListFeature"
,
dependencies
:
[
.
target
(
name
:
"Theme"
),
.
target
(
name
:
"Shared"
),
.
target
(
name
:
"Defaults"
),
.
target
(
name
:
"MenuFeature"
),
.
target
(
name
:
"ChatFeature"
),
.
target
(
name
:
"ProfileFeature"
),
.
target
(
name
:
"SettingsFeature"
),
.
target
(
name
:
"ContactListFeature"
),
.
target
(
name
:
"DependencyInjection"
),
.
product
(
name
:
"DifferenceKit"
,
package
:
"DifferenceKit"
),
]
),
.
testTarget
(
name
:
"ChatListFeatureTests"
,
dependencies
:
[
.
target
(
name
:
"TestHelpers"
),
.
target
(
name
:
"ChatListFeature"
),
.
product
(
name
:
"Quick"
,
package
:
"Quick"
),
.
product
(
name
:
"Nimble"
,
package
:
"Nimble"
),
]
),
.
target
(
name
:
"OnboardingFeature"
,
dependencies
:
[
.
target
(
name
:
"HUD"
),
.
target
(
name
:
"Shared"
),
.
target
(
name
:
"Defaults"
),
.
target
(
name
:
"Keychain"
),
.
target
(
name
:
"Countries"
),
.
target
(
name
:
"InputField"
),
.
target
(
name
:
"Permissions"
),
.
target
(
name
:
"PushFeature"
),
.
target
(
name
:
"Integration"
),
.
target
(
name
:
"Presentation"
),
.
target
(
name
:
"DrawerFeature"
),
.
target
(
name
:
"VersionChecking"
),
.
target
(
name
:
"DependencyInjection"
),
.
product
(
name
:
"CombineSchedulers"
,
package
:
"combine-schedulers"
),
.
product
(
name
:
"ScrollViewController"
,
package
:
"ScrollViewController"
),
]
),
.
testTarget
(
name
:
"OnboardingFeatureTests"
,
dependencies
:
[
.
target
(
name
:
"TestHelpers"
),
.
target
(
name
:
"OnboardingFeature"
),
.
product
(
name
:
"Quick"
,
package
:
"Quick"
),
.
product
(
name
:
"Nimble"
,
package
:
"Nimble"
),
]
),
.
target
(
name
:
"MenuFeature"
,
dependencies
:
[
.
target
(
name
:
"Theme"
),
.
target
(
name
:
"Shared"
),
.
target
(
name
:
"Defaults"
),
.
target
(
name
:
"Integration"
),
.
target
(
name
:
"Presentation"
),
.
target
(
name
:
"DependencyInjection"
),
]
),
.
target
(
name
:
"BackupFeature"
,
dependencies
:
[
.
target
(
name
:
"HUD"
),
.
target
(
name
:
"Shared"
),
.
target
(
name
:
"Models"
),
.
target
(
name
:
"InputField"
),
.
target
(
name
:
"SFTPFeature"
),
.
target
(
name
:
"Presentation"
),
.
target
(
name
:
"iCloudFeature"
),
.
target
(
name
:
"DrawerFeature"
),
.
target
(
name
:
"DropboxFeature"
),
.
target
(
name
:
"GoogleDriveFeature"
),
.
target
(
name
:
"DependencyInjection"
),
]
),
.
target
(
name
:
"ScanFeature"
,
dependencies
:
[
.
target
(
name
:
"Theme"
),
.
target
(
name
:
"Shared"
),
.
target
(
name
:
"Countries"
),
.
target
(
name
:
"Permissions"
),
.
target
(
name
:
"Integration"
),
.
target
(
name
:
"Presentation"
),
.
target
(
name
:
"ContactFeature"
),
.
target
(
name
:
"DependencyInjection"
),
.
product
(
name
:
"SnapKit"
,
package
:
"SnapKit"
),
]
),
.
testTarget
(
name
:
"ScanFeatureTests"
,
dependencies
:
[
.
target
(
name
:
"ScanFeature"
),
.
target
(
name
:
"TestHelpers"
),
.
product
(
name
:
"Quick"
,
package
:
"Quick"
),
.
product
(
name
:
"Nimble"
,
package
:
"Nimble"
),
]
),
.
target
(
name
:
"ContactListFeature"
,
dependencies
:
[
.
target
(
name
:
"Theme"
),
.
target
(
name
:
"Shared"
),
.
target
(
name
:
"Integration"
),
.
target
(
name
:
"Presentation"
),
.
target
(
name
:
"ContactFeature"
),
.
target
(
name
:
"DependencyInjection"
),
.
product
(
name
:
"DifferenceKit"
,
package
:
"DifferenceKit"
),
]
),
.
testTarget
(
name
:
"ContactListFeatureTests"
,
dependencies
:
[
.
target
(
name
:
"TestHelpers"
),
.
target
(
name
:
"ContactListFeature"
),
.
product
(
name
:
"Quick"
,
package
:
"Quick"
),
.
product
(
name
:
"Nimble"
,
package
:
"Nimble"
),
]
),
.
target
(
name
:
"SettingsFeature"
,
dependencies
:
[
.
target
(
name
:
"HUD"
),
.
target
(
name
:
"Theme"
),
.
target
(
name
:
"Shared"
),
.
target
(
name
:
"Defaults"
),
.
target
(
name
:
"Keychain"
),
.
target
(
name
:
"InputField"
),
.
target
(
name
:
"PushFeature"
),
.
target
(
name
:
"Permissions"
),
.
target
(
name
:
"MenuFeature"
),
.
target
(
name
:
"Integration"
),
.
target
(
name
:
"Presentation"
),
.
target
(
name
:
"DrawerFeature"
),
.
target
(
name
:
"DependencyInjection"
),
.
product
(
name
:
"CombineSchedulers"
,
package
:
"combine-schedulers"
),
.
product
(
name
:
"ScrollViewController"
,
package
:
"ScrollViewController"
),
]
),
.
testTarget
(
name
:
"SettingsFeatureTests"
,
dependencies
:
[
.
target
(
name
:
"TestHelpers"
),
.
target
(
name
:
"SettingsFeature"
),
.
product
(
name
:
"Quick"
,
package
:
"Quick"
),
.
product
(
name
:
"Nimble"
,
package
:
"Nimble"
),
]
),
.
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"
),
]
),
]
)
// .target(name: "CrashReporting"),
// .target(name: "NetworkMonitor"),
// .target(name: "VersionChecking"),
// .target(name: "DependencyInjection"),
// .target(name: "InputField", dependencies: ["Shared"]),
//
//
// // 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(
// name: "Countries",
// dependencies: [
// "Theme",
// "Shared",
// "DependencyInjection"
// ],
// resources: [.process("Resources")]
// ),
//
// // MARK: - Theme
//
// .target(
// name: "Theme",
// dependencies: [
// "Defaults",
// "DependencyInjection"
// ]
// ),
//
// // MARK: - DrawerFeature
//
// .target(
// name: "DrawerFeature",
// dependencies: [
// "Shared",
// "InputField",
// .product(
// name: "ScrollViewController",
// package: "ScrollViewController"
// )
// ]
// ),
//
// // MARK: - HUD
//
// .target(
// name: "HUD",
// dependencies: [
// "Theme",
// "Shared",
// .product(
// name: "SnapKit",
// package: "SnapKit"
// )
// ]
// ),
//
// // MARK: - XXLogger
//
// .target(
// name: "XXLogger",
// dependencies: [
// .product(
// name: "SwiftyBeaver",
// package: "SwiftyBeaver"
// )
// ]
// ),
//
// // MARK: - Shared
//
// .target(
// name: "Shared",
// dependencies: [
// .product(
// name: "SnapKit",
// package: "SnapKit"
// ),
// .product(
// name: "ChatLayout",
// package: "ChatLayout"
// ),
// .product(
// name: "DifferenceKit",
// package: "DifferenceKit"
// )
// ],
// exclude: ["swiftgen.yml"],
// resources: [.process("Resources")]
// ),
//
// // MARK: - Integration
//
// .target(
// name: "Integration",
// dependencies: [
// "Shared",
// "Bindings",
// "XXLogger",
// "Keychain",
// "ToastFeature",
// "BackupFeature",
// "CrashReporting",
// "NetworkMonitor",
// "DependencyInjection",
// .product(
// name: "Retry",
// package: "Retry"
// ),
// .product(
// name: "XXDatabase",
// package: "client-ios-db"
// ),
// .product(
// name: "XXLegacyDatabaseMigrator",
// package: "client-ios-db"
// )
// ],
// resources: [.process("Resources")]
// ),
//
// // MARK: - Presentation
//
// .target(
// name: "Presentation",
// dependencies: [
// "Theme",
// "Shared",
// .product(
// name: "SnapKit",
// package: "SnapKit"
// )
// ]
// ),
//
// // MARK: - ChatInputFeature
//
// .target(
// name: "ChatInputFeature",
// dependencies: [
// "Voxophone",
// .product(
// name: "ComposableArchitecture",
// package: "swift-composable-architecture"
// )
// ]
// ),
//
// // MARK: - RestoreFeature
//
// .target(
// name: "RestoreFeature",
// dependencies: [
// "HUD",
// "Shared",
// "SFTPFeature",
// "Integration",
// "Presentation",
// "iCloudFeature",
// "DropboxFeature",
// "GoogleDriveFeature",
// "DependencyInjection"
// ]
// ),
//
// // MARK: - ContactFeature
//
// .target(
// name: "ContactFeature",
// dependencies: [
// "Shared",
// "InputField",
// "ChatFeature",
// "Presentation",
// .product(
// name: "CombineSchedulers",
// package: "combine-schedulers"
// ),
// .product(
// name: "ScrollViewController",
// package: "ScrollViewController"
// )
// ]
// ),
//
// // MARK: - ChatFeature
//
// .target(
// name: "ChatFeature",
// dependencies: [
// "HUD",
// "Theme",
// "Shared",
// "Defaults",
// "Keychain",
// "Voxophone",
// "Integration",
// "Permissions",
// "Presentation",
// "DrawerFeature",
// "ChatInputFeature",
// "DependencyInjection",
// .product(
// name: "ChatLayout",
// package: "ChatLayout"
// ),
// .product(
// name: "DifferenceKit",
// package: "DifferenceKit"
// ),
// .product(
// name: "ScrollViewController",
// package: "ScrollViewController"
// )
// ]
// ),
//
// // MARK: - SearchFeature
//
// .target(
// name: "SearchFeature",
// dependencies: [
// "HUD",
// "Shared",
// "Countries",
// "Integration",
// "Presentation",
// "ContactFeature",
// "DependencyInjection"
// ]
// ),
//
// // MARK: - LaunchFeature
//
// .target(
// name: "LaunchFeature",
// dependencies: [
// "HUD",
// "Theme",
// "Shared",
// "Defaults",
// "PushFeature",
// "Integration",
// "Permissions",
// "DropboxFeature",
// "VersionChecking",
// "DependencyInjection"
// ]
// ),
//
// // MARK: - RequestsFeature
//
// .target(
// name: "RequestsFeature",
// dependencies: [
// "Theme",
// "Shared",
// "Integration",
// "ToastFeature",
// "ContactFeature",
// "DependencyInjection",
// .product(
// name: "DifferenceKit",
// package: "DifferenceKit"
// )
// ]
// ),
//
// // MARK: - ProfileFeature
//
// .target(
// name: "ProfileFeature",
// dependencies: [
// "HUD",
// "Theme",
// "Shared",
// "Keychain",
// "Defaults",
// "Countries",
// "InputField",
// "MenuFeature",
// "Permissions",
// "Integration",
// "Presentation",
// "DrawerFeature",
// "DependencyInjection",
// .product(
// name: "CombineSchedulers",
// package: "combine-schedulers"
// ),
// .product(
// name: "ScrollViewController",
// package: "ScrollViewController"
// )
// ]
// ),
//
// // MARK: - ChatListFeature
//
// .target(
// name: "ChatListFeature",
// dependencies: [
// "Theme",
// "Shared",
// "Defaults",
// "MenuFeature",
// "ChatFeature",
// "ProfileFeature",
// "SettingsFeature",
// "ContactListFeature",
// "DependencyInjection",
// .product(
// name: "DifferenceKit",
// package: "DifferenceKit"
// )
// ]
// ),
//
// // MARK: - OnboardingFeature
//
// .target(
// name: "OnboardingFeature",
// dependencies: [
// "HUD",
// "Shared",
// "Defaults",
// "Keychain",
// "Countries",
// "InputField",
// "Permissions",
// "PushFeature",
// "Integration",
// "Presentation",
// "DrawerFeature",
// "VersionChecking",
// "DependencyInjection",
// .product(
// name: "CombineSchedulers",
// package: "combine-schedulers"
// ),
// .product(
// name: "ScrollViewController",
// package: "ScrollViewController"
// )
// ]
// ),
//
// // MARK: - MenuFeature
//
// .target(
// name: "MenuFeature",
// dependencies: [
// "Theme",
// "Shared",
// "Defaults",
// "Integration",
// "Presentation",
// "DependencyInjection"
// ]
// ),
//
// // MARK: - BackupFeature
//
// .target(
// name: "BackupFeature",
// dependencies: [
// "HUD",
// "Shared",
// "Models",
// "InputField",
// "SFTPFeature",
// "Presentation",
// "iCloudFeature",
// "DrawerFeature",
// "DropboxFeature",
// "GoogleDriveFeature",
// "DependencyInjection"
// ]
// ),
//
// // MARK: - ScanFeature
//
// .target(
// name: "ScanFeature",
// dependencies: [
// "Theme",
// "Shared",
// "Countries",
// "Permissions",
// "Integration",
// "Presentation",
// "ContactFeature",
// "DependencyInjection",
// .product(
// name: "SnapKit",
// package: "SnapKit"
// )
// ]
// ),
//
// // MARK: - ContactListFeature
//
// .target(
// name: "ContactListFeature",
// dependencies: [
// "Theme",
// "Shared",
// "Integration",
// "Presentation",
// "ContactFeature",
// "DependencyInjection",
// .product(
// name: "DifferenceKit",
// package: "DifferenceKit"
// )
// ]
// ),
//
// // MARK: - SettingsFeature
//
// .target(
// name: "SettingsFeature",
// dependencies: [
// "HUD",
// "Theme",
// "Shared",
// "Defaults",
// "Keychain",
// "InputField",
// "PushFeature",
// "Permissions",
// "MenuFeature",
// "Integration",
// "Presentation",
// "DrawerFeature",
// "DependencyInjection",
// .product(
// name: "CombineSchedulers",
// package: "combine-schedulers"
// ),
// .product(
// name: "ScrollViewController",
// package: "ScrollViewController"
// )
// ]
// ),
//
// // MARK: - DependencyInjectionTests
//
// .testTarget(
// name: "DependencyInjectionTests",
// dependencies: ["DependencyInjection"]
// ),
//
// // MARK: - AppTests
//
// .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