From d729448d0df39ce4d432b8dcce4be47601456ff5 Mon Sep 17 00:00:00 2001 From: Rinat Enikeev Date: Fri, 24 Nov 2023 20:52:17 +0200 Subject: [PATCH] Make commands for project gen and CLI build Implements Makefile for project generation with SPM and Frameworks --- .gitignore | 3 ++- Makefile | 25 +++++++++++++++++ .../RuuviCloudFactoryPure.swift | 4 ++- .../RuuviCloudPure/RuuviCloudPure.swift | 3 +++ .../BackgroundProcessServiceiOS13.swift | 3 +++ .../BackgroundTaskServiceiOS13.swift | 4 +++ .../PullWeb/PullWebDaemonOperations.swift | 3 +++ Packages/RuuviService/Package.swift | 6 ++++- .../RuuviServiceCloudNotificationImpl.swift | 6 ++--- .../RuuviServiceFactory.swift | 27 +++++++++++++++++++ .../VirtualPersistenceRealm.swift | 3 +++ .../VirtualTagLastRecordSubjectCombine.swift | 3 +++ .../Combine/VirtualTagSubjectCombine.swift | 3 +++ .../VirtualProviderServiceImpl.swift | 3 +++ project.yml => project_frameworks.yml | 4 +-- project_spm.yml | 2 +- 16 files changed, 93 insertions(+), 9 deletions(-) create mode 100644 Makefile rename project.yml => project_frameworks.yml (99%) diff --git a/.gitignore b/.gitignore index a7fe67fd9..f39b6266c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ # Generated -Ruuvi Station.xcodeproj +spm.xcodeproj +frameworks.xcodeproj # Private station/Resources/Plists/GoogleService-Info.plist diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..4cb8c6ce5 --- /dev/null +++ b/Makefile @@ -0,0 +1,25 @@ +# generates xcodeproj for frameworks build configuration +xcodeproj_with_frameworks: + xcodegen -s project_frameworks.yml + +# generates xcodeproj for swift package manager build configuration +xcodeproj_with_spm: + xcodegen -s project_spm.yml + +# builds station target with frameworks build configuration for iOS +build_with_frameworks: + d=$$(date +%s)\ + ; xcodebuild -project frameworks.xcodeproj -scheme station -configuration Release -sdk iphoneos17.0 build\ + && echo "Build took $$(($$(date +%s)-d)) seconds" + +# builds station target with swift package manager build configuration for iOS +build_with_spm: + d=$$(date +%s)\ + ; xcodebuild -project spm.xcodeproj -scheme station -configuration Release -sdk iphoneos17.0 build\ + && echo "Build took $$(($$(date +%s)-d)) seconds" + +# builds station target with development pods build configuration for iOS +build_with_pods: + d=$$(date +%s)\ + ; xcodebuild -workspace station.xcworkspace -scheme station -configuration Release -sdk iphoneos17.0 build\ + && echo "Build took $$(($$(date +%s)-d)) seconds" diff --git a/Packages/RuuviCloud/Sources/RuuviCloudPure/RuuviCloudFactoryPure.swift b/Packages/RuuviCloud/Sources/RuuviCloudPure/RuuviCloudFactoryPure.swift index 81d876f6d..8b43202d4 100644 --- a/Packages/RuuviCloud/Sources/RuuviCloudPure/RuuviCloudFactoryPure.swift +++ b/Packages/RuuviCloud/Sources/RuuviCloudPure/RuuviCloudFactoryPure.swift @@ -2,7 +2,9 @@ import Foundation import RuuviPool import RuuviUser import RuuviCloud - +#if canImport(RuuviCloudApi) +import RuuviCloudApi +#endif public final class RuuviCloudFactoryPure: RuuviCloudFactory { public init() {} diff --git a/Packages/RuuviCloud/Sources/RuuviCloudPure/RuuviCloudPure.swift b/Packages/RuuviCloud/Sources/RuuviCloudPure/RuuviCloudPure.swift index 8ca9ca436..046e87bdc 100644 --- a/Packages/RuuviCloud/Sources/RuuviCloudPure/RuuviCloudPure.swift +++ b/Packages/RuuviCloud/Sources/RuuviCloudPure/RuuviCloudPure.swift @@ -6,6 +6,9 @@ import BTKit import RuuviUser import RuuviCloud import RuuviPool +#if canImport(RuuviCloudApi) +import RuuviCloudApi +#endif // swiftlint:disable:next type_body_length public final class RuuviCloudPure: RuuviCloud { diff --git a/Packages/RuuviDaemon/Sources/RuuviDaemonBackground/BackgroundProcessServiceiOS13.swift b/Packages/RuuviDaemon/Sources/RuuviDaemonBackground/BackgroundProcessServiceiOS13.swift index 36dfcb018..83d6e204e 100644 --- a/Packages/RuuviDaemon/Sources/RuuviDaemonBackground/BackgroundProcessServiceiOS13.swift +++ b/Packages/RuuviDaemon/Sources/RuuviDaemonBackground/BackgroundProcessServiceiOS13.swift @@ -2,6 +2,9 @@ import Foundation import BackgroundTasks import Future import RuuviDaemon +#if canImport(RuuviDaemonOperation) +import RuuviDaemonOperation +#endif @available(iOS 13, *) public final class BackgroundProcessServiceiOS13: BackgroundProcessService { diff --git a/Packages/RuuviDaemon/Sources/RuuviDaemonBackground/BackgroundTaskServiceiOS13.swift b/Packages/RuuviDaemon/Sources/RuuviDaemonBackground/BackgroundTaskServiceiOS13.swift index 6c98eb9c4..05ed831ac 100644 --- a/Packages/RuuviDaemon/Sources/RuuviDaemonBackground/BackgroundTaskServiceiOS13.swift +++ b/Packages/RuuviDaemon/Sources/RuuviDaemonBackground/BackgroundTaskServiceiOS13.swift @@ -1,6 +1,10 @@ import Foundation import BackgroundTasks import RuuviDaemon +#if canImport(RuuviDaemonOperation) +import RuuviDaemonOperation +#endif + @available(iOS 13, *) public final class BackgroundTaskServiceiOS13: BackgroundTaskService { diff --git a/Packages/RuuviDaemon/Sources/RuuviDaemonVirtualTag/PullWeb/PullWebDaemonOperations.swift b/Packages/RuuviDaemon/Sources/RuuviDaemonVirtualTag/PullWeb/PullWebDaemonOperations.swift index b880c460c..b1a54e875 100644 --- a/Packages/RuuviDaemon/Sources/RuuviDaemonVirtualTag/PullWeb/PullWebDaemonOperations.swift +++ b/Packages/RuuviDaemon/Sources/RuuviDaemonVirtualTag/PullWeb/PullWebDaemonOperations.swift @@ -1,6 +1,9 @@ import Foundation import RuuviLocal import RuuviDaemon +#if canImport(RuuviDaemonOperation) +import RuuviDaemonOperation +#endif public final class PullWebDaemonOperations: RuuviDaemonWorker, PullWebDaemon { private let settings: RuuviLocalSettings diff --git a/Packages/RuuviService/Package.swift b/Packages/RuuviService/Package.swift index c6639cd50..9a617e608 100644 --- a/Packages/RuuviService/Package.swift +++ b/Packages/RuuviService/Package.swift @@ -92,7 +92,11 @@ let package = Package( .target( name: "RuuviServiceCloudNotification", dependencies: [ - "RuuviService" + "RuuviService", + .product( + name: "RuuviCloudApi", + package: "RuuviCloud" + ) ] ), .target( diff --git a/Packages/RuuviService/Sources/RuuviServiceCloudNotification/RuuviServiceCloudNotificationImpl.swift b/Packages/RuuviService/Sources/RuuviServiceCloudNotification/RuuviServiceCloudNotificationImpl.swift index 5bba0fcb4..41b2d8a6f 100644 --- a/Packages/RuuviService/Sources/RuuviServiceCloudNotification/RuuviServiceCloudNotificationImpl.swift +++ b/Packages/RuuviService/Sources/RuuviServiceCloudNotification/RuuviServiceCloudNotificationImpl.swift @@ -3,14 +3,14 @@ import Future import RuuviOntology import RuuviStorage import RuuviCloud -#if canImport(RuuviCloudApi) -import RuuviCloudApi -#endif import RuuviPool import RuuviLocal import RuuviService import RuuviUser import RuuviCore +#if canImport(RuuviCloudApi) +import RuuviCloudApi +#endif public final class RuuviServiceCloudNotificationImpl: RuuviServiceCloudNotification { diff --git a/Packages/RuuviService/Sources/RuuviServiceFactory/RuuviServiceFactory.swift b/Packages/RuuviService/Sources/RuuviServiceFactory/RuuviServiceFactory.swift index dd00ae027..3b64feb21 100644 --- a/Packages/RuuviService/Sources/RuuviServiceFactory/RuuviServiceFactory.swift +++ b/Packages/RuuviService/Sources/RuuviServiceFactory/RuuviServiceFactory.swift @@ -7,6 +7,33 @@ import RuuviCore import RuuviRepository import RuuviService import RuuviUser +#if canImport(RuuviServiceCloudSync) +import RuuviServiceCloudSync +#endif +#if canImport(RuuviServiceOwnership) +import RuuviServiceOwnership +#endif +#if canImport(RuuviServiceSensorProperties) +import RuuviServiceSensorProperties +#endif +#if canImport(RuuviServiceSensorRecords) +import RuuviServiceSensorRecords +#endif +#if canImport(RuuviServiceAppSettings) +import RuuviServiceAppSettings +#endif +#if canImport(RuuviServiceOffsetCalibration) +import RuuviServiceOffsetCalibration +#endif +#if canImport(RuuviServiceAlert) +import RuuviServiceAlert +#endif +#if canImport(RuuviServiceAuth) +import RuuviServiceAuth +#endif +#if canImport(RuuviServiceCloudNotification) +import RuuviServiceCloudNotification +#endif public protocol RuuviServiceFactory { // swiftlint:disable:next function_parameter_count diff --git a/Packages/RuuviVirtual/Sources/RuuviVirtualPersistence/VirtualPersistenceRealm.swift b/Packages/RuuviVirtual/Sources/RuuviVirtualPersistence/VirtualPersistenceRealm.swift index 12b658bfa..dbee56a90 100644 --- a/Packages/RuuviVirtual/Sources/RuuviVirtualPersistence/VirtualPersistenceRealm.swift +++ b/Packages/RuuviVirtual/Sources/RuuviVirtualPersistence/VirtualPersistenceRealm.swift @@ -5,6 +5,9 @@ import RuuviOntology import RuuviContext import RuuviLocal import RuuviVirtual +#if canImport(RuuviVirtualModel) +import RuuviVirtualModel +#endif // swiftlint:disable:next type_body_length public final class VirtualPersistenceRealm: VirtualPersistence { diff --git a/Packages/RuuviVirtual/Sources/RuuviVirtualReactor/Combine/VirtualTagLastRecordSubjectCombine.swift b/Packages/RuuviVirtual/Sources/RuuviVirtualReactor/Combine/VirtualTagLastRecordSubjectCombine.swift index 319431eba..3759a8a52 100644 --- a/Packages/RuuviVirtual/Sources/RuuviVirtualReactor/Combine/VirtualTagLastRecordSubjectCombine.swift +++ b/Packages/RuuviVirtual/Sources/RuuviVirtualReactor/Combine/VirtualTagLastRecordSubjectCombine.swift @@ -3,6 +3,9 @@ import Combine import RuuviContext import RuuviOntology import RealmSwift +#if canImport(RuuviVirtualModel) +import RuuviVirtualModel +#endif final class VirtualTagLastRecordSubjectCombine { var isServing: Bool = false diff --git a/Packages/RuuviVirtual/Sources/RuuviVirtualReactor/Combine/VirtualTagSubjectCombine.swift b/Packages/RuuviVirtual/Sources/RuuviVirtualReactor/Combine/VirtualTagSubjectCombine.swift index 5c6834d45..43389f047 100644 --- a/Packages/RuuviVirtual/Sources/RuuviVirtualReactor/Combine/VirtualTagSubjectCombine.swift +++ b/Packages/RuuviVirtual/Sources/RuuviVirtualReactor/Combine/VirtualTagSubjectCombine.swift @@ -3,6 +3,9 @@ import Combine import RealmSwift import RuuviOntology import RuuviContext +#if canImport(RuuviVirtualModel) +import RuuviVirtualModel +#endif class VirtualTagSubjectCombine { var realm: RealmContext diff --git a/Packages/RuuviVirtual/Sources/RuuviVirtualService/VirtualProviderServiceImpl.swift b/Packages/RuuviVirtual/Sources/RuuviVirtualService/VirtualProviderServiceImpl.swift index c194c1e7e..f0fce8c50 100644 --- a/Packages/RuuviVirtual/Sources/RuuviVirtualService/VirtualProviderServiceImpl.swift +++ b/Packages/RuuviVirtual/Sources/RuuviVirtualService/VirtualProviderServiceImpl.swift @@ -5,6 +5,9 @@ import RuuviVirtual import RuuviOntology import RuuviLocation import RuuviCore +#if canImport(RuuviVirtualOWM) +import RuuviVirtualOWM +#endif public final class VirtualProviderServiceImpl: VirtualProviderService { private let owmApi: OpenWeatherMapAPI diff --git a/project.yml b/project_frameworks.yml similarity index 99% rename from project.yml rename to project_frameworks.yml index 347bbb5f1..ebead8436 100644 --- a/project.yml +++ b/project_frameworks.yml @@ -1,4 +1,4 @@ -APP_NAME: &APP_NAME Ruuvi Station +APP_NAME: &APP_NAME frameworks DEVELOPMENT_TEAM: &DEVELOPMENT_TEAM 4MUYJ4YYH4 BUNDLE_ID_PREFIX: &BUNDLE_ID_PREFIX com.ruuvi @@ -114,7 +114,7 @@ targetTemplates: packages: BTKit: url: https://github.com/ruuvi/BTKit - from: 0.4.3 + version: 0.4.3 Charts: url: https://github.com/danielgindi/Charts from: 4.1.0 diff --git a/project_spm.yml b/project_spm.yml index 5bff5fd8b..f3a2cb3b3 100644 --- a/project_spm.yml +++ b/project_spm.yml @@ -1,4 +1,4 @@ -APP_NAME: &APP_NAME Ruuvi Station SPM +APP_NAME: &APP_NAME spm DEVELOPMENT_TEAM: &DEVELOPMENT_TEAM 4MUYJ4YYH4 BUNDLE_ID_PREFIX: &BUNDLE_ID_PREFIX com.ruuvi