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
Viewing commit
ebcbb5f2
Prev
Next
Show latest version
1 file
+
884
−
903
Inline
Compare changes
Side-by-side
Inline
Show whitespace changes
Show one file at a time
ebcbb5f2
Revert "Organizing Package.swift"
· ebcbb5f2
Dariusz Rybicki
authored
2 years ago
This reverts commit
5881219d
.
Package.swift
+
884
−
903
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
.
drive
.
targetDependency
,
Feature
.
toast
.
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
.
permissions
.
targetDependency
,
Feature
.
contactList
.
targetDependency
,
Feature
.
crashReporting
.
targetDependency
]
)
static
let
permissions
=
Feature
.
library
(
name
:
"Permissions"
,
dependencies
:
[
Feature
.
theme
.
targetDependency
,
Feature
.
shared
.
targetDependency
,
Feature
.
dependencyInjection
.
targetDependency
]
)
static
let
crashReporting
=
Feature
.
library
(
name
:
"CrashReporting"
)
static
let
networkMonitor
=
Feature
.
library
(
name
:
"NetworkMonitor"
)
static
let
versionChecking
=
Feature
.
library
(
name
:
"VersionChecking"
)
static
let
dependencyInjection
=
Feature
.
library
(
name
:
"DependencyInjection"
)
static
let
inputField
=
Feature
.
library
(
name
:
"InputField"
,
dependencies
:
[
Feature
.
shared
.
targetDependency
]
)
static
let
push
=
Feature
.
library
(
name
:
"PushFeature"
,
dependencies
:
[
Feature
.
models
.
targetDependency
,
Feature
.
defaults
.
targetDependency
,
Feature
.
integration
.
targetDependency
,
Feature
.
dependencyInjection
.
targetDependency
]
)
static
let
testHelpers
=
Feature
.
library
(
name
:
"TestHelpers"
,
dependencies
:
[
Feature
.
models
.
targetDependency
,
Feature
.
presentation
.
targetDependency
]
)
static
let
keychain
=
Feature
.
library
(
name
:
"Keychain"
,
dependencies
:
[
Dependency
.
keychainAccess
.
targetDependency
]
)
static
let
voxophone
=
Feature
.
library
(
name
:
"Voxophone"
,
dependencies
:
[
Feature
.
shared
.
targetDependency
]
)
static
let
models
=
Feature
.
library
(
name
:
"Models"
,
dependencies
:
[
Dependency
.
differenceKit
.
targetDependency
,
Dependency
.
swiftProtobuf
.
targetDependency
]
)
static
let
defaults
=
Feature
.
library
(
name
:
"Defaults"
,
dependencies
:
[
Feature
.
dependencyInjection
.
targetDependency
]
)
static
let
toast
=
Feature
.
library
(
name
:
"ToastFeature"
,
dependencies
:
[
Feature
.
shared
.
targetDependency
]
)
static
let
crashService
=
Feature
.
library
(
name
:
"CrashService"
,
dependencies
:
[
Dependency
.
firebase
.
targetDependency
,
Feature
.
crashReporting
.
targetDependency
]
)
static
let
sftp
=
Feature
.
library
(
name
:
"SFTPFeature"
,
dependencies
:
[
Feature
.
hud
.
targetDependency
,
Feature
.
models
.
targetDependency
,
Feature
.
shared
.
targetDependency
,
Dependency
.
shout
.
targetDependency
,
Feature
.
keychain
.
targetDependency
,
Feature
.
inputField
.
targetDependency
,
Feature
.
presentation
.
targetDependency
,
Feature
.
dependencyInjection
.
targetDependency
]
)
static
let
drive
=
library
(
name
:
"GoogleDriveFeature"
,
dependencies
:
[
Dependency
.
googleDrive
.
targetDependency
,
Dependency
.
googleSignIn
.
targetDependency
]
// resources: [.process("Resources")]
)
static
let
icloud
=
library
(
name
:
"iCloudFeature"
,
dependencies
:
[
Dependency
.
fileProvider
.
targetDependency
]
)
static
let
dropbox
=
library
(
name
:
"DropboxFeature"
,
dependencies
:
[
Dependency
.
swiftyDropbox
.
targetDependency
]
// resources: [.process("Resources")]
)
static
let
countries
=
library
(
name
:
"Countries"
,
dependencies
:
[
Feature
.
theme
.
targetDependency
,
Feature
.
shared
.
targetDependency
,
Feature
.
dependencyInjection
.
targetDependency
,
]
// resources: [.process("Resources")]
)
static
let
theme
=
library
(
name
:
"Theme"
,
dependencies
:
[
Feature
.
defaults
.
targetDependency
,
Feature
.
dependencyInjection
.
targetDependency
]
)
static
let
drawer
=
library
(
name
:
"DrawerFeature"
,
dependencies
:
[
Feature
.
shared
.
targetDependency
,
Feature
.
inputField
.
targetDependency
,
Dependency
.
scrollViewController
.
targetDependency
]
)
static
let
hud
=
library
(
name
:
"HUD"
,
dependencies
:
[
Feature
.
theme
.
targetDependency
,
Feature
.
shared
.
targetDependency
,
Dependency
.
snapkit
.
targetDependency
]
)
static
let
logger
=
library
(
name
:
"XXLogger"
,
dependencies
:
[
Dependency
.
swiftyBeaver
.
targetDependency
]
)
static
let
shared
=
library
(
name
:
"Shared"
,
dependencies
:
[
Dependency
.
snapkit
.
targetDependency
,
Dependency
.
chatLayout
.
targetDependency
,
Dependency
.
differenceKit
.
targetDependency
,
]
// resources: [.process("Resources")] + exclude: ["swiftgen.yml"],
)
static
let
integration
=
library
(
name
:
"Integration"
,
dependencies
:
[
Feature
.
shared
.
targetDependency
,
Feature
.
bindings
.
targetDependency
,
Feature
.
logger
.
targetDependency
,
Feature
.
keychain
.
targetDependency
,
Feature
.
toast
.
targetDependency
,
Feature
.
backup
.
targetDependency
,
Feature
.
crashReporting
.
targetDependency
,
Feature
.
networkMonitor
.
targetDependency
,
Feature
.
dependencyInjection
.
targetDependency
,
Dependency
.
retry
.
targetDependency
,
Dependency
.
clientDatabase
.
targetDependency
// resources: [.process("Resources")]
// Dependency.clientDatabase.targetDependency <--- XXLegacyDatabaseMigrator
]
)
static
let
presentation
=
library
(
name
:
"Presentation"
,
dependencies
:
[
Feature
.
theme
.
targetDependency
,
Feature
.
shared
.
targetDependency
,
Dependency
.
snapkit
.
targetDependency
]
)
static
let
chatInput
=
library
(
name
:
"ChatInputFeature"
,
dependencies
:
[
Feature
.
voxophone
.
targetDependency
,
Dependency
.
composableArchitecture
.
targetDependency
]
)
static
let
restore
=
library
(
name
:
"RestoreFeature"
,
dependencies
:
[
Feature
.
hud
.
targetDependency
,
Feature
.
shared
.
targetDependency
,
Feature
.
sftp
.
targetDependency
,
Feature
.
integration
.
targetDependency
,
Feature
.
presentation
.
targetDependency
,
Feature
.
icloud
.
targetDependency
,
Feature
.
dropbox
.
targetDependency
,
Feature
.
drive
.
targetDependency
,
Feature
.
dependencyInjection
.
targetDependency
]
)
static
let
contact
=
library
(
name
:
"ContactFeature"
,
dependencies
:
[
Feature
.
shared
.
targetDependency
,
Feature
.
inputField
.
targetDependency
,
Feature
.
chat
.
targetDependency
,
Feature
.
presentation
.
targetDependency
,
Dependency
.
combineSchedulers
.
targetDependency
,
Dependency
.
scrollViewController
.
targetDependency
]
)
static
let
chat
=
library
(
name
:
"ChatFeature"
,
dependencies
:
[
Feature
.
hud
.
targetDependency
,
Feature
.
theme
.
targetDependency
,
Feature
.
shared
.
targetDependency
,
Feature
.
defaults
.
targetDependency
,
Feature
.
keychain
.
targetDependency
,
Feature
.
voxophone
.
targetDependency
,
Feature
.
integration
.
targetDependency
,
Feature
.
permissions
.
targetDependency
,
Feature
.
presentation
.
targetDependency
,
Feature
.
drawer
.
targetDependency
,
Feature
.
chatInput
.
targetDependency
,
Feature
.
dependencyInjection
.
targetDependency
,
Dependency
.
chatLayout
.
targetDependency
,
Dependency
.
differenceKit
.
targetDependency
,
Dependency
.
scrollViewController
.
targetDependency
]
)
static
let
search
=
library
(
name
:
"SearchFeature"
,
dependencies
:
[
Feature
.
hud
.
targetDependency
,
Feature
.
shared
.
targetDependency
,
Feature
.
countries
.
targetDependency
,
Feature
.
integration
.
targetDependency
,
Feature
.
presentation
.
targetDependency
,
Feature
.
contact
.
targetDependency
,
Feature
.
dependencyInjection
.
targetDependency
]
)
static
let
launch
=
library
(
name
:
"LaunchFeature"
,
dependencies
:
[
Feature
.
hud
.
targetDependency
,
Feature
.
theme
.
targetDependency
,
Feature
.
shared
.
targetDependency
,
Feature
.
defaults
.
targetDependency
,
Feature
.
push
.
targetDependency
,
Feature
.
integration
.
targetDependency
,
Feature
.
permissions
.
targetDependency
,
Feature
.
dropbox
.
targetDependency
,
Feature
.
versionChecking
.
targetDependency
,
Feature
.
dependencyInjection
.
targetDependency
]
)
static
let
requests
=
library
(
name
:
"RequestsFeature"
,
dependencies
:
[
Feature
.
theme
.
targetDependency
,
Feature
.
shared
.
targetDependency
,
Feature
.
integration
.
targetDependency
,
Feature
.
toast
.
targetDependency
,
Feature
.
contact
.
targetDependency
,
Feature
.
dependencyInjection
.
targetDependency
,
Dependency
.
differenceKit
.
targetDependency
]
)
static
let
profile
=
library
(
name
:
"ProfileFeature"
,
dependencies
:
[
Feature
.
hud
.
targetDependency
,
Feature
.
theme
.
targetDependency
,
Feature
.
shared
.
targetDependency
,
Feature
.
keychain
.
targetDependency
,
Feature
.
defaults
.
targetDependency
,
Feature
.
countries
.
targetDependency
,
Feature
.
inputField
.
targetDependency
,
Feature
.
menu
.
targetDependency
,
Feature
.
permissions
.
targetDependency
,
Feature
.
integration
.
targetDependency
,
Feature
.
presentation
.
targetDependency
,
Feature
.
drawer
.
targetDependency
,
Feature
.
dependencyInjection
.
targetDependency
,
Dependency
.
combineSchedulers
.
targetDependency
,
Dependency
.
scrollViewController
.
targetDependency
]
)
static
let
chatList
=
library
(
name
:
"ChatListFeature"
,
dependencies
:
[
Feature
.
theme
.
targetDependency
,
Feature
.
shared
.
targetDependency
,
Feature
.
defaults
.
targetDependency
,
Feature
.
menu
.
targetDependency
,
Feature
.
chat
.
targetDependency
,
Feature
.
profile
.
targetDependency
,
Feature
.
settings
.
targetDependency
,
Feature
.
contactList
.
targetDependency
,
Feature
.
dependencyInjection
.
targetDependency
,
Dependency
.
differenceKit
.
targetDependency
]
)
static
let
onboarding
=
library
(
name
:
"OnboardingFeature"
,
dependencies
:
[
Feature
.
hud
.
targetDependency
,
Feature
.
shared
.
targetDependency
,
Feature
.
defaults
.
targetDependency
,
Feature
.
keychain
.
targetDependency
,
Feature
.
countries
.
targetDependency
,
Feature
.
inputField
.
targetDependency
,
Feature
.
permissions
.
targetDependency
,
Feature
.
push
.
targetDependency
,
Feature
.
integration
.
targetDependency
,
Feature
.
presentation
.
targetDependency
,
Feature
.
drawer
.
targetDependency
,
Feature
.
versionChecking
.
targetDependency
,
Feature
.
dependencyInjection
.
targetDependency
,
Dependency
.
combineSchedulers
.
targetDependency
,
Dependency
.
scrollViewController
.
targetDependency
]
)
static
let
menu
=
library
(
name
:
"MenuFeature"
,
dependencies
:
[
Feature
.
theme
.
targetDependency
,
Feature
.
shared
.
targetDependency
,
Feature
.
defaults
.
targetDependency
,
Feature
.
integration
.
targetDependency
,
Feature
.
presentation
.
targetDependency
,
Feature
.
dependencyInjection
.
targetDependency
]
)
static
let
backup
=
library
(
name
:
"BackupFeature"
,
dependencies
:
[
Feature
.
hud
.
targetDependency
,
Feature
.
shared
.
targetDependency
,
Feature
.
models
.
targetDependency
,
Feature
.
inputField
.
targetDependency
,
Feature
.
sftp
.
targetDependency
,
Feature
.
presentation
.
targetDependency
,
Feature
.
icloud
.
targetDependency
,
Feature
.
drawer
.
targetDependency
,
Feature
.
dropbox
.
targetDependency
,
Feature
.
drive
.
targetDependency
,
Feature
.
dependencyInjection
.
targetDependency
]
)
static
let
scan
=
library
(
name
:
"ScanFeature"
,
dependencies
:
[
Feature
.
theme
.
targetDependency
,
Feature
.
shared
.
targetDependency
,
Feature
.
countries
.
targetDependency
,
Feature
.
permissions
.
targetDependency
,
Feature
.
integration
.
targetDependency
,
Feature
.
presentation
.
targetDependency
,
Feature
.
contact
.
targetDependency
,
Feature
.
dependencyInjection
.
targetDependency
,
Dependency
.
snapkit
.
targetDependency
]
)
static
let
contactList
=
library
(
name
:
"ContactListFeature"
,
dependencies
:
[
Feature
.
theme
.
targetDependency
,
Feature
.
shared
.
targetDependency
,
Feature
.
integration
.
targetDependency
,
Feature
.
presentation
.
targetDependency
,
Feature
.
contact
.
targetDependency
,
Feature
.
dependencyInjection
.
targetDependency
,
Dependency
.
differenceKit
.
targetDependency
]
)
static
let
settings
=
library
(
name
:
"SettingsFeature"
,
dependencies
:
[
Feature
.
hud
.
targetDependency
,
Feature
.
theme
.
targetDependency
,
Feature
.
shared
.
targetDependency
,
Feature
.
defaults
.
targetDependency
,
Feature
.
keychain
.
targetDependency
,
Feature
.
inputField
.
targetDependency
,
Feature
.
push
.
targetDependency
,
Feature
.
permissions
.
targetDependency
,
Feature
.
menu
.
targetDependency
,
Feature
.
integration
.
targetDependency
,
Feature
.
presentation
.
targetDependency
,
Feature
.
drawer
.
targetDependency
,
Feature
.
dependencyInjection
.
targetDependency
,
Dependency
.
combineSchedulers
.
targetDependency
,
Dependency
.
scrollViewController
.
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
:
"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
// // 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"),
// ]
// ),
// ]
//)
.
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