Skip to content

Commit 093a74e

Browse files
Move Xcode templates dependency to initializer (#592)
1 parent 2269053 commit 093a74e

File tree

2 files changed

+25
-22
lines changed

2 files changed

+25
-22
lines changed

Sources/NodesXcodeTemplatesGenerator/XcodeTemplates.swift

+23-20
Original file line numberDiff line numberDiff line change
@@ -6,27 +6,19 @@ import Foundation
66

77
public final class XcodeTemplates {
88

9-
private let templates: [XcodeTemplate]
9+
private let config: Config
10+
private let fileSystem: FileSystem
1011

11-
public init(config: Config) {
12-
var templates: [XcodeTemplate] = UIFramework.Kind
13-
.allCases
14-
.compactMap { try? NodeXcodeTemplate(for: $0, config: config) }
15-
if config.isViewInjectedTemplateEnabled {
16-
templates.append(NodeViewInjectedXcodeTemplate(config: config))
17-
}
18-
templates += [
19-
PluginListNodeXcodeTemplate(config: config),
20-
PluginNodeXcodeTemplate(config: config),
21-
PluginXcodeTemplate(config: config),
22-
WorkerXcodeTemplate(config: config)
23-
]
24-
self.templates = templates
12+
public init(
13+
config: Config,
14+
fileSystem: FileSystem = FileManager.default
15+
) {
16+
self.config = config
17+
self.fileSystem = fileSystem
2518
}
2619

2720
public func generate(
28-
identifier: String,
29-
using fileSystem: FileSystem = FileManager.default
21+
identifier: String
3022
) throws {
3123
let url: URL = fileSystem.libraryURL
3224
.appendingPathComponent("Developer")
@@ -35,13 +27,24 @@ public final class XcodeTemplates {
3527
.appendingPathComponent("File Templates")
3628
.appendingPathComponent("Nodes Architecture Framework (\(identifier))")
3729
try? fileSystem.removeItem(at: url)
38-
try generate(at: url, using: fileSystem)
30+
try generate(at: url)
3931
}
4032

4133
public func generate(
42-
at url: URL,
43-
using fileSystem: FileSystem = FileManager.default
34+
at url: URL
4435
) throws {
36+
var templates: [XcodeTemplate] = UIFramework.Kind
37+
.allCases
38+
.compactMap { try? NodeXcodeTemplate(for: $0, config: config) }
39+
if config.isViewInjectedTemplateEnabled {
40+
templates.append(NodeViewInjectedXcodeTemplate(config: config))
41+
}
42+
templates += [
43+
PluginListNodeXcodeTemplate(config: config),
44+
PluginNodeXcodeTemplate(config: config),
45+
PluginXcodeTemplate(config: config),
46+
WorkerXcodeTemplate(config: config)
47+
]
4548
let generator: XcodeTemplateGenerator = .init(fileSystem: fileSystem)
4649
try templates.forEach { try generator.generate(template: $0, into: url) }
4750
}

Tests/NodesXcodeTemplatesGeneratorTests/XcodeTemplatesTests.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ final class XcodeTemplatesTests: XCTestCase {
99

1010
func testGenerateWithIdentifier() throws {
1111
let fileSystem: FileSystemMock = .init()
12-
try XcodeTemplates(config: givenConfig()).generate(identifier: "identifier", using: fileSystem)
12+
try XcodeTemplates(config: givenConfig(), fileSystem: fileSystem).generate(identifier: "identifier")
1313
// swiftlint:disable:next large_tuple
1414
let writes: [(contents: String, path: String, atomically: Bool)] = fileSystem.writes
1515
writes.forEach { assertSnapshot(of: $0.contents, as: .lines, named: "Contents.\(name(from: $0.path))") }
@@ -22,7 +22,7 @@ final class XcodeTemplatesTests: XCTestCase {
2222
func testGenerateWithURL() throws {
2323
let fileSystem: FileSystemMock = .init()
2424
let url: URL = .init(fileURLWithPath: "/")
25-
try XcodeTemplates(config: givenConfig()).generate(at: url, using: fileSystem)
25+
try XcodeTemplates(config: givenConfig(), fileSystem: fileSystem).generate(at: url)
2626
// swiftlint:disable:next large_tuple
2727
let writes: [(contents: String, path: String, atomically: Bool)] = fileSystem.writes
2828
writes.forEach { assertSnapshot(of: $0.contents, as: .lines, named: "Contents.\(name(from: $0.path))") }

0 commit comments

Comments
 (0)