diff --git a/.github/workflows/ios-build-check.yml b/.github/workflows/ios-build-check.yml index 8f67dbd..e69677a 100644 --- a/.github/workflows/ios-build-check.yml +++ b/.github/workflows/ios-build-check.yml @@ -20,15 +20,14 @@ jobs: xcode-version: latest-stable - name: Checkout uses: actions/checkout@v3 - - name: Xcodegen - uses: xavierLowmiller/xcodegen-action@1.1.2 + - name: tuist Fetch + uses: tuist/tuist-action@0.13.0 with: - spec: project.yml - quiet: true - version: 'latest' - - name: Generate Project - run: | - xcodegen generate + command: 'fetch' + - name: tuist Generate + uses: tuist/tuist-action@0.13.0 + with: + command: 'generate' - name: Build run: | xcodebuild -scheme SampleAppSwiftUI clean build -sdk iphoneos -configuration Development CODE_SIGNING_ALLOWED=No -destination 'generic/platform=iOS Simulator' CONFIGURATION_BUILD_DIR=$PWD/build diff --git a/.gitignore b/.gitignore index 903e19a..acff761 100644 --- a/.gitignore +++ b/.gitignore @@ -89,3 +89,17 @@ iOSInjectionProject/ *.xcodeproj SampleAppSwiftUI.xcodeproj SampleAppSwiftUI.xcworkspace + + +# Tuist +# Since we now generate .xcodeproj and .xcworkspace files with Tuist, git shouldn't track following files. +# **/Derived folder created on each project generation so git shouldn't track it + +**/*.xcodeproj +**/*.xcworkspace +**/Derived/ +Tuist/Dependencies/ +Tuist/Dependencies/SwiftPackageManager +Tuist/Dependencies/graph.json +Tuist/.swiftpm +Tuist/Package.resolved diff --git a/.package.resolved b/.package.resolved new file mode 100644 index 0000000..943b504 --- /dev/null +++ b/.package.resolved @@ -0,0 +1,32 @@ +{ + "pins" : [ + { + "identity" : "cocoalumberjack", + "kind" : "remoteSourceControl", + "location" : "https://github.com/CocoaLumberjack/CocoaLumberjack", + "state" : { + "revision" : "363ed23d19a931809ea834a7d722da830353806a", + "version" : "3.8.2" + } + }, + { + "identity" : "pulse", + "kind" : "remoteSourceControl", + "location" : "https://github.com/kean/Pulse", + "state" : { + "revision" : "e8bc65bd43d1f32aef533e723f2d324830431120", + "version" : "3.7.3" + } + }, + { + "identity" : "swift-log", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-log.git", + "state" : { + "revision" : "532d8b529501fb73a2455b179e0bbb6d49b652ed", + "version" : "1.5.3" + } + } + ], + "version" : 2 +} diff --git a/.tuist-version b/.tuist-version new file mode 100644 index 0000000..f69676b --- /dev/null +++ b/.tuist-version @@ -0,0 +1 @@ +3.35.2 \ No newline at end of file diff --git a/Projects/SampleAppSwiftUI/Project.swift b/Projects/SampleAppSwiftUI/Project.swift new file mode 100644 index 0000000..6c50820 --- /dev/null +++ b/Projects/SampleAppSwiftUI/Project.swift @@ -0,0 +1,26 @@ +import ProjectDescription +import ProjectDescriptionHelpers + +let project = Project.createAppProject( + name: "SampleAppSwiftUI", + projectPackages: [ + Package.remote(url: "https://github.com/CocoaLumberjack/CocoaLumberjack", requirement: .upToNextMajor(from: "3.8.0")), + Package.remote(url: "https://github.com/kean/Pulse", requirement: .upToNextMajor(from: "3.0.0")), + Package.remote(url: "https://github.com/apple/swift-log.git", requirement: .upToNextMajor(from: "1.5.2")) + ], + projectSettings: .projectSettings, + destinations: [.iPhone, .iPad, .macWithiPadDesign], + deploymentTargets: .iOS("16.0"), + appTargetScripts: [ + .pre(path: .relativeToRoot("scripts/installation/swiftlint.sh"), name: "SwiftLint", basedOnDependencyAnalysis: false) + ], + appTargetSettings: .targetSettings, + dependencies: [ + .package(product: "CocoaLumberjack"), + .package(product: "CocoaLumberjackSwift"), + .package(product: "CocoaLumberjackSwiftLogBackend"), + .package(product: "PulseUI") + ], + hasUnitTestTarget: true, + hasUITestTarget: true +) diff --git a/SampleAppSwiftUI/Application/AppDelegate.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Application/AppDelegate.swift similarity index 100% rename from SampleAppSwiftUI/Application/AppDelegate.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Application/AppDelegate.swift diff --git a/SampleAppSwiftUI/Application/SampleAppSwiftUIApp.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Application/SampleAppSwiftUIApp.swift similarity index 100% rename from SampleAppSwiftUI/Application/SampleAppSwiftUIApp.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Application/SampleAppSwiftUIApp.swift diff --git a/SampleAppSwiftUI/Application/Services/LoggingService.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Application/Services/LoggingService.swift similarity index 100% rename from SampleAppSwiftUI/Application/Services/LoggingService.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Application/Services/LoggingService.swift diff --git a/SampleAppSwiftUI/Application/Services/SwifterServerService.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Application/Services/SwifterServerService.swift similarity index 100% rename from SampleAppSwiftUI/Application/Services/SwifterServerService.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Application/Services/SwifterServerService.swift diff --git a/SampleAppSwiftUI/Configs/AppStore.xcconfig b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Configs/AppStore.xcconfig similarity index 87% rename from SampleAppSwiftUI/Configs/AppStore.xcconfig rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Configs/AppStore.xcconfig index e322645..4131515 100644 --- a/SampleAppSwiftUI/Configs/AppStore.xcconfig +++ b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Configs/AppStore.xcconfig @@ -9,6 +9,8 @@ // Configuration settings file format documentation can be found at: // https://help.apple.com/xcode/#/dev745c5c974 +PRODUCT_BUNDLE_IDENTIFIER = com.adesso.SampleAppSwiftUI + base_url = https:/$()/min-api.cryptocompare.com/data/ webSocket_base_url = wss:/$()/streamer.cryptocompare.com/v2 diff --git a/SampleAppSwiftUI/Configs/Configuration.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Configs/Configuration.swift similarity index 100% rename from SampleAppSwiftUI/Configs/Configuration.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Configs/Configuration.swift diff --git a/SampleAppSwiftUI/Configs/ConfigurationProtocol.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Configs/ConfigurationProtocol.swift similarity index 100% rename from SampleAppSwiftUI/Configs/ConfigurationProtocol.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Configs/ConfigurationProtocol.swift diff --git a/SampleAppSwiftUI/Configs/Development.xcconfig b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Configs/Development.xcconfig similarity index 100% rename from SampleAppSwiftUI/Configs/Development.xcconfig rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Configs/Development.xcconfig diff --git a/SampleAppSwiftUI/Configs/Production.xcconfig b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Configs/Production.xcconfig similarity index 100% rename from SampleAppSwiftUI/Configs/Production.xcconfig rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Configs/Production.xcconfig diff --git a/SampleAppSwiftUI/Resources/Constants/Dimensions.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Constants/Dimensions.swift similarity index 100% rename from SampleAppSwiftUI/Resources/Constants/Dimensions.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Constants/Dimensions.swift diff --git a/SampleAppSwiftUI/Resources/Constants/Fonts.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Constants/Fonts.swift similarity index 100% rename from SampleAppSwiftUI/Resources/Constants/Fonts.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Constants/Fonts.swift diff --git a/SampleAppSwiftUI/Resources/Constants/Images.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Constants/Images.swift similarity index 100% rename from SampleAppSwiftUI/Resources/Constants/Images.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Constants/Images.swift diff --git a/SampleAppSwiftUI/Resources/Constants/Numbers.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Constants/Numbers.swift similarity index 100% rename from SampleAppSwiftUI/Resources/Constants/Numbers.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Constants/Numbers.swift diff --git a/SampleAppSwiftUI/Resources/Constants/Paddings.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Constants/Paddings.swift similarity index 100% rename from SampleAppSwiftUI/Resources/Constants/Paddings.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Constants/Paddings.swift diff --git a/SampleAppSwiftUI/Resources/Constants/Range.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Constants/Range.swift similarity index 100% rename from SampleAppSwiftUI/Resources/Constants/Range.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Constants/Range.swift diff --git a/SampleAppSwiftUI/Resources/Constants/Spacings.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Constants/Spacings.swift similarity index 100% rename from SampleAppSwiftUI/Resources/Constants/Spacings.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Constants/Spacings.swift diff --git a/SampleAppSwiftUI/Resources/Constants/URLs.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Constants/URLs.swift similarity index 100% rename from SampleAppSwiftUI/Resources/Constants/URLs.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Constants/URLs.swift diff --git a/SampleAppSwiftUI/Resources/Info.plist b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Info.plist similarity index 100% rename from SampleAppSwiftUI/Resources/Info.plist rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Info.plist diff --git a/SampleAppSwiftUI/Managers/LoggerManager.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Managers/LoggerManager.swift similarity index 100% rename from SampleAppSwiftUI/Managers/LoggerManager.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Managers/LoggerManager.swift diff --git a/SampleAppSwiftUI/Managers/SwifterManager.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Managers/SwifterManager.swift similarity index 100% rename from SampleAppSwiftUI/Managers/SwifterManager.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Managers/SwifterManager.swift diff --git a/SampleAppSwiftUI/Network/.gitkeep b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/.gitkeep similarity index 100% rename from SampleAppSwiftUI/Network/.gitkeep rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/.gitkeep diff --git a/SampleAppSwiftUI/Network/Base/BaseServiceProtocol.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/Base/BaseServiceProtocol.swift similarity index 100% rename from SampleAppSwiftUI/Network/Base/BaseServiceProtocol.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/Base/BaseServiceProtocol.swift diff --git a/SampleAppSwiftUI/Network/Base/NetworkLoader.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/Base/NetworkLoader.swift similarity index 100% rename from SampleAppSwiftUI/Network/Base/NetworkLoader.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/Base/NetworkLoader.swift diff --git a/SampleAppSwiftUI/Network/Base/NetworkLoaderProtocol.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/Base/NetworkLoaderProtocol.swift similarity index 100% rename from SampleAppSwiftUI/Network/Base/NetworkLoaderProtocol.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/Base/NetworkLoaderProtocol.swift diff --git a/SampleAppSwiftUI/Network/Base/NetworkLoaderProvider.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/Base/NetworkLoaderProvider.swift similarity index 100% rename from SampleAppSwiftUI/Network/Base/NetworkLoaderProvider.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/Base/NetworkLoaderProvider.swift diff --git a/SampleAppSwiftUI/Network/Endpoints/BaseEndpoint.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/Endpoints/BaseEndpoint.swift similarity index 100% rename from SampleAppSwiftUI/Network/Endpoints/BaseEndpoint.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/Endpoints/BaseEndpoint.swift diff --git a/SampleAppSwiftUI/Network/Entities/AdessoError.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/Entities/AdessoError.swift similarity index 100% rename from SampleAppSwiftUI/Network/Entities/AdessoError.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/Entities/AdessoError.swift diff --git a/SampleAppSwiftUI/Network/Entities/ErrorResponse.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/Entities/ErrorResponse.swift similarity index 100% rename from SampleAppSwiftUI/Network/Entities/ErrorResponse.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/Entities/ErrorResponse.swift diff --git a/SampleAppSwiftUI/Network/Entities/HTTPStatus.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/Entities/HTTPStatus.swift similarity index 100% rename from SampleAppSwiftUI/Network/Entities/HTTPStatus.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/Entities/HTTPStatus.swift diff --git a/SampleAppSwiftUI/Network/Entities/RequestObject.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/Entities/RequestObject.swift similarity index 100% rename from SampleAppSwiftUI/Network/Entities/RequestObject.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/Entities/RequestObject.swift diff --git a/SampleAppSwiftUI/Network/Extensions/HTTPURLResponseExtensions.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/Extensions/HTTPURLResponseExtensions.swift similarity index 100% rename from SampleAppSwiftUI/Network/Extensions/HTTPURLResponseExtensions.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/Extensions/HTTPURLResponseExtensions.swift diff --git a/SampleAppSwiftUI/Network/RemoteDataSources/AllCoinRemoteDataSource.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/RemoteDataSources/AllCoinRemoteDataSource.swift similarity index 100% rename from SampleAppSwiftUI/Network/RemoteDataSources/AllCoinRemoteDataSource.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/RemoteDataSources/AllCoinRemoteDataSource.swift diff --git a/SampleAppSwiftUI/Network/RemoteDataSources/CoinNewsDataSource.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/RemoteDataSources/CoinNewsDataSource.swift similarity index 100% rename from SampleAppSwiftUI/Network/RemoteDataSources/CoinNewsDataSource.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/RemoteDataSources/CoinNewsDataSource.swift diff --git a/SampleAppSwiftUI/Network/RemoteDataSources/CoinPriceHistoryRemoteDataSource.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/RemoteDataSources/CoinPriceHistoryRemoteDataSource.swift similarity index 100% rename from SampleAppSwiftUI/Network/RemoteDataSources/CoinPriceHistoryRemoteDataSource.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/RemoteDataSources/CoinPriceHistoryRemoteDataSource.swift diff --git a/SampleAppSwiftUI/Network/RemoteDataSources/ExampleRemoteDataSource.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/RemoteDataSources/ExampleRemoteDataSource.swift similarity index 100% rename from SampleAppSwiftUI/Network/RemoteDataSources/ExampleRemoteDataSource.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/RemoteDataSources/ExampleRemoteDataSource.swift diff --git a/SampleAppSwiftUI/Network/ResponseModels/AllCoinResponse.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/ResponseModels/AllCoinResponse.swift similarity index 100% rename from SampleAppSwiftUI/Network/ResponseModels/AllCoinResponse.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/ResponseModels/AllCoinResponse.swift diff --git a/SampleAppSwiftUI/Network/ResponseModels/CoinNewsResponse.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/ResponseModels/CoinNewsResponse.swift similarity index 100% rename from SampleAppSwiftUI/Network/ResponseModels/CoinNewsResponse.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/ResponseModels/CoinNewsResponse.swift diff --git a/SampleAppSwiftUI/Network/ResponseModels/CoinPriceHistoryResponse.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/ResponseModels/CoinPriceHistoryResponse.swift similarity index 100% rename from SampleAppSwiftUI/Network/ResponseModels/CoinPriceHistoryResponse.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/ResponseModels/CoinPriceHistoryResponse.swift diff --git a/SampleAppSwiftUI/Network/ResponseModels/ExampleResponse.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/ResponseModels/ExampleResponse.swift similarity index 100% rename from SampleAppSwiftUI/Network/ResponseModels/ExampleResponse.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/ResponseModels/ExampleResponse.swift diff --git a/SampleAppSwiftUI/Network/URLBuilder/EndpointBuilder.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/URLBuilder/EndpointBuilder.swift similarity index 100% rename from SampleAppSwiftUI/Network/URLBuilder/EndpointBuilder.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/URLBuilder/EndpointBuilder.swift diff --git a/SampleAppSwiftUI/Network/URLBuilder/TargetEndpointProtocol.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/URLBuilder/TargetEndpointProtocol.swift similarity index 100% rename from SampleAppSwiftUI/Network/URLBuilder/TargetEndpointProtocol.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/URLBuilder/TargetEndpointProtocol.swift diff --git a/SampleAppSwiftUI/Network/UseCases/AllCoinUseCase.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/UseCases/AllCoinUseCase.swift similarity index 100% rename from SampleAppSwiftUI/Network/UseCases/AllCoinUseCase.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/UseCases/AllCoinUseCase.swift diff --git a/SampleAppSwiftUI/Network/UseCases/CoinNewsUseCase.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/UseCases/CoinNewsUseCase.swift similarity index 100% rename from SampleAppSwiftUI/Network/UseCases/CoinNewsUseCase.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/UseCases/CoinNewsUseCase.swift diff --git a/SampleAppSwiftUI/Network/UseCases/CoinPriceHistoryUseCase.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/UseCases/CoinPriceHistoryUseCase.swift similarity index 100% rename from SampleAppSwiftUI/Network/UseCases/CoinPriceHistoryUseCase.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/UseCases/CoinPriceHistoryUseCase.swift diff --git a/SampleAppSwiftUI/Network/UseCases/ExampleUseCase.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/UseCases/ExampleUseCase.swift similarity index 100% rename from SampleAppSwiftUI/Network/UseCases/ExampleUseCase.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/UseCases/ExampleUseCase.swift diff --git a/SampleAppSwiftUI/Network/WebServiceRepositories/AllCoinRepository.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebServiceRepositories/AllCoinRepository.swift similarity index 100% rename from SampleAppSwiftUI/Network/WebServiceRepositories/AllCoinRepository.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebServiceRepositories/AllCoinRepository.swift diff --git a/SampleAppSwiftUI/Network/WebServiceRepositories/CoinNewsRepository.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebServiceRepositories/CoinNewsRepository.swift similarity index 100% rename from SampleAppSwiftUI/Network/WebServiceRepositories/CoinNewsRepository.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebServiceRepositories/CoinNewsRepository.swift diff --git a/SampleAppSwiftUI/Network/WebServiceRepositories/CoinPriceHistoryRepository.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebServiceRepositories/CoinPriceHistoryRepository.swift similarity index 100% rename from SampleAppSwiftUI/Network/WebServiceRepositories/CoinPriceHistoryRepository.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebServiceRepositories/CoinPriceHistoryRepository.swift diff --git a/SampleAppSwiftUI/Network/WebServiceRepositories/ExampleRepository.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebServiceRepositories/ExampleRepository.swift similarity index 100% rename from SampleAppSwiftUI/Network/WebServiceRepositories/ExampleRepository.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebServiceRepositories/ExampleRepository.swift diff --git a/SampleAppSwiftUI/Network/WebServices/AllCoinService/AllCoinService.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebServices/AllCoinService/AllCoinService.swift similarity index 100% rename from SampleAppSwiftUI/Network/WebServices/AllCoinService/AllCoinService.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebServices/AllCoinService/AllCoinService.swift diff --git a/SampleAppSwiftUI/Network/WebServices/AllCoinService/AllCoinServiceEndpoint.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebServices/AllCoinService/AllCoinServiceEndpoint.swift similarity index 100% rename from SampleAppSwiftUI/Network/WebServices/AllCoinService/AllCoinServiceEndpoint.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebServices/AllCoinService/AllCoinServiceEndpoint.swift diff --git a/SampleAppSwiftUI/Network/WebServices/CoinNewsService/CoinNewsService.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebServices/CoinNewsService/CoinNewsService.swift similarity index 100% rename from SampleAppSwiftUI/Network/WebServices/CoinNewsService/CoinNewsService.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebServices/CoinNewsService/CoinNewsService.swift diff --git a/SampleAppSwiftUI/Network/WebServices/CoinNewsService/CoinNewsServiceEndpoint.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebServices/CoinNewsService/CoinNewsServiceEndpoint.swift similarity index 100% rename from SampleAppSwiftUI/Network/WebServices/CoinNewsService/CoinNewsServiceEndpoint.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebServices/CoinNewsService/CoinNewsServiceEndpoint.swift diff --git a/SampleAppSwiftUI/Network/WebServices/CoinPriceHistoryService/CoinPriceHistoryService.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebServices/CoinPriceHistoryService/CoinPriceHistoryService.swift similarity index 100% rename from SampleAppSwiftUI/Network/WebServices/CoinPriceHistoryService/CoinPriceHistoryService.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebServices/CoinPriceHistoryService/CoinPriceHistoryService.swift diff --git a/SampleAppSwiftUI/Network/WebServices/CoinPriceHistoryService/CoinPriceHistoryServiceEndpoint.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebServices/CoinPriceHistoryService/CoinPriceHistoryServiceEndpoint.swift similarity index 100% rename from SampleAppSwiftUI/Network/WebServices/CoinPriceHistoryService/CoinPriceHistoryServiceEndpoint.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebServices/CoinPriceHistoryService/CoinPriceHistoryServiceEndpoint.swift diff --git a/SampleAppSwiftUI/Network/WebServices/ExampleService/ExampleService.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebServices/ExampleService/ExampleService.swift similarity index 100% rename from SampleAppSwiftUI/Network/WebServices/ExampleService/ExampleService.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebServices/ExampleService/ExampleService.swift diff --git a/SampleAppSwiftUI/Network/WebServices/ExampleService/ExampleServiceEndpoint.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebServices/ExampleService/ExampleServiceEndpoint.swift similarity index 100% rename from SampleAppSwiftUI/Network/WebServices/ExampleService/ExampleServiceEndpoint.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebServices/ExampleService/ExampleServiceEndpoint.swift diff --git a/SampleAppSwiftUI/Network/WebServices/WebServiceProvider.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebServices/WebServiceProvider.swift similarity index 100% rename from SampleAppSwiftUI/Network/WebServices/WebServiceProvider.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebServices/WebServiceProvider.swift diff --git a/SampleAppSwiftUI/Network/WebSocket/Base/WebSocketStream.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebSocket/Base/WebSocketStream.swift similarity index 100% rename from SampleAppSwiftUI/Network/WebSocket/Base/WebSocketStream.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebSocket/Base/WebSocketStream.swift diff --git a/SampleAppSwiftUI/Network/WebSocket/RequestModels/FavoritesCoinRequest.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebSocket/RequestModels/FavoritesCoinRequest.swift similarity index 100% rename from SampleAppSwiftUI/Network/WebSocket/RequestModels/FavoritesCoinRequest.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebSocket/RequestModels/FavoritesCoinRequest.swift diff --git a/SampleAppSwiftUI/Network/WebSocket/RequestModels/SubscriptionRequest.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebSocket/RequestModels/SubscriptionRequest.swift similarity index 100% rename from SampleAppSwiftUI/Network/WebSocket/RequestModels/SubscriptionRequest.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebSocket/RequestModels/SubscriptionRequest.swift diff --git a/SampleAppSwiftUI/Network/WebSocket/RequestModels/SubscriptionRequestAction.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebSocket/RequestModels/SubscriptionRequestAction.swift similarity index 100% rename from SampleAppSwiftUI/Network/WebSocket/RequestModels/SubscriptionRequestAction.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebSocket/RequestModels/SubscriptionRequestAction.swift diff --git a/SampleAppSwiftUI/Network/WebSocket/ResponseModels/FavoritesCoinResponse.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebSocket/ResponseModels/FavoritesCoinResponse.swift similarity index 100% rename from SampleAppSwiftUI/Network/WebSocket/ResponseModels/FavoritesCoinResponse.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebSocket/ResponseModels/FavoritesCoinResponse.swift diff --git a/SampleAppSwiftUI/Network/WebSocket/WebSocketEndpoint.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebSocket/WebSocketEndpoint.swift similarity index 100% rename from SampleAppSwiftUI/Network/WebSocket/WebSocketEndpoint.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebSocket/WebSocketEndpoint.swift diff --git a/SampleAppSwiftUI/Network/WebSocket/WebSocketExcangeRatesMessage.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebSocket/WebSocketExcangeRatesMessage.swift similarity index 100% rename from SampleAppSwiftUI/Network/WebSocket/WebSocketExcangeRatesMessage.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebSocket/WebSocketExcangeRatesMessage.swift diff --git a/SampleAppSwiftUI/Network/WebSocket/WebSocketMessageProtocol.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebSocket/WebSocketMessageProtocol.swift similarity index 100% rename from SampleAppSwiftUI/Network/WebSocket/WebSocketMessageProtocol.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebSocket/WebSocketMessageProtocol.swift diff --git a/SampleAppSwiftUI/Network/WebSocket/WebSocketProvider.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebSocket/WebSocketProvider.swift similarity index 100% rename from SampleAppSwiftUI/Network/WebSocket/WebSocketProvider.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebSocket/WebSocketProvider.swift diff --git a/SampleAppSwiftUI/Network/WebSocket/WebSocketService.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebSocket/WebSocketService.swift similarity index 100% rename from SampleAppSwiftUI/Network/WebSocket/WebSocketService.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebSocket/WebSocketService.swift diff --git a/SampleAppSwiftUI/Network/WebSocket/WebSocketSubscription.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebSocket/WebSocketSubscription.swift similarity index 100% rename from SampleAppSwiftUI/Network/WebSocket/WebSocketSubscription.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Network/WebSocket/WebSocketSubscription.swift diff --git a/SampleAppSwiftUI/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from SampleAppSwiftUI/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/SampleAppSwiftUI/Resources/Assets.xcassets/Contents.json b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Assets.xcassets/Contents.json similarity index 100% rename from SampleAppSwiftUI/Resources/Assets.xcassets/Contents.json rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Assets.xcassets/Contents.json diff --git a/SampleAppSwiftUI/Resources/Colors.xcassets/Color.colorset/Contents.json b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Colors.xcassets/Color.colorset/Contents.json similarity index 100% rename from SampleAppSwiftUI/Resources/Colors.xcassets/Color.colorset/Contents.json rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Colors.xcassets/Color.colorset/Contents.json diff --git a/SampleAppSwiftUI/Resources/Colors.xcassets/Contents.json b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Colors.xcassets/Contents.json similarity index 100% rename from SampleAppSwiftUI/Resources/Colors.xcassets/Contents.json rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Colors.xcassets/Contents.json diff --git a/SampleAppSwiftUI/Resources/Colors.xcassets/LightestGray.colorset/Contents.json b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Colors.xcassets/LightestGray.colorset/Contents.json similarity index 100% rename from SampleAppSwiftUI/Resources/Colors.xcassets/LightestGray.colorset/Contents.json rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Colors.xcassets/LightestGray.colorset/Contents.json diff --git a/SampleAppSwiftUI/Resources/Colors.xcassets/Search Bar/Contents.json b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Colors.xcassets/Search Bar/Contents.json similarity index 100% rename from SampleAppSwiftUI/Resources/Colors.xcassets/Search Bar/Contents.json rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Colors.xcassets/Search Bar/Contents.json diff --git a/SampleAppSwiftUI/Resources/Colors.xcassets/Search Bar/SearchBarBackground.colorset/Contents.json b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Colors.xcassets/Search Bar/SearchBarBackground.colorset/Contents.json similarity index 100% rename from SampleAppSwiftUI/Resources/Colors.xcassets/Search Bar/SearchBarBackground.colorset/Contents.json rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Colors.xcassets/Search Bar/SearchBarBackground.colorset/Contents.json diff --git a/SampleAppSwiftUI/Resources/Colors.xcassets/Search Bar/SearchIcon.colorset/Contents.json b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Colors.xcassets/Search Bar/SearchIcon.colorset/Contents.json similarity index 100% rename from SampleAppSwiftUI/Resources/Colors.xcassets/Search Bar/SearchIcon.colorset/Contents.json rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Colors.xcassets/Search Bar/SearchIcon.colorset/Contents.json diff --git a/SampleAppSwiftUI/Resources/Colors.xcassets/Settings Screen/Contents.json b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Colors.xcassets/Settings Screen/Contents.json similarity index 100% rename from SampleAppSwiftUI/Resources/Colors.xcassets/Settings Screen/Contents.json rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Colors.xcassets/Settings Screen/Contents.json diff --git a/SampleAppSwiftUI/Resources/Colors.xcassets/Settings Screen/settingsButtonColor.colorset/Contents.json b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Colors.xcassets/Settings Screen/settingsButtonColor.colorset/Contents.json similarity index 100% rename from SampleAppSwiftUI/Resources/Colors.xcassets/Settings Screen/settingsButtonColor.colorset/Contents.json rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Colors.xcassets/Settings Screen/settingsButtonColor.colorset/Contents.json diff --git a/SampleAppSwiftUI/Resources/Colors.xcassets/Settings Screen/settingsCurrencyExpColor.colorset/Contents.json b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Colors.xcassets/Settings Screen/settingsCurrencyExpColor.colorset/Contents.json similarity index 100% rename from SampleAppSwiftUI/Resources/Colors.xcassets/Settings Screen/settingsCurrencyExpColor.colorset/Contents.json rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Colors.xcassets/Settings Screen/settingsCurrencyExpColor.colorset/Contents.json diff --git a/SampleAppSwiftUI/Resources/Colors.xcassets/Settings Screen/settingsLineColor.colorset/Contents.json b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Colors.xcassets/Settings Screen/settingsLineColor.colorset/Contents.json similarity index 100% rename from SampleAppSwiftUI/Resources/Colors.xcassets/Settings Screen/settingsLineColor.colorset/Contents.json rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Colors.xcassets/Settings Screen/settingsLineColor.colorset/Contents.json diff --git a/SampleAppSwiftUI/Resources/Colors.xcassets/Settings Screen/settingsLineTitleColor.colorset/Contents.json b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Colors.xcassets/Settings Screen/settingsLineTitleColor.colorset/Contents.json similarity index 100% rename from SampleAppSwiftUI/Resources/Colors.xcassets/Settings Screen/settingsLineTitleColor.colorset/Contents.json rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Colors.xcassets/Settings Screen/settingsLineTitleColor.colorset/Contents.json diff --git a/SampleAppSwiftUI/Resources/Colors.xcassets/Settings Screen/settingsParitySetColor.colorset/Contents.json b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Colors.xcassets/Settings Screen/settingsParitySetColor.colorset/Contents.json similarity index 100% rename from SampleAppSwiftUI/Resources/Colors.xcassets/Settings Screen/settingsParitySetColor.colorset/Contents.json rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Colors.xcassets/Settings Screen/settingsParitySetColor.colorset/Contents.json diff --git a/SampleAppSwiftUI/Resources/Colors.xcassets/Settings Screen/settingsViewTitleColor.colorset/Contents.json b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Colors.xcassets/Settings Screen/settingsViewTitleColor.colorset/Contents.json similarity index 100% rename from SampleAppSwiftUI/Resources/Colors.xcassets/Settings Screen/settingsViewTitleColor.colorset/Contents.json rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Colors.xcassets/Settings Screen/settingsViewTitleColor.colorset/Contents.json diff --git a/SampleAppSwiftUI/Resources/Icons.xcassets/Contents.json b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Icons.xcassets/Contents.json similarity index 100% rename from SampleAppSwiftUI/Resources/Icons.xcassets/Contents.json rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Icons.xcassets/Contents.json diff --git a/SampleAppSwiftUI/Resources/Icons.xcassets/Image.imageset/Contents.json b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Icons.xcassets/Image.imageset/Contents.json similarity index 100% rename from SampleAppSwiftUI/Resources/Icons.xcassets/Image.imageset/Contents.json rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Icons.xcassets/Image.imageset/Contents.json diff --git a/SampleAppSwiftUI/Resources/Images.xcassets/Contents.json b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Images.xcassets/Contents.json similarity index 100% rename from SampleAppSwiftUI/Resources/Images.xcassets/Contents.json rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Images.xcassets/Contents.json diff --git a/SampleAppSwiftUI/Resources/Images.xcassets/binance.imageset/Contents.json b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Images.xcassets/binance.imageset/Contents.json similarity index 100% rename from SampleAppSwiftUI/Resources/Images.xcassets/binance.imageset/Contents.json rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Images.xcassets/binance.imageset/Contents.json diff --git a/SampleAppSwiftUI/Resources/Images.xcassets/binance.imageset/binance.png b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Images.xcassets/binance.imageset/binance.png similarity index 100% rename from SampleAppSwiftUI/Resources/Images.xcassets/binance.imageset/binance.png rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Images.xcassets/binance.imageset/binance.png diff --git a/SampleAppSwiftUI/Resources/Images.xcassets/btc.imageset/Contents.json b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Images.xcassets/btc.imageset/Contents.json similarity index 100% rename from SampleAppSwiftUI/Resources/Images.xcassets/btc.imageset/Contents.json rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Images.xcassets/btc.imageset/Contents.json diff --git a/SampleAppSwiftUI/Resources/Images.xcassets/btc.imageset/btc.png b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Images.xcassets/btc.imageset/btc.png similarity index 100% rename from SampleAppSwiftUI/Resources/Images.xcassets/btc.imageset/btc.png rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Images.xcassets/btc.imageset/btc.png diff --git a/SampleAppSwiftUI/Resources/Images.xcassets/default-coin.imageset/Contents.json b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Images.xcassets/default-coin.imageset/Contents.json similarity index 100% rename from SampleAppSwiftUI/Resources/Images.xcassets/default-coin.imageset/Contents.json rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Images.xcassets/default-coin.imageset/Contents.json diff --git a/SampleAppSwiftUI/Resources/Images.xcassets/default-coin.imageset/default-coin.svg b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Images.xcassets/default-coin.imageset/default-coin.svg similarity index 100% rename from SampleAppSwiftUI/Resources/Images.xcassets/default-coin.imageset/default-coin.svg rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Images.xcassets/default-coin.imageset/default-coin.svg diff --git a/SampleAppSwiftUI/Resources/Images.xcassets/world-news.imageset/Contents.json b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Images.xcassets/world-news.imageset/Contents.json similarity index 100% rename from SampleAppSwiftUI/Resources/Images.xcassets/world-news.imageset/Contents.json rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Images.xcassets/world-news.imageset/Contents.json diff --git a/SampleAppSwiftUI/Resources/Images.xcassets/world-news.imageset/world-news.png b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Images.xcassets/world-news.imageset/world-news.png similarity index 100% rename from SampleAppSwiftUI/Resources/Images.xcassets/world-news.imageset/world-news.png rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Images.xcassets/world-news.imageset/world-news.png diff --git a/SampleAppSwiftUI/Resources/Localizable.xcstrings b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Localizable.xcstrings similarity index 100% rename from SampleAppSwiftUI/Resources/Localizable.xcstrings rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Localizable.xcstrings diff --git a/SampleAppSwiftUI/Resources/Mocks/Sample-Subscription.geojson b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Mocks/Sample-Subscription.geojson similarity index 100% rename from SampleAppSwiftUI/Resources/Mocks/Sample-Subscription.geojson rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Mocks/Sample-Subscription.geojson diff --git a/SampleAppSwiftUI/Resources/Mocks/coinList.json b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Mocks/coinList.json similarity index 100% rename from SampleAppSwiftUI/Resources/Mocks/coinList.json rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Mocks/coinList.json diff --git a/SampleAppSwiftUI/Resources/Mocks/sample-data.json b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Mocks/sample-data.json similarity index 100% rename from SampleAppSwiftUI/Resources/Mocks/sample-data.json rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Mocks/sample-data.json diff --git a/SampleAppSwiftUI/Resources/Mocks/testData.json b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Mocks/testData.json similarity index 100% rename from SampleAppSwiftUI/Resources/Mocks/testData.json rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Resources/Mocks/testData.json diff --git a/SampleAppSwiftUI/Scenes/Favorites/FavoritesView.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Favorites/FavoritesView.swift similarity index 100% rename from SampleAppSwiftUI/Scenes/Favorites/FavoritesView.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Favorites/FavoritesView.swift diff --git a/SampleAppSwiftUI/Scenes/Favorites/FavoritesViewModel.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Favorites/FavoritesViewModel.swift similarity index 100% rename from SampleAppSwiftUI/Scenes/Favorites/FavoritesViewModel.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Favorites/FavoritesViewModel.swift diff --git a/SampleAppSwiftUI/Scenes/Home/Coin/CoinListView.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Home/Coin/CoinListView.swift similarity index 100% rename from SampleAppSwiftUI/Scenes/Home/Coin/CoinListView.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Home/Coin/CoinListView.swift diff --git a/SampleAppSwiftUI/Scenes/Home/Coin/CoinNews/CoinNewsListView.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Home/Coin/CoinNews/CoinNewsListView.swift similarity index 100% rename from SampleAppSwiftUI/Scenes/Home/Coin/CoinNews/CoinNewsListView.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Home/Coin/CoinNews/CoinNewsListView.swift diff --git a/SampleAppSwiftUI/Scenes/Home/Coin/CoinView.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Home/Coin/CoinView.swift similarity index 100% rename from SampleAppSwiftUI/Scenes/Home/Coin/CoinView.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Home/Coin/CoinView.swift diff --git a/SampleAppSwiftUI/Scenes/Home/Coin/Detail/ChangePercentageView.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Home/Coin/Detail/ChangePercentageView.swift similarity index 100% rename from SampleAppSwiftUI/Scenes/Home/Coin/Detail/ChangePercentageView.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Home/Coin/Detail/ChangePercentageView.swift diff --git a/SampleAppSwiftUI/Scenes/Home/Coin/Detail/CoinChartHistoryRange.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Home/Coin/Detail/CoinChartHistoryRange.swift similarity index 100% rename from SampleAppSwiftUI/Scenes/Home/Coin/Detail/CoinChartHistoryRange.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Home/Coin/Detail/CoinChartHistoryRange.swift diff --git a/SampleAppSwiftUI/Scenes/Home/Coin/Detail/CoinChartHistoryRangeButtons.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Home/Coin/Detail/CoinChartHistoryRangeButtons.swift similarity index 100% rename from SampleAppSwiftUI/Scenes/Home/Coin/Detail/CoinChartHistoryRangeButtons.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Home/Coin/Detail/CoinChartHistoryRangeButtons.swift diff --git a/SampleAppSwiftUI/Scenes/Home/Coin/Detail/CoinDetailView.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Home/Coin/Detail/CoinDetailView.swift similarity index 100% rename from SampleAppSwiftUI/Scenes/Home/Coin/Detail/CoinDetailView.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Home/Coin/Detail/CoinDetailView.swift diff --git a/SampleAppSwiftUI/Scenes/Home/Coin/Detail/CoinDetailViewModel.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Home/Coin/Detail/CoinDetailViewModel.swift similarity index 100% rename from SampleAppSwiftUI/Scenes/Home/Coin/Detail/CoinDetailViewModel.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Home/Coin/Detail/CoinDetailViewModel.swift diff --git a/SampleAppSwiftUI/Scenes/Home/Coin/Detail/CoinPriceHistoryChartView.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Home/Coin/Detail/CoinPriceHistoryChartView.swift similarity index 100% rename from SampleAppSwiftUI/Scenes/Home/Coin/Detail/CoinPriceHistoryChartView.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Home/Coin/Detail/CoinPriceHistoryChartView.swift diff --git a/SampleAppSwiftUI/Scenes/Home/Coin/Detail/CoinPriceHistoryChartViewModel.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Home/Coin/Detail/CoinPriceHistoryChartViewModel.swift similarity index 100% rename from SampleAppSwiftUI/Scenes/Home/Coin/Detail/CoinPriceHistoryChartViewModel.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Home/Coin/Detail/CoinPriceHistoryChartViewModel.swift diff --git a/SampleAppSwiftUI/Scenes/Home/Coin/Detail/CoinPriceInfoChartDataModel.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Home/Coin/Detail/CoinPriceInfoChartDataModel.swift similarity index 100% rename from SampleAppSwiftUI/Scenes/Home/Coin/Detail/CoinPriceInfoChartDataModel.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Home/Coin/Detail/CoinPriceInfoChartDataModel.swift diff --git a/SampleAppSwiftUI/Scenes/Home/FilterView.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Home/FilterView.swift similarity index 100% rename from SampleAppSwiftUI/Scenes/Home/FilterView.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Home/FilterView.swift diff --git a/SampleAppSwiftUI/Scenes/Home/HomeView.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Home/HomeView.swift similarity index 100% rename from SampleAppSwiftUI/Scenes/Home/HomeView.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Home/HomeView.swift diff --git a/SampleAppSwiftUI/Scenes/Home/HomeViewModel.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Home/HomeViewModel.swift similarity index 100% rename from SampleAppSwiftUI/Scenes/Home/HomeViewModel.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Home/HomeViewModel.swift diff --git a/SampleAppSwiftUI/Scenes/Home/SearchBarView.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Home/SearchBarView.swift similarity index 100% rename from SampleAppSwiftUI/Scenes/Home/SearchBarView.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Home/SearchBarView.swift diff --git a/SampleAppSwiftUI/Scenes/Home/SortOptions.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Home/SortOptions.swift similarity index 100% rename from SampleAppSwiftUI/Scenes/Home/SortOptions.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Home/SortOptions.swift diff --git a/SampleAppSwiftUI/Scenes/Main/MainView.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Main/MainView.swift similarity index 100% rename from SampleAppSwiftUI/Scenes/Main/MainView.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Main/MainView.swift diff --git a/SampleAppSwiftUI/Scenes/Router.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Router.swift similarity index 100% rename from SampleAppSwiftUI/Scenes/Router.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Router.swift diff --git a/SampleAppSwiftUI/Scenes/Screen.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Screen.swift similarity index 100% rename from SampleAppSwiftUI/Scenes/Screen.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Screen.swift diff --git a/SampleAppSwiftUI/Scenes/Settings/Parity.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Settings/Parity.swift similarity index 100% rename from SampleAppSwiftUI/Scenes/Settings/Parity.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Settings/Parity.swift diff --git a/SampleAppSwiftUI/Scenes/Settings/SettingsView.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Settings/SettingsView.swift similarity index 100% rename from SampleAppSwiftUI/Scenes/Settings/SettingsView.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/Settings/SettingsView.swift diff --git a/SampleAppSwiftUI/Scenes/ViewModelProtocol.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/ViewModelProtocol.swift similarity index 100% rename from SampleAppSwiftUI/Scenes/ViewModelProtocol.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/ViewModelProtocol.swift diff --git a/SampleAppSwiftUI/Scenes/WebView/WebView.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/WebView/WebView.swift similarity index 100% rename from SampleAppSwiftUI/Scenes/WebView/WebView.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Scenes/WebView/WebView.swift diff --git a/SampleAppSwiftUI/Utility/Extensions/ArrayExtensions.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/Extensions/ArrayExtensions.swift similarity index 100% rename from SampleAppSwiftUI/Utility/Extensions/ArrayExtensions.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/Extensions/ArrayExtensions.swift diff --git a/SampleAppSwiftUI/Utility/Extensions/CodableExtensions.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/Extensions/CodableExtensions.swift similarity index 100% rename from SampleAppSwiftUI/Utility/Extensions/CodableExtensions.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/Extensions/CodableExtensions.swift diff --git a/SampleAppSwiftUI/Utility/Extensions/ColorExtensions.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/Extensions/ColorExtensions.swift similarity index 100% rename from SampleAppSwiftUI/Utility/Extensions/ColorExtensions.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/Extensions/ColorExtensions.swift diff --git a/SampleAppSwiftUI/Utility/Extensions/EncodableExtensions.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/Extensions/EncodableExtensions.swift similarity index 100% rename from SampleAppSwiftUI/Utility/Extensions/EncodableExtensions.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/Extensions/EncodableExtensions.swift diff --git a/SampleAppSwiftUI/Utility/Extensions/RawUsdExtensions.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/Extensions/RawUsdExtensions.swift similarity index 100% rename from SampleAppSwiftUI/Utility/Extensions/RawUsdExtensions.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/Extensions/RawUsdExtensions.swift diff --git a/SampleAppSwiftUI/Utility/Extensions/StringExtensions.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/Extensions/StringExtensions.swift similarity index 100% rename from SampleAppSwiftUI/Utility/Extensions/StringExtensions.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/Extensions/StringExtensions.swift diff --git a/SampleAppSwiftUI/Utility/Extensions/TextExtensions.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/Extensions/TextExtensions.swift similarity index 100% rename from SampleAppSwiftUI/Utility/Extensions/TextExtensions.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/Extensions/TextExtensions.swift diff --git a/SampleAppSwiftUI/Utility/Extensions/UIApplicationExtension.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/Extensions/UIApplicationExtension.swift similarity index 100% rename from SampleAppSwiftUI/Utility/Extensions/UIApplicationExtension.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/Extensions/UIApplicationExtension.swift diff --git a/SampleAppSwiftUI/Utility/Extensions/UICollectionViewCellExtensions.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/Extensions/UICollectionViewCellExtensions.swift similarity index 100% rename from SampleAppSwiftUI/Utility/Extensions/UICollectionViewCellExtensions.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/Extensions/UICollectionViewCellExtensions.swift diff --git a/SampleAppSwiftUI/Utility/Extensions/UICollectionViewExtensions.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/Extensions/UICollectionViewExtensions.swift similarity index 100% rename from SampleAppSwiftUI/Utility/Extensions/UICollectionViewExtensions.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/Extensions/UICollectionViewExtensions.swift diff --git a/SampleAppSwiftUI/Utility/Extensions/UIDeviceExtension.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/Extensions/UIDeviceExtension.swift similarity index 94% rename from SampleAppSwiftUI/Utility/Extensions/UIDeviceExtension.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/Extensions/UIDeviceExtension.swift index e1280a3..5f622e1 100644 --- a/SampleAppSwiftUI/Utility/Extensions/UIDeviceExtension.swift +++ b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/Extensions/UIDeviceExtension.swift @@ -23,7 +23,7 @@ extension UIDevice { return identifier + String(UnicodeScalar(UInt8(value))) } - // swiftlint:disable:next function_body_length + // swiftlint:disable function_body_length cyclomatic_complexity line_length switch_case_alignment func mapToDevice(identifier: String) -> String { switch identifier { case "iPhone6,1", "iPhone6,2": @@ -98,6 +98,7 @@ extension UIDevice { return identifier } } + // swiftlint:enable function_body_length cyclomatic_complexity line_length switch_case_alignment return mapToDevice(identifier: identifier) }() diff --git a/SampleAppSwiftUI/Utility/Extensions/UINavigationControllerExtensions.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/Extensions/UINavigationControllerExtensions.swift similarity index 100% rename from SampleAppSwiftUI/Utility/Extensions/UINavigationControllerExtensions.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/Extensions/UINavigationControllerExtensions.swift diff --git a/SampleAppSwiftUI/Utility/Extensions/UITableViewCellExtensions.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/Extensions/UITableViewCellExtensions.swift similarity index 100% rename from SampleAppSwiftUI/Utility/Extensions/UITableViewCellExtensions.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/Extensions/UITableViewCellExtensions.swift diff --git a/SampleAppSwiftUI/Utility/Extensions/UITableViewExtensions.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/Extensions/UITableViewExtensions.swift similarity index 100% rename from SampleAppSwiftUI/Utility/Extensions/UITableViewExtensions.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/Extensions/UITableViewExtensions.swift diff --git a/SampleAppSwiftUI/Utility/Extensions/UIViewControllerExtensions.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/Extensions/UIViewControllerExtensions.swift similarity index 100% rename from SampleAppSwiftUI/Utility/Extensions/UIViewControllerExtensions.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/Extensions/UIViewControllerExtensions.swift diff --git a/SampleAppSwiftUI/Utility/Extensions/URLExtensions.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/Extensions/URLExtensions.swift similarity index 100% rename from SampleAppSwiftUI/Utility/Extensions/URLExtensions.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/Extensions/URLExtensions.swift diff --git a/SampleAppSwiftUI/Utility/JsonHelper/JsonHelper.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/JsonHelper/JsonHelper.swift similarity index 100% rename from SampleAppSwiftUI/Utility/JsonHelper/JsonHelper.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/JsonHelper/JsonHelper.swift diff --git a/SampleAppSwiftUI/Utility/JsonHelper/MockPath.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/JsonHelper/MockPath.swift similarity index 100% rename from SampleAppSwiftUI/Utility/JsonHelper/MockPath.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/JsonHelper/MockPath.swift diff --git a/SampleAppSwiftUI/Utility/Logger.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/Logger.swift similarity index 100% rename from SampleAppSwiftUI/Utility/Logger.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/Logger.swift diff --git a/SampleAppSwiftUI/Utility/Managers/StorageManager.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/Managers/StorageManager.swift similarity index 100% rename from SampleAppSwiftUI/Utility/Managers/StorageManager.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/Managers/StorageManager.swift diff --git a/SampleAppSwiftUI/Utility/ViewModifiers/ImageFrameModifier.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/ViewModifiers/ImageFrameModifier.swift similarity index 100% rename from SampleAppSwiftUI/Utility/ViewModifiers/ImageFrameModifier.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/ViewModifiers/ImageFrameModifier.swift diff --git a/SampleAppSwiftUI/Utility/ViewModifiers/LightShadowModifier.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/ViewModifiers/LightShadowModifier.swift similarity index 100% rename from SampleAppSwiftUI/Utility/ViewModifiers/LightShadowModifier.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/ViewModifiers/LightShadowModifier.swift diff --git a/SampleAppSwiftUI/Utility/ViewModifiers/OnFirstAppearModifier.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/ViewModifiers/OnFirstAppearModifier.swift similarity index 100% rename from SampleAppSwiftUI/Utility/ViewModifiers/OnFirstAppearModifier.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/ViewModifiers/OnFirstAppearModifier.swift diff --git a/SampleAppSwiftUI/Utility/ViewModifiers/SettingViewModifiers/SettingButtonModifier.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/ViewModifiers/SettingViewModifiers/SettingButtonModifier.swift similarity index 100% rename from SampleAppSwiftUI/Utility/ViewModifiers/SettingViewModifiers/SettingButtonModifier.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/ViewModifiers/SettingViewModifiers/SettingButtonModifier.swift diff --git a/SampleAppSwiftUI/Utility/ViewModifiers/SettingViewModifiers/SettingLineModifier.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/ViewModifiers/SettingViewModifiers/SettingLineModifier.swift similarity index 100% rename from SampleAppSwiftUI/Utility/ViewModifiers/SettingViewModifiers/SettingLineModifier.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/ViewModifiers/SettingViewModifiers/SettingLineModifier.swift diff --git a/SampleAppSwiftUI/Utility/ViewModifiers/SettingViewModifiers/SettingTextModifier.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/ViewModifiers/SettingViewModifiers/SettingTextModifier.swift similarity index 100% rename from SampleAppSwiftUI/Utility/ViewModifiers/SettingViewModifiers/SettingTextModifier.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUI/Utility/ViewModifiers/SettingViewModifiers/SettingTextModifier.swift diff --git a/SampleAppSwiftUITests/Helpers/TestExtensions.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUITests/Helpers/TestExtensions.swift similarity index 100% rename from SampleAppSwiftUITests/Helpers/TestExtensions.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUITests/Helpers/TestExtensions.swift diff --git a/SampleAppSwiftUITests/HelpersTests/JsonHelperTests.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUITests/HelpersTests/JsonHelperTests.swift similarity index 100% rename from SampleAppSwiftUITests/HelpersTests/JsonHelperTests.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUITests/HelpersTests/JsonHelperTests.swift diff --git a/SampleAppSwiftUITests/HelpersTests/TestObjects/TestUser.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUITests/HelpersTests/TestObjects/TestUser.swift similarity index 100% rename from SampleAppSwiftUITests/HelpersTests/TestObjects/TestUser.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUITests/HelpersTests/TestObjects/TestUser.swift diff --git a/SampleAppSwiftUITests/HelpersTests/TestPath/TestPath.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUITests/HelpersTests/TestPath/TestPath.swift similarity index 100% rename from SampleAppSwiftUITests/HelpersTests/TestPath/TestPath.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUITests/HelpersTests/TestPath/TestPath.swift diff --git a/SampleAppSwiftUITests/Info.plist b/Projects/SampleAppSwiftUI/SampleAppSwiftUITests/Info.plist similarity index 100% rename from SampleAppSwiftUITests/Info.plist rename to Projects/SampleAppSwiftUI/SampleAppSwiftUITests/Info.plist diff --git a/SampleAppSwiftUITests/NetworkLayerTests/NetworkLoaderTests.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUITests/NetworkLayerTests/NetworkLoaderTests.swift similarity index 94% rename from SampleAppSwiftUITests/NetworkLayerTests/NetworkLoaderTests.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUITests/NetworkLayerTests/NetworkLoaderTests.swift index 92e81c1..22a8e94 100644 --- a/SampleAppSwiftUITests/NetworkLayerTests/NetworkLoaderTests.swift +++ b/Projects/SampleAppSwiftUI/SampleAppSwiftUITests/NetworkLayerTests/NetworkLoaderTests.swift @@ -97,7 +97,12 @@ final class NetworkLoaderTests: XCTestCase { return (session, sut) } - private func expect(_ sut: NetworkLoaderProtocol, toCompleteWith expectedError: AdessoError, using requestObject: RequestObject, when action: () -> Void, file: StaticString = #filePath, line: UInt = #line) { + private func expect(_ sut: NetworkLoaderProtocol, + toCompleteWith expectedError: AdessoError, + using requestObject: RequestObject, + when action: () -> Void, + file: StaticString = #filePath, + line: UInt = #line) { let expectation = expectation(description: "Wait for request") Task { diff --git a/SampleAppSwiftUITests/SampleAppSwiftUITests.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUITests/SampleAppSwiftUITests.swift similarity index 100% rename from SampleAppSwiftUITests/SampleAppSwiftUITests.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUITests/SampleAppSwiftUITests.swift diff --git a/SampleAppSwiftUIUITests/Info.plist b/Projects/SampleAppSwiftUI/SampleAppSwiftUIUITests/Info.plist similarity index 100% rename from SampleAppSwiftUIUITests/Info.plist rename to Projects/SampleAppSwiftUI/SampleAppSwiftUIUITests/Info.plist diff --git a/SampleAppSwiftUIUITests/SampleAppSwiftUIUITests.swift b/Projects/SampleAppSwiftUI/SampleAppSwiftUIUITests/SampleAppSwiftUIUITests.swift similarity index 100% rename from SampleAppSwiftUIUITests/SampleAppSwiftUIUITests.swift rename to Projects/SampleAppSwiftUI/SampleAppSwiftUIUITests/SampleAppSwiftUIUITests.swift diff --git a/README.md b/README.md index 4ec4993..b5928ec 100644 --- a/README.md +++ b/README.md @@ -32,16 +32,25 @@ This is the iOS SwiftUI Sample App created by adesso Turkey. The project serves - [MacOS Ventura (13.4 or higher)](https://www.apple.com/macos/ventura/features/) - [Xcode 15 or higher](https://developer.apple.com/documentation/xcode-release-notes/xcode-15-release-notes) - [Swiftlint][github/swiftlint] -- [XcodeGen](https://github.com/yonaskolb/XcodeGen) +- [tuist](https://github.com/tuist/tuist) ## Installation -Because XcodeGen is used in this project, there will be no `.xcodeproj` or `.xcworkspace` files when it first cloned. To generate them using the `project.yml` file, run +Because `tuist` is used in this project, there will be no `.xcodeproj` or `.xcworkspace` files when it first cloned. To generate them using the [tuist manifest files](https://docs.tuist.io/tutorial/get-started) (like `Workspace.swift`, `Project.swift` etc.), first run ```sh -xcodegen +tuist fetch ``` +to fetch swift package dependencies and after that you can run + +```sh +tuist generate +``` + +to generate your project. Don't forget to run these tuist commands in the root directory of the project! + + Swiftlint can also be installed via included scripts in the repository. Under the `{project_root}/scripts/installation` directory, simply run: ``` @@ -102,7 +111,7 @@ Gitflow is a legacy Git workflow that was originally a disruptive and novel stra ## Useful Tools and Resources -- [XcodeGen](https://github.com/yonaskolb/XcodeGen) - XcodeGen is a command line tool written in Swift that generates your Xcode project using your folder structure and a project spec. +- [tuist](https://github.com/tuist/tuist) - Tuist is a command line tool that helps you generate, maintain and interact with Xcode projects. It's open source and written in Swift. - [SwiftLint][github/swiftlint] - A tool to enforce Swift style and conventions. - [TestFlight](https://help.apple.com/itunes-connect/developer/#/devdc42b26b8) - TestFlight beta testing lets you distribute beta builds of your app to testers and collect feedback. - [GithubActions](https://github.com/features/actions) - CI/CD faeature to build, test, and deploy your code right from GitHub. diff --git a/Tuist/Dependencies.swift b/Tuist/Dependencies.swift new file mode 100644 index 0000000..4947e27 --- /dev/null +++ b/Tuist/Dependencies.swift @@ -0,0 +1,13 @@ +// swift-tools-version: 5.9 + +import ProjectDescription +import ProjectDescriptionHelpers + +let dependencies = Dependencies( + swiftPackageManager: .init( + projectOptions: [ + "LocalSwiftPackage": .options(disableSynthesizedResourceAccessors: false), + ] + ), + platforms: [.iOS] +) diff --git a/Tuist/Package.swift b/Tuist/Package.swift new file mode 100644 index 0000000..6ee6010 --- /dev/null +++ b/Tuist/Package.swift @@ -0,0 +1,8 @@ +// swift-tools-version: 5.9 + +import PackageDescription + +let package = Package( + name: "PackageName", + dependencies: [] +) diff --git a/Tuist/ProjectDescriptionHelpers/BuildEnvironment.swift b/Tuist/ProjectDescriptionHelpers/BuildEnvironment.swift new file mode 100644 index 0000000..f64dc59 --- /dev/null +++ b/Tuist/ProjectDescriptionHelpers/BuildEnvironment.swift @@ -0,0 +1,42 @@ +import Foundation +import ProjectDescription + +public enum BuildEnvironment: String, CaseIterable { + case appStore, development, production + + public var name: String { rawValue.firstUppercased } + + public var configurationName: ConfigurationName { + ConfigurationName(stringLiteral: name) + } + + public var targetConfigPath: Path { + .relativeToRoot("Projects/SampleAppSwiftUI/SampleAppSwiftUI/Configs/\(name).xcconfig") + } + + public var targetConfiguration: Configuration { + switch self { + case .appStore: + return .release(name: configurationName, xcconfig: targetConfigPath) + case .development: + return .debug(name: configurationName, xcconfig: targetConfigPath) + case .production: + return .debug(name: configurationName, xcconfig: targetConfigPath) + } + } + + public var projectConfiguration: Configuration { + switch self { + case .appStore: + return .release(name: configurationName) + case .development: + return .debug(name: configurationName) + case .production: + return .debug(name: configurationName) + } + } +} + +extension StringProtocol { + public var firstUppercased: String { prefix(1).uppercased() + dropFirst() } +} diff --git a/Tuist/ProjectDescriptionHelpers/Project+Templates.swift b/Tuist/ProjectDescriptionHelpers/Project+Templates.swift new file mode 100644 index 0000000..76c8305 --- /dev/null +++ b/Tuist/ProjectDescriptionHelpers/Project+Templates.swift @@ -0,0 +1,92 @@ +import Foundation +import ProjectDescription + +extension Project { + + static func generateBundleId(for target: String) -> String { + "com.adesso.\(target)" + } + + public static func createAppProject( + name: String, + projectPackages: [Package] = [], + projectSettings: Settings?, + destinations: Destinations, + deploymentTargets: DeploymentTargets?, + appTargetScripts: [TargetScript] = [], + appTargetSettings: Settings?, + dependencies: [TargetDependency] = [], + hasUnitTestTarget: Bool, + hasUITestTarget: Bool + ) -> Project { + var targets: [Target] = [] + + let appTarget = Target( + name: name, + destinations: destinations, + product: .app, + productName: name, + bundleId: "$(PRODUCT_BUNDLE_IDENTIFIER)", + deploymentTargets: deploymentTargets, + infoPlist: .file(path: .relativeToRoot("Projects/\(name)/\(name)/Info.plist")), + sources: SourceFilesList.paths([.relativeToRoot("Projects/\(name)/\(name)/**")]), + resources: ResourceFileElements( + resources: [ + ResourceFileElement.glob(pattern: .relativeToRoot("Projects/\(name)/\(name)/Resources/**")) + ] + ), + scripts: appTargetScripts, + dependencies: dependencies, + settings: appTargetSettings + ) + + targets.append(appTarget) + + if hasUnitTestTarget { + let unitTestTargetName = "\(name)Tests" + let unitTestTarget = Target( + name: unitTestTargetName, + destinations: destinations, + product: .unitTests, + productName: unitTestTargetName, + bundleId: generateBundleId(for: unitTestTargetName), + deploymentTargets: deploymentTargets, + infoPlist: .file(path: .relativeToRoot("Projects/\(name)/\(unitTestTargetName)/Info.plist")), + sources: SourceFilesList.paths([.relativeToRoot("Projects/\(name)/\(unitTestTargetName)/**")]), + dependencies: dependencies + ) + + targets.append(unitTestTarget) + } + + if hasUITestTarget { + let uiTestTargetName = "\(name)UITests" + let uiTestTarget = Target( + name: uiTestTargetName, + destinations: destinations, + product: .uiTests, + productName: uiTestTargetName, + bundleId: generateBundleId(for: uiTestTargetName), + deploymentTargets: deploymentTargets, + infoPlist: .file(path: .relativeToRoot("Projects/\(name)/\(uiTestTargetName)/Info.plist")), + sources: SourceFilesList.paths([.relativeToRoot("Projects/\(name)/\(uiTestTargetName)/**")]) + ) + + targets.append(uiTestTarget) + } + + return Project( + name: name, + options: .options( + automaticSchemesOptions: .disabled, + disableBundleAccessors: true, + disableSynthesizedResourceAccessors: true + ), + packages: projectPackages, + settings: projectSettings, + targets: targets, + schemes: [Scheme.createScheme(for: name, executable: name, hasUnitTestTarget: hasUnitTestTarget, hasUITestTarget: hasUITestTarget)] + // schemes: Scheme.allSchemes(for: name, hasUnitTestTarget: hasUnitTestTarget, hasUITestTarget: hasUITestTarget) // MARK: If you want to create separate scheme for all BuildEnvironment use this method + ) + } +} diff --git a/Tuist/ProjectDescriptionHelpers/Scheme+Templates.swift b/Tuist/ProjectDescriptionHelpers/Scheme+Templates.swift new file mode 100644 index 0000000..405af34 --- /dev/null +++ b/Tuist/ProjectDescriptionHelpers/Scheme+Templates.swift @@ -0,0 +1,109 @@ +import Foundation +import ProjectDescription + +extension Scheme { + + /// Creates single scheme for given target name with different configuration combination + /// - Run: Development + /// - Test: Development + /// - Profile: AppStore + /// - Analyze: Development + /// - Archive: AppStore + public static func createScheme(for target: String, executable: String? = nil, hasUnitTestTarget: Bool, hasUITestTarget: Bool) -> Scheme { + let mainTarget = TargetReference(stringLiteral: target) + let unitTestTarget: TestableTarget? = hasUnitTestTarget ? TestableTarget(stringLiteral: "\(target)Tests") : nil + let uiTestTarget: TestableTarget? = hasUITestTarget ? TestableTarget(stringLiteral: "\(target)UITests") : nil + let testableTargets: [TestableTarget] = [unitTestTarget, uiTestTarget].compactMap({ $0 }) + var executableTarget: TargetReference? + if let executable { + executableTarget = "\(executable)" + } + + return .scheme( + name: target, + shared: true, + hidden: false, + buildAction: .buildAction( + targets: [ + mainTarget + ] + ), + testAction: !testableTargets.isEmpty ? .targets(testableTargets, configuration: BuildEnvironment.development.configurationName) : nil, + runAction: .runAction( + configuration: BuildEnvironment.development.configurationName, + executable: executableTarget + ), + archiveAction: .archiveAction(configuration: BuildEnvironment.appStore.configurationName), + profileAction: .profileAction( + configuration: BuildEnvironment.appStore.configurationName, + executable: executableTarget + ), + analyzeAction: .analyzeAction(configuration: BuildEnvironment.development.configurationName) + ) + } + + /// Creates separate schemes for all BuildEnvironments with given target name. + public static func allSchemes(for target: String, executable: String? = nil, hasUnitTestTarget: Bool, hasUITestTarget: Bool) -> [Scheme] { + BuildEnvironment.allCases.map({ createScheme(for: $0, target: target, hasUnitTestTarget: hasUnitTestTarget, hasUITestTarget: hasUITestTarget) }) + } + + /// Creates a scheme for given BuildEnvironment with given target name. + public static func createScheme(for env: BuildEnvironment, target: String, executable: String? = nil, hasUnitTestTarget: Bool, hasUITestTarget: Bool) -> Scheme { + let config = env.configurationName + + let mainTarget = TargetReference(stringLiteral: target) + let unitTestTarget: TestableTarget? = hasUnitTestTarget ? TestableTarget(stringLiteral: "\(target)Tests") : nil + let uiTestTarget: TestableTarget? = hasUITestTarget ? TestableTarget(stringLiteral: "\(target)UITests") : nil + let testableTargets: [TestableTarget] = [unitTestTarget, uiTestTarget].compactMap({ $0 }) + var executableTarget: TargetReference? + if let executable { + executableTarget = "\(executable)" + } + + return .scheme( + name: "\(target)-\(env.name)", + shared: true, + hidden: false, + buildAction: .buildAction( + targets: [ + mainTarget + ] + ), + testAction: !testableTargets.isEmpty ? .targets(testableTargets, configuration: config) : nil, + runAction: .runAction( + configuration: config, + executable: executableTarget + ), + archiveAction: .archiveAction(configuration: config), + profileAction: .profileAction( + configuration: config, + executable: executableTarget + ), + analyzeAction: .analyzeAction(configuration: config) + ) + } + + public static func scheme( + name: String, + shared: Bool = true, + hidden: Bool = false, + buildAction: ProjectDescription.BuildAction? = nil, + testAction: ProjectDescription.TestAction? = nil, + runAction: ProjectDescription.RunAction? = nil, + archiveAction: ProjectDescription.ArchiveAction? = nil, + profileAction: ProjectDescription.ProfileAction? = nil, + analyzeAction: ProjectDescription.AnalyzeAction? = nil + ) -> Scheme { + Scheme( + name: name, + shared: shared, + hidden: hidden, + buildAction: buildAction, + testAction: testAction, + runAction: runAction, + archiveAction: archiveAction, + profileAction: profileAction, + analyzeAction: analyzeAction + ) + } +} diff --git a/Tuist/ProjectDescriptionHelpers/Settings+Templates.swift b/Tuist/ProjectDescriptionHelpers/Settings+Templates.swift new file mode 100644 index 0000000..72dd2ca --- /dev/null +++ b/Tuist/ProjectDescriptionHelpers/Settings+Templates.swift @@ -0,0 +1,28 @@ +import Foundation +import ProjectDescription + +extension SettingsDictionary { + public static let baseSettings: SettingsDictionary = [ + "ENABLE_USER_SCRIPT_SANDBOXING": false, + "CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED": true, + "ASSETCATALOG_COMPILER_GENERATE_ASSET_SYMBOLS": true, + "ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS": true, + "LOCALIZATION_PREFERS_STRING_CATALOGS": true, + "SWIFT_EMIT_LOC_STRINGS": true + ] +} + +extension ProjectDescription.Settings { + public static var projectSettings: Self { + .settings( + base: .baseSettings, + configurations: BuildEnvironment.allCases.map(\.projectConfiguration) + ) + } + + public static var targetSettings: Self { + .settings( + configurations: BuildEnvironment.allCases.map(\.targetConfiguration) + ) + } +} diff --git a/Workspace.swift b/Workspace.swift new file mode 100644 index 0000000..b90b7b4 --- /dev/null +++ b/Workspace.swift @@ -0,0 +1,10 @@ +import ProjectDescription +import ProjectDescriptionHelpers + +let workspace = Workspace( + name: "SampleAppSwiftUI", + projects: [ + Path.relativeToRoot("Projects/SampleAppSwiftUI") + ], + generationOptions: .options(autogeneratedWorkspaceSchemes: .disabled) +) diff --git a/project.yml b/project.yml deleted file mode 100644 index 9c326de..0000000 --- a/project.yml +++ /dev/null @@ -1,84 +0,0 @@ -name: SampleAppSwiftUI - -configs: - Development: debug - Production: debug - AppStore: release - -options: - bundleIdPrefix: com.adesso - deploymentTarget: - iOS: 16.0 - -attributes: - BuildIndependentTargetsInParallel: YES - -settings: - ENABLE_USER_SCRIPT_SANDBOXING: false - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED: true - ASSETCATALOG_COMPILER_GENERATE_ASSET_SYMBOLS: true - ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS: true - LOCALIZATION_PREFERS_STRING_CATALOGS: true - SWIFT_EMIT_LOC_STRINGS: true - -packages: - CocoaLumberjack: - url: https://github.com/CocoaLumberjack/CocoaLumberjack - majorVersion: 3.8.0 - Pulse: - url: https://github.com/kean/Pulse - majorVersion: 3.0.0 - swift-log: - url: https://github.com/apple/swift-log.git - majorVersion: 1.5.2 - -targets: - SampleAppSwiftUI: - dependencies: - - package: CocoaLumberjack - product: CocoaLumberjack - - package: CocoaLumberjack - product: CocoaLumberjackSwift - - package: CocoaLumberjack - product: CocoaLumberjackSwiftLogBackend - - package: Pulse - product: Pulse - product: PulseUI - configFiles: - Development: SampleAppSwiftUI/Configs/Development.xcconfig - Production: SampleAppSwiftUI/Configs/Production.xcconfig - AppStore: SampleAppSwiftUI/Configs/AppStore.xcconfig - type: application - platform: iOS - sources: - - path: SampleAppSwiftUI - scheme: - testTargets: - - SampleAppSwiftUITests - - SampleAppSwiftUIUITests - preBuildScripts: - - path: scripts/installation/swiftlint.sh - name: SwiftLint - basedOnDependencyAnalysis: false - SampleAppSwiftUITests: - dependencies: - - target: SampleAppSwiftUI - - package: CocoaLumberjack - product: CocoaLumberjack - - package: CocoaLumberjack - product: CocoaLumberjackSwift - - package: CocoaLumberjack - product: CocoaLumberjackSwiftLogBackend - - package: Pulse - product: Pulse - product: PulseUI - type: bundle.unit-test - platform: iOS - sources: - - path: SampleAppSwiftUITests - SampleAppSwiftUIUITests: - type: bundle.ui-testing - platform: iOS - sources: - - path: SampleAppSwiftUIUITests -parallelizeBuild: true diff --git a/scripts/installation/swiftlint.sh b/scripts/installation/swiftlint.sh old mode 100644 new mode 100755