Skip to content

Commit ed61a43

Browse files
Add config for interface imports (#908)
1 parent 3229eb6 commit ed61a43

22 files changed

+62
-22
lines changed

Sources/NodesGenerator/Config.swift

+5
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ public struct Config: Codable, Equatable {
3838
public var dependencyInjectionImports: Set<String>
3939
public var builderImports: Set<String>
4040
public var flowImports: Set<String>
41+
public var interfaceImports: Set<String>
4142
public var pluginListImports: Set<String>
4243
public var viewControllerImports: Set<String>
4344
public var dependencies: [Variable]
@@ -94,6 +95,7 @@ extension Config {
9495
dependencyInjectionImports = ["NeedleFoundation"]
9596
builderImports = []
9697
flowImports = []
98+
interfaceImports = []
9799
pluginListImports = []
98100
viewControllerImports = []
99101
dependencies = []
@@ -168,6 +170,9 @@ extension Config {
168170
flowImports =
169171
(try? decoder.decode(CodingKeys.flowImports))
170172
?? defaults.flowImports
173+
interfaceImports =
174+
(try? decoder.decode(CodingKeys.interfaceImports))
175+
?? defaults.interfaceImports
171176
pluginListImports =
172177
(try? decoder.decode(CodingKeys.pluginListImports))
173178
?? defaults.pluginListImports

Sources/NodesGenerator/StencilTemplate.swift

+1
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,7 @@ public enum StencilTemplate: CustomStringConvertible, Equatable, Sendable {
287287
case .interface:
288288
config.baseImports
289289
.union(["Nodes"])
290+
.union(config.interfaceImports)
290291
case .plugin:
291292
config.baseImports
292293
.union(["Nodes"])

Tests/NodesGeneratorTests/ConfigTests.swift

+3
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,9 @@ final class ConfigTests: XCTestCase, TestFactories {
157157
flowImports:
158158
- <flowImports-1>
159159
- <flowImports-2>
160+
interfaceImports:
161+
- <interfaceImports-1>
162+
- <interfaceImports-2>
160163
pluginListImports:
161164
- <pluginListImports-1>
162165
- <pluginListImports-2>

Tests/NodesGeneratorTests/StencilTemplateTests.swift

+2
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,7 @@ final class StencilTemplateTests: XCTestCase, TestFactories {
341341
case .interface:
342342
expect(imports) == [
343343
"<baseImport>",
344+
"<interfaceImport>",
344345
"Nodes"
345346
]
346347
case .plugin:
@@ -466,6 +467,7 @@ final class StencilTemplateTests: XCTestCase, TestFactories {
466467
case .interface:
467468
expect(imports) == [
468469
"<baseImport>",
470+
"<interfaceImport>",
469471
"Nodes"
470472
]
471473
case .plugin:

Tests/NodesGeneratorTests/Support/TestFactories.swift

+1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ extension TestFactories {
3434
config.dependencyInjectionImports = ["<dependencyInjectionImport>"]
3535
config.builderImports = ["<builderImport>"]
3636
config.flowImports = ["<flowImport>"]
37+
config.interfaceImports = ["<interfaceImport>"]
3738
config.pluginListImports = ["<pluginListImport>"]
3839
config.viewControllerImports = ["<viewControllerImport>"]
3940
config.dependencies = [Variable(name: "<dependencyName>", type: "<dependencyType>")]

Tests/NodesGeneratorTests/__Snapshots__/ConfigTests/testConfig.1.txt

+3
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@
3838
▿ Variable
3939
- name: "<flowProperties-name-2>"
4040
- type: "<flowProperties-type-2>"
41+
▿ interfaceImports: 2 members
42+
- "<interfaceImports-1>"
43+
- "<interfaceImports-2>"
4144
- isObservableStoreEnabled: false
4245
- isPeripheryCommentEnabled: true
4346
- isPreviewProviderEnabled: true

Tests/NodesGeneratorTests/__Snapshots__/ConfigTests/testConfigWithEmptyFileContents.1.txt

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
- "NeedleFoundation"
1313
- flowImports: 0 members
1414
- flowProperties: 0 elements
15+
- interfaceImports: 0 members
1516
- isObservableStoreEnabled: false
1617
- isPeripheryCommentEnabled: false
1718
- isPreviewProviderEnabled: false

Tests/NodesGeneratorTests/__Snapshots__/ConfigTests/testDecodingFromEmptyString.1.txt

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
- "NeedleFoundation"
1313
- flowImports: 0 members
1414
- flowProperties: 0 elements
15+
- interfaceImports: 0 members
1516
- isObservableStoreEnabled: false
1617
- isPeripheryCommentEnabled: false
1718
- isPreviewProviderEnabled: false

Tests/NodesGeneratorTests/__Snapshots__/ConfigTests/testDecodingWithEmptyArray.1.txt

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
- "NeedleFoundation"
1313
- flowImports: 0 members
1414
- flowProperties: 0 elements
15+
- interfaceImports: 0 members
1516
- isObservableStoreEnabled: false
1617
- isPeripheryCommentEnabled: false
1718
- isPreviewProviderEnabled: false

Tests/NodesGeneratorTests/__Snapshots__/XcodeTemplatePermutationTests/testNodeViewInjectedXcodeTemplatePermutation.1.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,9 @@
5555
- value: "<flowPropertyType>"
5656
▿ flowTestsImports: 1 element
5757
- "<baseTestImport>"
58-
▿ interfaceImports: 2 elements
58+
▿ interfaceImports: 3 elements
5959
- "<baseImport>"
60+
- "<interfaceImport>"
6061
- "Nodes"
6162
- isNimbleEnabled: false
6263
- isPeripheryCommentEnabled: true

Tests/NodesGeneratorTests/__Snapshots__/XcodeTemplatePermutationTests/testNodeXcodeTemplatePermutation.AppKit-SwiftUI-CreatedForPluginList.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,9 @@
5656
- value: "<flowPropertyType>"
5757
▿ flowTestsImports: 1 element
5858
- "<baseTestImport>"
59-
▿ interfaceImports: 2 elements
59+
▿ interfaceImports: 3 elements
6060
- "<baseImport>"
61+
- "<interfaceImport>"
6162
- "Nodes"
6263
- isNimbleEnabled: false
6364
- isPeripheryCommentEnabled: true

Tests/NodesGeneratorTests/__Snapshots__/XcodeTemplatePermutationTests/testNodeXcodeTemplatePermutation.AppKit-SwiftUI.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,9 @@
5656
- value: "<flowPropertyType>"
5757
▿ flowTestsImports: 1 element
5858
- "<baseTestImport>"
59-
▿ interfaceImports: 2 elements
59+
▿ interfaceImports: 3 elements
6060
- "<baseImport>"
61+
- "<interfaceImport>"
6162
- "Nodes"
6263
- isNimbleEnabled: false
6364
- isPeripheryCommentEnabled: true

Tests/NodesGeneratorTests/__Snapshots__/XcodeTemplatePermutationTests/testNodeXcodeTemplatePermutation.AppKit.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,9 @@
5656
- value: "<flowPropertyType>"
5757
▿ flowTestsImports: 1 element
5858
- "<baseTestImport>"
59-
▿ interfaceImports: 2 elements
59+
▿ interfaceImports: 3 elements
6060
- "<baseImport>"
61+
- "<interfaceImport>"
6162
- "Nodes"
6263
- isNimbleEnabled: false
6364
- isPeripheryCommentEnabled: true

Tests/NodesGeneratorTests/__Snapshots__/XcodeTemplatePermutationTests/testNodeXcodeTemplatePermutation.AppKitCreatedForPluginList.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,9 @@
5656
- value: "<flowPropertyType>"
5757
▿ flowTestsImports: 1 element
5858
- "<baseTestImport>"
59-
▿ interfaceImports: 2 elements
59+
▿ interfaceImports: 3 elements
6060
- "<baseImport>"
61+
- "<interfaceImport>"
6162
- "Nodes"
6263
- isNimbleEnabled: false
6364
- isPeripheryCommentEnabled: true

Tests/NodesGeneratorTests/__Snapshots__/XcodeTemplatePermutationTests/testNodeXcodeTemplatePermutation.Custom.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,9 @@
5656
- value: "<flowPropertyType>"
5757
▿ flowTestsImports: 1 element
5858
- "<baseTestImport>"
59-
▿ interfaceImports: 2 elements
59+
▿ interfaceImports: 3 elements
6060
- "<baseImport>"
61+
- "<interfaceImport>"
6162
- "Nodes"
6263
- isNimbleEnabled: false
6364
- isPeripheryCommentEnabled: true

Tests/NodesGeneratorTests/__Snapshots__/XcodeTemplatePermutationTests/testNodeXcodeTemplatePermutation.CustomCreatedForPluginList.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,9 @@
5656
- value: "<flowPropertyType>"
5757
▿ flowTestsImports: 1 element
5858
- "<baseTestImport>"
59-
▿ interfaceImports: 2 elements
59+
▿ interfaceImports: 3 elements
6060
- "<baseImport>"
61+
- "<interfaceImport>"
6162
- "Nodes"
6263
- isNimbleEnabled: false
6364
- isPeripheryCommentEnabled: true

Tests/NodesGeneratorTests/__Snapshots__/XcodeTemplatePermutationTests/testNodeXcodeTemplatePermutation.UIKit-SwiftUI-CreatedForPluginList.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,9 @@
5656
- value: "<flowPropertyType>"
5757
▿ flowTestsImports: 1 element
5858
- "<baseTestImport>"
59-
▿ interfaceImports: 2 elements
59+
▿ interfaceImports: 3 elements
6060
- "<baseImport>"
61+
- "<interfaceImport>"
6162
- "Nodes"
6263
- isNimbleEnabled: false
6364
- isPeripheryCommentEnabled: true

Tests/NodesGeneratorTests/__Snapshots__/XcodeTemplatePermutationTests/testNodeXcodeTemplatePermutation.UIKit-SwiftUI.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,9 @@
5656
- value: "<flowPropertyType>"
5757
▿ flowTestsImports: 1 element
5858
- "<baseTestImport>"
59-
▿ interfaceImports: 2 elements
59+
▿ interfaceImports: 3 elements
6060
- "<baseImport>"
61+
- "<interfaceImport>"
6162
- "Nodes"
6263
- isNimbleEnabled: false
6364
- isPeripheryCommentEnabled: true

Tests/NodesGeneratorTests/__Snapshots__/XcodeTemplatePermutationTests/testNodeXcodeTemplatePermutation.UIKit.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,9 @@
5656
- value: "<flowPropertyType>"
5757
▿ flowTestsImports: 1 element
5858
- "<baseTestImport>"
59-
▿ interfaceImports: 2 elements
59+
▿ interfaceImports: 3 elements
6060
- "<baseImport>"
61+
- "<interfaceImport>"
6162
- "Nodes"
6263
- isNimbleEnabled: false
6364
- isPeripheryCommentEnabled: true

Tests/NodesGeneratorTests/__Snapshots__/XcodeTemplatePermutationTests/testNodeXcodeTemplatePermutation.UIKitCreatedForPluginList.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,9 @@
5656
- value: "<flowPropertyType>"
5757
▿ flowTestsImports: 1 element
5858
- "<baseTestImport>"
59-
▿ interfaceImports: 2 elements
59+
▿ interfaceImports: 3 elements
6060
- "<baseImport>"
61+
- "<interfaceImport>"
6162
- "Nodes"
6263
- isNimbleEnabled: false
6364
- isPeripheryCommentEnabled: true

Tests/NodesGeneratorTests/__Snapshots__/XcodeTemplateTests/testNodeViewInjectedXcodeTemplate.1.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,9 @@
5858
- value: "<flowPropertyType>"
5959
▿ flowTestsImports: 1 element
6060
- "<baseTestImport>"
61-
▿ interfaceImports: 2 elements
61+
▿ interfaceImports: 3 elements
6262
- "<baseImport>"
63+
- "<interfaceImport>"
6364
- "Nodes"
6465
- isNimbleEnabled: false
6566
- isPeripheryCommentEnabled: true

Tests/NodesGeneratorTests/__Snapshots__/XcodeTemplateTests/testNodeXcodeTemplate.1.txt

+20-10
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,9 @@
5959
- value: "<flowPropertyType>"
6060
▿ flowTestsImports: 1 element
6161
- "<baseTestImport>"
62-
▿ interfaceImports: 2 elements
62+
▿ interfaceImports: 3 elements
6363
- "<baseImport>"
64+
- "<interfaceImport>"
6465
- "Nodes"
6566
- isNimbleEnabled: false
6667
- isPeripheryCommentEnabled: true
@@ -193,8 +194,9 @@
193194
- value: "<flowPropertyType>"
194195
▿ flowTestsImports: 1 element
195196
- "<baseTestImport>"
196-
▿ interfaceImports: 2 elements
197+
▿ interfaceImports: 3 elements
197198
- "<baseImport>"
199+
- "<interfaceImport>"
198200
- "Nodes"
199201
- isNimbleEnabled: false
200202
- isPeripheryCommentEnabled: true
@@ -327,8 +329,9 @@
327329
- value: "<flowPropertyType>"
328330
▿ flowTestsImports: 1 element
329331
- "<baseTestImport>"
330-
▿ interfaceImports: 2 elements
332+
▿ interfaceImports: 3 elements
331333
- "<baseImport>"
334+
- "<interfaceImport>"
332335
- "Nodes"
333336
- isNimbleEnabled: false
334337
- isPeripheryCommentEnabled: true
@@ -461,8 +464,9 @@
461464
- value: "<flowPropertyType>"
462465
▿ flowTestsImports: 1 element
463466
- "<baseTestImport>"
464-
▿ interfaceImports: 2 elements
467+
▿ interfaceImports: 3 elements
465468
- "<baseImport>"
469+
- "<interfaceImport>"
466470
- "Nodes"
467471
- isNimbleEnabled: false
468472
- isPeripheryCommentEnabled: true
@@ -595,8 +599,9 @@
595599
- value: "<flowPropertyType>"
596600
▿ flowTestsImports: 1 element
597601
- "<baseTestImport>"
598-
▿ interfaceImports: 2 elements
602+
▿ interfaceImports: 3 elements
599603
- "<baseImport>"
604+
- "<interfaceImport>"
600605
- "Nodes"
601606
- isNimbleEnabled: false
602607
- isPeripheryCommentEnabled: true
@@ -729,8 +734,9 @@
729734
- value: "<flowPropertyType>"
730735
▿ flowTestsImports: 1 element
731736
- "<baseTestImport>"
732-
▿ interfaceImports: 2 elements
737+
▿ interfaceImports: 3 elements
733738
- "<baseImport>"
739+
- "<interfaceImport>"
734740
- "Nodes"
735741
- isNimbleEnabled: false
736742
- isPeripheryCommentEnabled: true
@@ -863,8 +869,9 @@
863869
- value: "<flowPropertyType>"
864870
▿ flowTestsImports: 1 element
865871
- "<baseTestImport>"
866-
▿ interfaceImports: 2 elements
872+
▿ interfaceImports: 3 elements
867873
- "<baseImport>"
874+
- "<interfaceImport>"
868875
- "Nodes"
869876
- isNimbleEnabled: false
870877
- isPeripheryCommentEnabled: true
@@ -997,8 +1004,9 @@
9971004
- value: "<flowPropertyType>"
9981005
▿ flowTestsImports: 1 element
9991006
- "<baseTestImport>"
1000-
▿ interfaceImports: 2 elements
1007+
▿ interfaceImports: 3 elements
10011008
- "<baseImport>"
1009+
- "<interfaceImport>"
10021010
- "Nodes"
10031011
- isNimbleEnabled: false
10041012
- isPeripheryCommentEnabled: true
@@ -1131,8 +1139,9 @@
11311139
- value: "<flowPropertyType>"
11321140
▿ flowTestsImports: 1 element
11331141
- "<baseTestImport>"
1134-
▿ interfaceImports: 2 elements
1142+
▿ interfaceImports: 3 elements
11351143
- "<baseImport>"
1144+
- "<interfaceImport>"
11361145
- "Nodes"
11371146
- isNimbleEnabled: false
11381147
- isPeripheryCommentEnabled: true
@@ -1265,8 +1274,9 @@
12651274
- value: "<flowPropertyType>"
12661275
▿ flowTestsImports: 1 element
12671276
- "<baseTestImport>"
1268-
▿ interfaceImports: 2 elements
1277+
▿ interfaceImports: 3 elements
12691278
- "<baseImport>"
1279+
- "<interfaceImport>"
12701280
- "Nodes"
12711281
- isNimbleEnabled: false
12721282
- isPeripheryCommentEnabled: true

0 commit comments

Comments
 (0)