SHOW:
|
|
- or go back to the newest paste.
1 | -- this file can download the project or other tools from github | |
2 | ||
3 | local args = table.pack(...) | |
4 | ||
5 | -- Creates a filetree based on my github project, ofc you can use this in your projects if you'd like to | |
6 | local function createTree(page) | |
7 | local tree = {} | |
8 | local request = http.get(page, _G._GIT_API_KEY and {Authorization = "token ".._G._GIT_API_KEY}) | |
9 | if not(page)then return end | |
10 | if(request==nil)then error("To many requests! You have to wait a couple of hours.") end | |
11 | for _,v in pairs(textutils.unserialiseJSON(request.readAll()).tree)do | |
12 | if(v.type=="blob")then | |
13 | table.insert(tree, v.path) | |
14 | elseif(v.type=="tree")then | |
15 | tree[v.path] = createTree(page.."/"..v.path) | |
16 | end | |
17 | end | |
18 | return tree | |
19 | end | |
20 | ||
21 | local function splitString(str, sep) | |
22 | if sep == nil then | |
23 | sep = "%s" | |
24 | end | |
25 | local t={} | |
26 | for v in string.gmatch(str, "([^"..sep.."]+)") do | |
27 | table.insert(t, v) | |
28 | end | |
29 | return t | |
30 | end | |
31 | ||
32 | local function download(url, file) | |
33 | print("Downloading "..url) | |
34 | local httpReq = http.get(url, _G._GIT_API_KEY and {Authorization = "token ".._G._GIT_API_KEY}) | |
35 | if(httpReq~=nil)then | |
36 | local content = httpReq.readAll() | |
37 | if not content then | |
38 | error("Could not connect to website") | |
39 | end | |
40 | local f = fs.open(file, "w") | |
41 | f.write(content) | |
42 | f.close() | |
43 | end | |
44 | end | |
45 | ||
46 | local function downloadProject(dir, ignoreList) | |
47 | local projTree = createTree("https://api.github.com/repos/Pyroxenium/Basalt/git/trees/master:Basalt") | |
48 | local projectFiles = {base={}} | |
49 | ||
50 | local function isFileInIgnoreList(folder, file) | |
51 | if(ignoreList~=nil)then | |
52 | if(ignoreList[folder]~=nil)then | |
53 | for k,v in pairs(ignoreList[folder])do | |
54 | if(v==file)then | |
55 | return true | |
56 | end | |
57 | end | |
58 | end | |
59 | end | |
60 | return false | |
61 | end | |
62 | for k,v in pairs(projTree)do | |
63 | if(k=="objects")then | |
64 | projectFiles.objects = {} | |
65 | for a,b in pairs(v)do | |
66 | if not(isFileInIgnoreList("objects", b))then | |
67 | table.insert(projectFiles.objects, b) | |
68 | end | |
69 | end | |
70 | elseif(k=="libraries")then | |
71 | projectFiles.libraries = {} | |
72 | for a,b in pairs(v)do | |
73 | if not(isFileInIgnoreList("libraries", b))then | |
74 | table.insert(projectFiles.libraries, b) | |
75 | end | |
76 | end | |
77 | else | |
78 | table.insert(projectFiles.base, v) | |
79 | end | |
80 | end | |
81 | ||
82 | fs.makeDir(dir) | |
83 | fs.makeDir(dir.."/objects") | |
84 | fs.makeDir(dir.."/libraries") | |
85 | for _,v in pairs(projectFiles["objects"])do | |
86 | download("https://raw.githubusercontent.com/Pyroxenium/Basalt/master/Basalt/objects/"..v, dir.."/objects/"..v) | |
87 | end | |
88 | for _,v in pairs(projectFiles["libraries"])do | |
89 | download("https://raw.githubusercontent.com/Pyroxenium/Basalt/master/Basalt/libraries/"..v, dir.."/libraries/"..v) | |
90 | end | |
91 | for _,v in pairs(projectFiles["base"])do | |
92 | download("https://raw.githubusercontent.com/Pyroxenium/Basalt/master/Basalt/"..v, dir.."/"..v) | |
93 | end | |
94 | end | |
95 | ||
96 | if(#args>0)then | |
97 | if(string.lower(args[1])=="bpm")or(string.lower(args[1])=="basaltpackagemanager")then | |
98 | download("https://raw.githubusercontent.com/Pyroxenium/Basalt/master/basaltPackageManager.lua", "basaltPackageManager.lua") | |
99 | if(args[2]=="true")then shell.run("basaltPackageManager.lua") fs.delete("basaltPackageManager.lua") end | |
100 | elseif(string.lower(args[1])=="packer")or(string.lower(args[1])=="basaltpacker")then | |
101 | download("https://raw.githubusercontent.com/Pyroxenium/Basalt/master/basaltPackager.lua", "basaltPackager.lua") | |
102 | if(args[2]=="true")then shell.run("basaltPackager.lua") fs.delete("basaltPackager.lua") end | |
103 | ||
104 | elseif(string.lower(args[1])=="packed")then | |
105 | downloadProject(args[3] or "Basalt") | |
106 | download("https://raw.githubusercontent.com/Pyroxenium/Basalt/master/basaltPackager.lua", "basaltPackager.lua") | |
107 | shell.run("basaltPackager.lua "..(args[3] or "Basalt").." "..(args[2] or "true").." "..(args[3]~=nil and args[3]:gsub(".lua", "")..".lua" or "")) | |
108 | fs.delete(args[3] or "Basalt") | |
109 | fs.delete("basaltPackager.lua") | |
110 | elseif(string.lower(args[1])=="modified")then | |
111 | if(args[2]~=nil)then | |
112 | local projDir = args[3] or "Basalt" | |
113 | local arg = splitString(args[2], ":") | |
114 | downloadProject(projDir, { | |
115 | objects = splitString(arg[1], "|"), | |
116 | libraries = splitString(arg[2], "|") | |
117 | }) | |
118 | else | |
119 | downloadProject("Basalt") | |
120 | end | |
121 | else | |
122 | print("Downloading the project...") | |
123 | downloadProject(args[1] or "Basalt") | |
124 | print("Done!") | |
125 | end | |
126 | else | |
127 | print("Downloading the project...") | |
128 | downloadProject("Basalt") | |
129 | print("Done!") | |
130 | end | |
131 | if(fs.exists("basaltInstaller.lua"))then | |
132 | --fs.delete("basaltInstaller.lua") | |
133 | end |