By Guest

Unnamed Paste

Auto Detect 4.88 KiB 15 12 days ago
-- this file can download the project or other tools from github local args = table.pack(...) -- Creates a filetree based on my github project, ofc you can use this in your projects if you'd like to local function createTree(page) local tree = {} local request = http.get(page) if not(page)then return end if(request==nil)then error("To many requests! You have to wait a couple of hours.") end for _,v in pairs(textutils.unserialiseJSON(request.readAll()).tree)do if(v.type=="blob")then table.insert(tree, v.path) elseif(v.type=="tree")then tree[v.path] = createTree(page.."/"..v.path) end end return tree end local function splitString(str, sep) if sep == nil then sep = "%s" end local t={} for v in string.gmatch(str, "([^"..sep.."]+)") do table.insert(t, v) end return t end local function download(url, file) print("Downloading "..url) local httpReq = http.get(url) if(httpReq~=nil)then local content = httpReq.readAll() if not content then error("Could not connect to website") end local f =, "w") f.write(content) f.close() end end local function downloadProject(dir, ignoreList) local projTree = createTree("") local projectFiles = {base={}} local function isFileInIgnoreList(folder, file) if(ignoreList~=nil)then if(ignoreList[folder]~=nil)then for k,v in pairs(ignoreList[folder])do if(v==file)then return true end end end end return false end for k,v in pairs(projTree)do if(k=="objects")then projectFiles.objects = {} for a,b in pairs(v)do if not(isFileInIgnoreList("objects", b))then table.insert(projectFiles.objects, b) end end elseif(k=="libraries")then projectFiles.libraries = {} for a,b in pairs(v)do if not(isFileInIgnoreList("libraries", b))then table.insert(projectFiles.libraries, b) end end else table.insert(projectFiles.base, v) end end fs.makeDir(dir) fs.makeDir(dir.."/objects") fs.makeDir(dir.."/libraries") for _,v in pairs(projectFiles["objects"])do download(""..v, dir.."/objects/"..v) end for _,v in pairs(projectFiles["libraries"])do download(""..v, dir.."/libraries/"..v) end for _,v in pairs(projectFiles["base"])do download(""..v, dir.."/"..v) end end if(#args>0)then if(string.lower(args[1])=="bpm")or(string.lower(args[1])=="basaltpackagemanager")then download("", "basaltPackageManager.lua") if(args[2]=="true")then"basaltPackageManager.lua") fs.delete("basaltPackageManager.lua") end elseif(string.lower(args[1])=="packer")or(string.lower(args[1])=="basaltpacker")then download("", "basaltPackager.lua") if(args[2]=="true")then"basaltPackager.lua") fs.delete("basaltPackager.lua") end elseif(string.lower(args[1])=="packed")then downloadProject(args[3] or "Basalt") download("", "basaltPackager.lua")"basaltPackager.lua "..(args[3] or "Basalt").." "..(args[2] or "true").." "..(args[3]~=nil and args[3]:gsub(".lua", "")..".lua" or "")) fs.delete(args[3] or "Basalt") fs.delete("basaltPackager.lua") elseif(string.lower(args[1])=="modified")then if(args[2]~=nil)then local projDir = args[3] or "Basalt" local arg = splitString(args[2], ":") downloadProject(projDir, { objects = splitString(arg[1], "|"), libraries = splitString(arg[2], "|") }) else downloadProject("Basalt") end else print("Downloading the project...") downloadProject(args[1] or "Basalt") print("Done!") end else print("Downloading the project...") downloadProject("Basalt") print("Done!") end if(fs.exists("basaltInstaller.lua"))then --fs.delete("basaltInstaller.lua") end