From 6dac45b05f8597720405cb1f79a9487bc25c8791 Mon Sep 17 00:00:00 2001 From: Rivulet Date: Mon, 6 Apr 2026 22:06:05 -0700 Subject: [PATCH] install script --- install.lua | 31 +++++++++++++++++++ scan.lua | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 118 insertions(+) create mode 100644 install.lua create mode 100644 scan.lua diff --git a/install.lua b/install.lua new file mode 100644 index 0000000..321645f --- /dev/null +++ b/install.lua @@ -0,0 +1,31 @@ +local expect = require "cc.expect".expect +local base_url = "https://git.cadencoaster.com/Ruffles/smithy-overlay/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..ba6d741 --- /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-overlay/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