commit 134c520c2ff42438ad8e318ba3dec1e06fdd0205 Author: TheHomecraft Date: Fri Aug 1 20:33:36 2025 +0200 init diff --git a/main.lua b/main.lua new file mode 100644 index 0000000..b73b8c8 --- /dev/null +++ b/main.lua @@ -0,0 +1,97 @@ +local args = { ... } +local packageStoreageUrl = "/packages" + + +if args[1] == "list" then + local res = http.get("http://localhost:7000/api/repo/list") + local ds = res.readAll() + print(ds) + local json = textutils.unserializeJSON(ds) + print(json.name) +end + +if args[1] == "install" then + if args[2] ~= nil then + if fs.exists(packageStoreageUrl .. "/" .. args[2]) then + print("Package already installed!") + return; + end + local ws, stat = http.websocket("ws://192.168.178.24:7000/repo/install") + local msg = { + repoName = args[2] + } + ws.send(textutils.serializeJSON(msg)) + local full = 0 + local chunks = {} + local received = {} + + + while true do + local msg = ws.receive() + local id, indexMeta, chunk = msg:match("([^|]+)|([^|]+)|(.+)") + local index, total = indexMeta:match("(%d+)/(%d+)") + index = tonumber(index) + total = tonumber(total) + + if not chunks[id] then + chunks[id] = { total = total, parts = {} } + end + + chunks[id].parts[index + 1] = chunk + + -- Check if complete + local allReceived = true + for i = 1, total do + if not chunks[id].parts[i] then + allReceived = false + break + end + end + + if allReceived and not received[id] then + received[id] = true + full = table.concat(chunks[id].parts) + print("Message received") + break + end + end + -------------- + local rec_msg = full + print(rec_msg .. "ds") + local file = fs.open("output.json", "w") + file.write(rec_msg) + file.close() + local json = textutils.unserializeJSON(rec_msg) + print(json) + if json.statusCode == 404 then + print("The Requested package was not found!") + return + end + for k, v in pairs(json) do + local path = packageStoreageUrl .. v.relativePath + if fs.exists(path) then + print("File " .. path .. " already exists!") + return + end + shell.run("wget", v.downloadUrl, path) + end + else + print("Please enter a package name!") + return + end +end + +if args[1] == "remove" then + if args[2] ~= nil then + if fs.exists(packageStoreageUrl .. "/" .. args[2]) then + fs.delete(packageStoreageUrl .. "/" .. args[2]) + print(args[2] .. " Was removed from your system!") + else + print("No such package installed/found!") + return + end + else + print("Please enter a package name!") + return + end +end \ No newline at end of file