diff --git a/src/lib/days.lua b/src/lib/days.lua index 29e2826..06dd9b6 100644 --- a/src/lib/days.lua +++ b/src/lib/days.lua @@ -10,6 +10,15 @@ local CHOICES = { main = "Back to main menu" } +local PUZZLE_BASE = [[local puzzle%d = {} + +function puzzle%d.solve(input) + return 0 +end + +return puzzle%d +]] + ---@class Day ---@field day integer ---@field title string? @@ -102,20 +111,10 @@ end function Day:createFiles() local srcDir = self:srcDir() fs.makeDir(srcDir) - local files = { - srcDir .. "/puzzle1.lua", - srcDir .. "/puzzle2.lua", - self:examplePath(), - self:inputPath() - } - for _, path in ipairs(files) do - local f = fs.open(path, "a") - if f then - f.close() - else - printError("Could not create file " .. path) - end - end + utils.writeFile(srcDir .. "/puzzle1.lua", PUZZLE_BASE:format(1, 1, 1)) + utils.writeFile(srcDir .. "/puzzle2.lua", PUZZLE_BASE:format(2, 2, 2)) + utils.writeFile(self:examplePath(), "") + utils.writeFile(self:inputPath(), "") end function Day:getExampleData(suffix) diff --git a/src/lib/utils.lua b/src/lib/utils.lua index 48f2eaf..ea363b1 100644 --- a/src/lib/utils.lua +++ b/src/lib/utils.lua @@ -41,6 +41,21 @@ function utils.readFile(path) return data end +function utils.writeFile(path, content, overwrite) + overwrite = overwrite or false + if not overwrite and fs.exists(path) then + return true + end + local f = fs.open(path, "w") + if not f then + printError("Could not open file " .. path) + return false + end + f.write(content) + f.close() + return true +end + function utils.waitForKey(targetKey) if targetKey then print("Press " .. keys.getName(targetKey):upper() .. " to continue")