Implemented the RenderFilesTask task in the library target.

This commit is contained in:
Javier Cicchelli 2025-02-08 12:55:31 +01:00
parent 5f5f902773
commit 94e6070091
4 changed files with 44 additions and 13 deletions

View File

@ -1,4 +1,4 @@
public struct Project { public struct Project: Sendable {
// MARK: Properties // MARK: Properties

View File

@ -0,0 +1,34 @@
import Foundation
public struct RenderFilesTask {
// MARK: Computed
private let fileService: FileServicing
private let templateService: TemplateServicing
// MARK: Initialisers
public init(
fileService: FileServicing,
templateService: TemplateServicing
) {
self.fileService = fileService
self.templateService = templateService
}
// MARK: Functions
public func callAsFunction(
at rootFolder: URL,
with model: Project
) async throws {
for template in Template.allCases {
let content = try await templateService.render(model, on: template.rawValue)
let fileURL = rootFolder.appendingPath(template.filePath)
try await fileService.createFile(at: fileURL, with: Data(content.utf8))
}
}
}

View File

@ -59,6 +59,5 @@ private extension TemplateTests {
.testCasesPublic, .testCasesPublic,
.root, .root,
] ]
} }
} }

View File

@ -4,17 +4,15 @@ import Testing
@testable import ColibriLibrary @testable import ColibriLibrary
struct InitGitInFolderTaskTests { struct InitGitInFolderTaskTests {
// MARK: Properties // MARK: Functions tests
private let spy = TerminalServiceSpy()
// MARK:
@Test(arguments: [URL.someCurrentFolder, .someNewFolder, .someDotFolder, .someTildeFolder]) @Test(arguments: [URL.someCurrentFolder, .someNewFolder, .someDotFolder, .someTildeFolder])
func task(at rootFolder: URL) async throws { func task(at rootFolder: URL) async throws {
// GIVEN // GIVEN
let initGitInFolder = InitGitInFolderTask(terminalService: spy) let terminalService = TerminalServiceSpy()
let initGitInFolder = InitGitInFolderTask(terminalService: terminalService)
// WHEN // WHEN
try await initGitInFolder(at: rootFolder) try await initGitInFolder(at: rootFolder)
@ -23,10 +21,10 @@ struct InitGitInFolderTaskTests {
let executableURL = URL(at: "/usr/bin/git") let executableURL = URL(at: "/usr/bin/git")
let pathFolder = rootFolder.pathString let pathFolder = rootFolder.pathString
#expect(spy.actions.count == 3) #expect(terminalService.actions.count == 3)
#expect(spy.actions[0] == .ran(executableURL, ["init", pathFolder])) #expect(terminalService.actions[0] == .ran(executableURL, ["init", pathFolder]))
#expect(spy.actions[1] == .ran(executableURL, ["-C", pathFolder, "add", "."])) #expect(terminalService.actions[1] == .ran(executableURL, ["-C", pathFolder, "add", "."]))
#expect(spy.actions[2] == .ran(executableURL, ["-C", pathFolder, "commit", "-m", "Initial commit"])) #expect(terminalService.actions[2] == .ran(executableURL, ["-C", pathFolder, "commit", "-m", "Initial commit"]))
} }
} }