From 9fa7df1085c3b1140a90cc5fb236f1d855504d62 Mon Sep 17 00:00:00 2001 From: Rivulet Date: Mon, 6 Apr 2026 22:05:20 -0700 Subject: [PATCH] install script --- .vscode/settings.json | 12 ++++++ install.lua | 31 +++++++++++++++ scan.lua | 87 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 130 insertions(+) create mode 100644 .vscode/settings.json create mode 100644 install.lua create mode 100644 scan.lua diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..189b675 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,12 @@ +{ + "Lua.workspace.library": [ + "/home/ruffles/.vscode/extensions/pawz.polytoria-lua-1.1.1/api", + "${addons}/cc-tweaked/module/library" + ], + "Lua.runtime.version": "Lua 5.3", + "Lua.runtime.builtin": { + "io": "disable", + "os": "disable" + }, + "Lua.workspace.checkThirdParty": false +} \ No newline at end of file diff --git a/install.lua b/install.lua new file mode 100644 index 0000000..da4969b --- /dev/null +++ b/install.lua @@ -0,0 +1,31 @@ +local expect = require "cc.expect".expect +local base_url = "https://git.cadencoaster.com/Ruffles/smithy-printer/raw/branch/main/" +local function download_to(path) + expect(2, path, "string") + term.write(path) + if not http.checkURL(base_url..path) then error("URL is not valid" ,2) end + local data = http.get(base_url..path).readAll() + fs.makeDir(fs.getDir(path)) + local file = fs.open(path,"w") + if not file then error("Failed to open file", 2) end + file.write(data) + file.close() + print(" OK") +end + +local filesystem = { + files = { + "transforms.lua", + "startup.lua", + "libs/entrypointlib.lua", + "stratumDBlib.lua", + "meshnetBackend.lua", + }, + dirs = {}, +}for _,i in ipairs(filesystem.dirs) do + print("making dir",i) + fs.makeDir(i) +end +for _,i in ipairs(filesystem.files) do + download_to(i) +end diff --git a/scan.lua b/scan.lua new file mode 100644 index 0000000..e9576a0 --- /dev/null +++ b/scan.lua @@ -0,0 +1,87 @@ +local exceptions = { + ["/scan.lua"] = true, + ["scan.lua"] = true, + ["/install.lua"] = true, + ["install.lua"] = true, + ["/.settings"] = true, + [".settings"] = true, + ["/.git"] = true, + [".git"] = true, + ["/rom"] = true, + ["rom"] = true, + ["/scan.dat"] = true, + ["scan.dat"] = true, + ["/.gitignore"] = true, + [".gitignore"] = true, + ["/default_apps"] = true, + ["default_apps"] = true, + [".vscode"] = true, + ["/.vscode"] = true +} +local function scan(dir) + local out = {} + for _,i in ipairs(fs.list(dir)) do + local path = fs.combine(dir,i) + if exceptions[path] == nil then + if fs.isDir(path) then + out[i] = scan(path) + else + local file = fs.open(path,"r") + out[i] = file.readAll() + file.close() + end + end + end + return out +end +local function format(scandata) + local format_data = { + files = {}, + dirs = {} + } + local function scan_format(dir,data) + if type(data) == "table" then + local has_scanned = false + for k,v in pairs(data) do + has_scanned = true + scan_format(fs.combine(dir,k),v) + end + if not has_scanned then + format_data.dirs[#format_data.dirs+1] = dir + end + else + format_data.files[#format_data.files+1] = dir + end + end + scan_format("/",scandata) + return format_data +end +local textdata = textutils.serialise(format(scan("/"))) +local firstpart = [[local expect = require "cc.expect".expect +local base_url = "https://git.cadencoaster.com/Ruffles/smithy-printer/raw/branch/main/" +local function download_to(path) + expect(2, path, "string") + term.write(path) + if not http.checkURL(base_url..path) then error("URL is not valid" ,2) end + local data = http.get(base_url..path).readAll() + fs.makeDir(fs.getDir(path)) + local file = fs.open(path,"w") + if not file then error("Failed to open file", 2) end + file.write(data) + file.close() + print(" OK") +end + +local filesystem = ]] +local secondpart = [[ +for _,i in ipairs(filesystem.dirs) do + print("making dir",i) + fs.makeDir(i) +end +for _,i in ipairs(filesystem.files) do + download_to(i) +end +]] +local outfile = fs.open("install.lua","w") +outfile.write(firstpart..textdata..secondpart) +outfile.close() \ No newline at end of file