Ivan Valkou 4 роки тому
батько
коміт
97c9019393
29 змінених файлів з 52 додано та 67 видалено
  1. 4 6
      FreeAPS.xcodeproj/project.pbxproj
  2. 1 1
      FreeAPS/Sources/Modules/AddCarbs/AddCarbsStateModel.swift
  3. 1 1
      FreeAPS/Sources/Modules/AddTempTarget/AddTempTargetStateModel.swift
  4. 1 1
      FreeAPS/Sources/Modules/AutotuneConfig/AutotuneConfigStateModel.swift
  5. 1 1
      FreeAPS/Sources/Modules/BasalProfileEditor/BasalProfileEditorStateModel.swift
  6. 1 1
      FreeAPS/Sources/Modules/Bolus/BolusStateModel.swift
  7. 1 1
      FreeAPS/Sources/Modules/CGM/CGMStateModel.swift
  8. 1 1
      FreeAPS/Sources/Modules/CREditor/CREditorStateModel.swift
  9. 1 1
      FreeAPS/Sources/Modules/ConfigEditor/ConfigEditorStateModel.swift
  10. 1 1
      FreeAPS/Sources/Modules/DataTable/DataTableStateModel.swift
  11. 1 1
      FreeAPS/Sources/Modules/Home/HomeStateModel.swift
  12. 1 1
      FreeAPS/Sources/Modules/ISFEditor/ISFEditorStateModel.swift
  13. 1 1
      FreeAPS/Sources/Modules/Main/MainStateModel.swift
  14. 1 1
      FreeAPS/Sources/Modules/ManualTempBasal/ManualTempBasalStateModel.swift
  15. 1 1
      FreeAPS/Sources/Modules/NightscoutConfig/NightscoutConfigStateModel.swift
  16. 1 1
      FreeAPS/Sources/Modules/PreferencesEditor/PreferencesEditorStateModel.swift
  17. 1 1
      FreeAPS/Sources/Modules/PumpConfig/PumpConfigStateModel.swift
  18. 1 1
      FreeAPS/Sources/Modules/PumpSettingsEditor/PumpSettingsEditorStateModel.swift
  19. 1 1
      FreeAPS/Sources/Modules/Settings/SettingsStateModel.swift
  20. 1 1
      FreeAPS/Sources/Modules/TargetsEditor/TargetsEditorStateModel.swift
  21. 0 3
      Templates/swift_pvvm/Code/Builder.swift.liquid
  22. 0 5
      Templates/swift_pvvm/Code/DataFlow.swift.liquid
  23. 0 14
      Templates/swift_pvvm/Code/View/RootView.swift.liquid
  24. 0 7
      Templates/swift_pvvm/Code/ViewModel.swift.liquid
  25. 5 0
      Templates/unit/Code/DataFlow.swift.liquid
  26. 0 0
      Templates/unit/Code/Provider.swift.liquid
  27. 7 0
      Templates/unit/Code/StateModel.swift.liquid
  28. 14 0
      Templates/unit/Code/View/RootView.swift.liquid
  29. 3 13
      Templates/swift_pvvm/swift_pvvm.rambaspec

+ 4 - 6
FreeAPS.xcodeproj/project.pbxproj

@@ -73,7 +73,6 @@
 		38569347270B5DFB0002C50D /* CGMType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38569344270B5DFA0002C50D /* CGMType.swift */; };
 		38569348270B5DFB0002C50D /* GlucoseSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38569345270B5DFA0002C50D /* GlucoseSource.swift */; };
 		38569349270B5DFB0002C50D /* AppGroupSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38569346270B5DFB0002C50D /* AppGroupSource.swift */; };
-		3856934F270B5E1D0002C50D /* CGMProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3856934B270B5E1C0002C50D /* CGMProvider.swift */; };
 		38569353270B5E350002C50D /* CGMRootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38569352270B5E350002C50D /* CGMRootView.swift */; };
 		385CEA8225F23DFD002D6D5B /* NightscoutStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 385CEA8125F23DFD002D6D5B /* NightscoutStatus.swift */; };
 		385CEAC125F2EA52002D6D5B /* Announcement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 385CEAC025F2EA52002D6D5B /* Announcement.swift */; };
@@ -180,6 +179,7 @@
 		38FE826D25CC8461001FF17A /* NightscoutAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38FE826C25CC8461001FF17A /* NightscoutAPI.swift */; };
 		38FEF3FA2737E42000574A46 /* BaseStateModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38FEF3F92737E42000574A46 /* BaseStateModel.swift */; };
 		38FEF3FC2737E53800574A46 /* MainStateModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38FEF3FB2737E53800574A46 /* MainStateModel.swift */; };
+		38FEF3FE2738083E00574A46 /* CGMProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38FEF3FD2738083E00574A46 /* CGMProvider.swift */; };
 		44190F0BBA464D74B857D1FB /* PreferencesEditorRootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A965332F237348B119FB858 /* PreferencesEditorRootView.swift */; };
 		448B6FCB252BD4796E2960C0 /* PumpSettingsEditorDataFlow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0274EE6439B1C3ED70730D41 /* PumpSettingsEditorDataFlow.swift */; };
 		45252C95D220E796FDB3B022 /* ConfigEditorDataFlow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F8A87AA037BD079BA3528BA /* ConfigEditorDataFlow.swift */; };
@@ -280,7 +280,6 @@
 /* Begin PBXFileReference section */
 		0274EE6439B1C3ED70730D41 /* PumpSettingsEditorDataFlow.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PumpSettingsEditorDataFlow.swift; sourceTree = "<group>"; };
 		0CA3E609094E064C99A4752C /* PreferencesEditorStateModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PreferencesEditorStateModel.swift; sourceTree = "<group>"; };
-		0E0D51F68E37921622962DB4 /* CGMProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CGMProvider.swift; sourceTree = "<group>"; };
 		10A0C32B0DAB52726EF9B6D9 /* BolusRootView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BolusRootView.swift; sourceTree = "<group>"; };
 		12204445D7632AF09264A979 /* PreferencesEditorDataFlow.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PreferencesEditorDataFlow.swift; sourceTree = "<group>"; };
 		1918333A26ADA46800F45722 /* fi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fi; path = fi.lproj/Localizable.strings; sourceTree = "<group>"; };
@@ -358,7 +357,6 @@
 		38569344270B5DFA0002C50D /* CGMType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CGMType.swift; sourceTree = "<group>"; };
 		38569345270B5DFA0002C50D /* GlucoseSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GlucoseSource.swift; sourceTree = "<group>"; };
 		38569346270B5DFB0002C50D /* AppGroupSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppGroupSource.swift; sourceTree = "<group>"; };
-		3856934B270B5E1C0002C50D /* CGMProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CGMProvider.swift; sourceTree = "<group>"; };
 		38569352270B5E350002C50D /* CGMRootView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CGMRootView.swift; sourceTree = "<group>"; };
 		385CEA8125F23DFD002D6D5B /* NightscoutStatus.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NightscoutStatus.swift; sourceTree = "<group>"; };
 		385CEAC025F2EA52002D6D5B /* Announcement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Announcement.swift; sourceTree = "<group>"; };
@@ -457,6 +455,7 @@
 		38FE826C25CC8461001FF17A /* NightscoutAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NightscoutAPI.swift; sourceTree = "<group>"; };
 		38FEF3F92737E42000574A46 /* BaseStateModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseStateModel.swift; sourceTree = "<group>"; };
 		38FEF3FB2737E53800574A46 /* MainStateModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainStateModel.swift; sourceTree = "<group>"; };
+		38FEF3FD2738083E00574A46 /* CGMProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CGMProvider.swift; sourceTree = "<group>"; };
 		39E7C997E56DAF8D28D09014 /* AddCarbsStateModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AddCarbsStateModel.swift; sourceTree = "<group>"; };
 		3BDEA2DC60EDE0A3CA54DC73 /* TargetsEditorProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TargetsEditorProvider.swift; sourceTree = "<group>"; };
 		3BF768BD6264FF7D71D66767 /* NightscoutConfigProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = NightscoutConfigProvider.swift; sourceTree = "<group>"; };
@@ -1375,8 +1374,7 @@
 			isa = PBXGroup;
 			children = (
 				B9B5C0607505A38F256BF99A /* CGMDataFlow.swift */,
-				0E0D51F68E37921622962DB4 /* CGMProvider.swift */,
-				3856934B270B5E1C0002C50D /* CGMProvider.swift */,
+				38FEF3FD2738083E00574A46 /* CGMProvider.swift */,
 				5C018D1680307A31C9ED7120 /* CGMStateModel.swift */,
 				0D76BBC81CEDC1A0050F45EF /* View */,
 			);
@@ -1644,7 +1642,6 @@
 				3811DE4325C9D4A100A708ED /* SettingsProvider.swift in Sources */,
 				45252C95D220E796FDB3B022 /* ConfigEditorDataFlow.swift in Sources */,
 				3871F38725ED661C0013ECB5 /* Suggestion.swift in Sources */,
-				3856934F270B5E1D0002C50D /* CGMProvider.swift in Sources */,
 				38C4D33A25E9A1ED00D30B77 /* NSObject+AssociatedValues.swift in Sources */,
 				38AAF8712600C1B0004AF583 /* MainChartView.swift in Sources */,
 				72F1BD388F42FCA6C52E4500 /* ConfigEditorProvider.swift in Sources */,
@@ -1666,6 +1663,7 @@
 				A0B8EC8CC5CD1DD237D1BCD2 /* PumpSettingsEditorRootView.swift in Sources */,
 				38EA0600262091870064E39B /* BolusProgressViewStyle.swift in Sources */,
 				389ECDFE2601061500D86C4F /* View+Snapshot.swift in Sources */,
+				38FEF3FE2738083E00574A46 /* CGMProvider.swift in Sources */,
 				38E98A3725F5509500C0CED0 /* String+Extensions.swift in Sources */,
 				385CEAC125F2EA52002D6D5B /* Announcement.swift in Sources */,
 				8B759CFCF47B392BB365C251 /* BasalProfileEditorDataFlow.swift in Sources */,

+ 1 - 1
FreeAPS/Sources/Modules/AddCarbs/AddCarbsStateModel.swift

@@ -1,7 +1,7 @@
 import SwiftUI
 
 extension AddCarbs {
-    class StateModel: BaseStateModel<Provider> {
+    final class StateModel: BaseStateModel<Provider> {
         @Injected() var carbsStorage: CarbsStorage!
         @Injected() var settingsManager: SettingsManager!
         @Injected() var apsManager: APSManager!

+ 1 - 1
FreeAPS/Sources/Modules/AddTempTarget/AddTempTargetStateModel.swift

@@ -1,7 +1,7 @@
 import SwiftUI
 
 extension AddTempTarget {
-    class StateModel: BaseStateModel<Provider> {
+    final class StateModel: BaseStateModel<Provider> {
         @Injected() private var storage: TempTargetsStorage!
         @Injected() private var settingsManager: SettingsManager!
         @Injected() var apsManager: APSManager!

+ 1 - 1
FreeAPS/Sources/Modules/AutotuneConfig/AutotuneConfigStateModel.swift

@@ -2,7 +2,7 @@ import Combine
 import SwiftUI
 
 extension AutotuneConfig {
-    class StateModel: BaseStateModel<Provider> {
+    final class StateModel: BaseStateModel<Provider> {
         @Injected() var settingsManager: SettingsManager!
         @Injected() var apsManager: APSManager!
         @Published var useAutotune = false

+ 1 - 1
FreeAPS/Sources/Modules/BasalProfileEditor/BasalProfileEditorStateModel.swift

@@ -1,7 +1,7 @@
 import SwiftUI
 
 extension BasalProfileEditor {
-    class StateModel: BaseStateModel<Provider> {
+    final class StateModel: BaseStateModel<Provider> {
         @Published var syncInProgress = false
         @Published var items: [Item] = []
 

+ 1 - 1
FreeAPS/Sources/Modules/Bolus/BolusStateModel.swift

@@ -2,7 +2,7 @@ import SwiftUI
 import Swinject
 
 extension Bolus {
-    class StateModel: BaseStateModel<Provider> {
+    final class StateModel: BaseStateModel<Provider> {
         @Injected() var unlockmanager: UnlockManager!
         @Injected() var apsManager: APSManager!
         @Injected() var broadcaster: Broadcaster!

+ 1 - 1
FreeAPS/Sources/Modules/CGM/CGMStateModel.swift

@@ -1,7 +1,7 @@
 import SwiftUI
 
 extension CGM {
-    class StateModel: BaseStateModel<Provider> {
+    final class StateModel: BaseStateModel<Provider> {
         @Injected() var settingsManager: SettingsManager!
 
         @Published var cgm: CGMType = .nightscout

+ 1 - 1
FreeAPS/Sources/Modules/CREditor/CREditorStateModel.swift

@@ -1,7 +1,7 @@
 import SwiftUI
 
 extension CREditor {
-    class StateModel: BaseStateModel<Provider> {
+    final class StateModel: BaseStateModel<Provider> {
         @Published var items: [Item] = []
         @Published var autotune: Autotune?
 

+ 1 - 1
FreeAPS/Sources/Modules/ConfigEditor/ConfigEditorStateModel.swift

@@ -2,7 +2,7 @@ import SwiftUI
 import Swinject
 
 extension ConfigEditor {
-    class StateModel: BaseStateModel<Provider> {
+    final class StateModel: BaseStateModel<Provider> {
         var file: String = ""
         @Published var configText = ""
 

+ 1 - 1
FreeAPS/Sources/Modules/DataTable/DataTableStateModel.swift

@@ -1,7 +1,7 @@
 import SwiftUI
 
 extension DataTable {
-    class StateModel: BaseStateModel<Provider> {
+    final class StateModel: BaseStateModel<Provider> {
         @Injected() var broadcaster: Broadcaster!
         @Injected() var settingsManager: SettingsManager!
         @Published var items: [Item] = []

+ 1 - 1
FreeAPS/Sources/Modules/Home/HomeStateModel.swift

@@ -3,7 +3,7 @@ import SwiftDate
 import SwiftUI
 
 extension Home {
-    class StateModel: BaseStateModel<Provider> {
+    final class StateModel: BaseStateModel<Provider> {
         @Injected() var broadcaster: Broadcaster!
         @Injected() var settingsManager: SettingsManager!
         @Injected() var apsManager: APSManager!

+ 1 - 1
FreeAPS/Sources/Modules/ISFEditor/ISFEditorStateModel.swift

@@ -1,7 +1,7 @@
 import SwiftUI
 
 extension ISFEditor {
-    class StateModel: BaseStateModel<Provider> {
+    final class StateModel: BaseStateModel<Provider> {
         @Injected() var settingsManager: SettingsManager!
         @Published var items: [Item] = []
         private(set) var autosensISF: Decimal?

+ 1 - 1
FreeAPS/Sources/Modules/Main/MainStateModel.swift

@@ -2,7 +2,7 @@ import SwiftUI
 import Swinject
 
 extension Main {
-    class StateModel: BaseStateModel<Provider> {
+    final class StateModel: BaseStateModel<Provider> {
         private(set) var modal: Modal?
         @Published var isModalPresented = false
         @Published var isAlertPresented = false

+ 1 - 1
FreeAPS/Sources/Modules/ManualTempBasal/ManualTempBasalStateModel.swift

@@ -1,7 +1,7 @@
 import SwiftUI
 
 extension ManualTempBasal {
-    class StateModel: BaseStateModel<Provider> {
+    final class StateModel: BaseStateModel<Provider> {
         @Injected() var apsManager: APSManager!
         @Published var rate: Decimal = 0
         @Published var durationIndex = 0

+ 1 - 1
FreeAPS/Sources/Modules/NightscoutConfig/NightscoutConfigStateModel.swift

@@ -2,7 +2,7 @@ import Combine
 import SwiftUI
 
 extension NightscoutConfig {
-    class StateModel: BaseStateModel<Provider> {
+    final class StateModel: BaseStateModel<Provider> {
         @Injected() var keychain: Keychain!
         @Injected() var settingsManager: SettingsManager!
 

+ 1 - 1
FreeAPS/Sources/Modules/PreferencesEditor/PreferencesEditorStateModel.swift

@@ -2,7 +2,7 @@ import Foundation
 import SwiftUI
 
 extension PreferencesEditor {
-    class StateModel: BaseStateModel<Provider>, PreferencesSettable {
+    final class StateModel: BaseStateModel<Provider>, PreferencesSettable {
         @Injected() var settingsManager: SettingsManager!
         private(set) var preferences = Preferences()
         @Published var unitsIndex = 1

+ 1 - 1
FreeAPS/Sources/Modules/PumpConfig/PumpConfigStateModel.swift

@@ -4,7 +4,7 @@ import SwiftDate
 import SwiftUI
 
 extension PumpConfig {
-    class StateModel: BaseStateModel<Provider> {
+    final class StateModel: BaseStateModel<Provider> {
         @Published var setupPump = false
         private(set) var setupPumpType: PumpType = .minimed
         @Published var pumpState: PumpDisplayState?

+ 1 - 1
FreeAPS/Sources/Modules/PumpSettingsEditor/PumpSettingsEditorStateModel.swift

@@ -1,7 +1,7 @@
 import SwiftUI
 
 extension PumpSettingsEditor {
-    class StateModel: BaseStateModel<Provider> {
+    final class StateModel: BaseStateModel<Provider> {
         @Published var maxBasal: Decimal = 0.0
         @Published var maxBolus: Decimal = 0.0
         @Published var dia: Decimal = 0.0

+ 1 - 1
FreeAPS/Sources/Modules/Settings/SettingsStateModel.swift

@@ -1,7 +1,7 @@
 import SwiftUI
 
 extension Settings {
-    class StateModel: BaseStateModel<Provider> {
+    final class StateModel: BaseStateModel<Provider> {
         @Injected() private var settingsManager: SettingsManager!
         @Injected() private var broadcaster: Broadcaster!
         @Injected() private var fileManager: FileManager!

+ 1 - 1
FreeAPS/Sources/Modules/TargetsEditor/TargetsEditorStateModel.swift

@@ -1,7 +1,7 @@
 import SwiftUI
 
 extension TargetsEditor {
-    class StateModel: BaseStateModel<Provider> {
+    final class StateModel: BaseStateModel<Provider> {
         @Injected() var settingsManager: SettingsManager!
         @Published var items: [Item] = []
 

+ 0 - 3
Templates/swift_pvvm/Code/Builder.swift.liquid

@@ -1,3 +0,0 @@
-extension {{ module_info.name }} {
-    final class Builder: BaseModuleBuilder<RootView, ViewModel<Provider>, Provider> {}
-}

+ 0 - 5
Templates/swift_pvvm/Code/DataFlow.swift.liquid

@@ -1,5 +0,0 @@
-enum {{ module_info.name }} {
-	enum Config {}
-}
-
-protocol {{ module_info.name }}Provider: Provider {}

+ 0 - 14
Templates/swift_pvvm/Code/View/RootView.swift.liquid

@@ -1,14 +0,0 @@
-import SwiftUI
-
-extension {{ module_info.name }} {
-    struct RootView: BaseView {
-        @EnvironmentObject var viewModel: ViewModel<Provider>
-
-        var body: some View {
-            Text("{{ module_info.name }} screen")
-            	.navigationTitle("{{ module_info.name }}")
-            	.navigationBarTitleDisplayMode(.automatic)
-                .navigationBarItems(leading: Button("Close", action: viewModel.hideModal))
-        }
-    }
-}

+ 0 - 7
Templates/swift_pvvm/Code/ViewModel.swift.liquid

@@ -1,7 +0,0 @@
-import SwiftUI
-
-extension {{ module_info.name }} {
-    class ViewModel<Provider>: BaseViewModel<Provider>, ObservableObject where Provider: {{ module_info.name }}Provider {
-    	override func subscribe() {}
-    }
-}

+ 5 - 0
Templates/unit/Code/DataFlow.swift.liquid

@@ -0,0 +1,5 @@
+enum {{ module_info.name }} {
+    enum Config {}
+}
+
+protocol {{ module_info.name }}Provider {}

Templates/swift_pvvm/Code/Provider.swift.liquid → Templates/unit/Code/Provider.swift.liquid


+ 7 - 0
Templates/unit/Code/StateModel.swift.liquid

@@ -0,0 +1,7 @@
+import SwiftUI
+
+extension {{ module_info.name }} {
+    final class StateModel: BaseStateModel<Provider> {
+        override func subscribe() {}
+    }
+}

+ 14 - 0
Templates/unit/Code/View/RootView.swift.liquid

@@ -0,0 +1,14 @@
+import SwiftUI
+import Swinject
+
+extension {{ module_info.name }} {
+    struct RootView: BaseView {
+        let resolver: Resolver
+        @StateObject var state = StateModel()
+
+        var body: some View {
+            Text("{{ module_info.name }} root view")
+            .onAppear(perform: configureView)
+        }
+    }
+}

+ 3 - 13
Templates/swift_pvvm/swift_pvvm.rambaspec

@@ -1,23 +1,13 @@
 # Template information section
-name: "freeaps_pvvm"
-summary: "PVVM module template for SwiftUI. Used in FreeAPS."
+name: "unit"
+summary: "Module template for SwiftUI."
 author: "Ivan Valkou"
 version: "1.0"
 license: "MIT"
 
 # The declarations for code files
 code_files:
-- {name: Builder.swift, path: Code/Builder.swift.liquid}
 - {name: DataFlow.swift, path: Code/DataFlow.swift.liquid}
 - {name: Provider.swift, path: Code/Provider.swift.liquid}
-- {name: ViewModel.swift, path: Code/ViewModel.swift.liquid}
+- {name: StateModel.swift, path: Code/StateModel.swift.liquid}
 - {name: View/RootView.swift, path: Code/View/RootView.swift.liquid}
-
-
-# The declarations for test files
-test_files:
-
-# Template dependencies
-dependencies:
-- Swinject
-- Moya