made newer installer that does not require tar stuff
This commit is contained in:
1 parent
df62414229
commit
7deefc83ca
107 files changed
+648
-353
No files matched your search
@@ -0,0 +1 @@
|
||||
local a=...local b=nil;local function c()if b==nil then local d,e=pcall(require,"store.deflate")b=d and e or false end;return b or nil end;local function f(g)g=math.floor(g)%4294967296;return string.char(g%256,math.floor(g/256)%256,math.floor(g/65536)%256,math.floor(g/16777216)%256)end;local function h(i,j)local k,l,m,n=i:byte(j,j+3)return(k or 0)+(l or 0)*256+(m or 0)*65536+(n or 0)*16777216 end;local o="BHFS"local p="\001"local q=1;local r="\001"local s="\002"local t="\003"local u="\255"local v={}do local k="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"for j=1,#k do v[k:sub(j,j)]=j-1 end end;local function w(i)i=i:gsub("[^A-Za-z0-9+/=]","")local x,j={},1;while j<=#i do local y=v[i:sub(j,j)]or 0;local z=v[i:sub(j+1,j+1)]or 0;local A=v[i:sub(j+2,j+2)]or 0;local B=v[i:sub(j+3,j+3)]or 0;local g=y*262144+z*4096+A*64+B;x[#x+1]=string.char(math.floor(g/65536)%256)if i:sub(j+2,j+2)~="="then x[#x+1]=string.char(math.floor(g/256)%256)end;if i:sub(j+3,j+3)~="="then x[#x+1]=string.char(g%256)end;j=j+4 end;return table.concat(x)end;local C={}local D=0;local function E(F,G)local H={address=F,isvirt=false}H.isReadOnly=function()return false end;H.spaceUsed=function()return 0 end;H.spaceTotal=function()return 0 end;H.setLabel=function()end;H.getLabel=function()return F end;local function I()local J,K="/","$"for L,M in pairs(a.vfs.mounts)do if G==M or M=="/"and G:sub(1,1)=="/"or G:sub(1,#M+1)==M.."/"then if#M>#J then J=M;K=L end end end;return a.vfs.disks[K],G:sub(#J+1)end;local function N(O)local P,Q=I()local l=(Q==""or Q=="/")and""or Q:gsub("^/+","")local R=O:gsub("^/+","")local m=(l==""and"/"..R or"/"..l.."/"..R):gsub("//+","/")local S=m:sub(2)if S==""then S="/"end;return P,S end;function H:open(O,T)local U,S=N(O)return U:open(S,T)end;function H:type(O)local U,S=N(O)return U:type(S)end;function H:list(O)local U,S=N(O)return U:list(S)end;function H:fileExists(O)local U,S=N(O)return U:fileExists(S)end;function H:attributes(O)local U,S=N(O)return U:attributes(S)end;function H:makeDirectory(O)local U,S=N(O)return U:makeDirectory(S)end;function H:remove(O)local U,S=N(O)return U:remove(S)end;return H end;local function V(F,W)local X={kind="dir",children={}}local function Y(O,Z)local _={}for R in O:gmatch("[^/]+")do _[#_+1]=R end;local a0=X;for j=1,#_ do local a1=_[j]if not a0.children then if not Z then return nil end;a0.children={}end;if not a0.children[a1]then if not Z then return nil end;a0.children[a1]={kind="dir",children={}}end;a0=a0.children[a1]end;return a0 end;local function a2(O)local a3=O:match("^(.*)/[^/]+$")or""if a3~=""then local g=Y(a3,true)if not g.children then g.children={}end end end;if W:sub(1,4)==o then local a4=9;while a4<=#W do local a5=W:sub(a4,a4)a4=a4+1;if a5==u then break end;local a6=h(W,a4)a4=a4+4;local a7=h(W,a4)a4=a4+4;local a8=h(W,a4)a4=a4+4;local O=W:sub(a4,a4+a6-1)a4=a4+a6;local a9=W:sub(a4,a4+a8-1)a4=a4+a8;local aa=a9;if a8<a7 then local ab=c()if ab then aa=ab.decompress(a9)or a9 end end;if a5==s then if O~=""and O~="/"then a2(O)local g=Y(O,true)g.kind="dir"g.children=g.children or{}end elseif a5==r then a2(O)local g=Y(O,true)g.kind="file"g.data=aa;g.size=#aa;g.children=nil elseif a5==t then a2(O)local g=Y(O,true)g.kind="link"g.target=aa;g.children=nil end end else for ac in(W.."\n"):gmatch("([^\n]*)\n")do if ac=="END"then break elseif ac:sub(1,4)=="DIR "then local R=ac:sub(5):match("^%s*(.-)%s*$")if R and R~=""and R~="/"then a2(R)local g=Y(R,true)g.kind="dir"g.children=g.children or{}end elseif ac:sub(1,5)=="FILE "then local R,ad,ae=ac:sub(6):match("^(%S+)%s+(%d+)%s*(.-)%s*$")if R then a2(R)local aa=(tonumber(ad)or 0)>0 and w(ae)or""local g=Y(R,true)g.kind="file"g.data=aa;g.size=#aa;g.children=nil end elseif ac:sub(1,5)=="LINK "then local R,af=ac:sub(6):match("^(%S+)%s+(.+)$")if R then a2(R)local g=Y(R,true)g.kind="link"g.target=af;g.children=nil end end end end;local H={address=F,isvirt=false}H.isReadOnly=function()return false end;H.spaceTotal=function()return 1024*1024*64 end;H.spaceUsed=function()local ag=0;local function ah(g)if g.kind=="file"then ag=ag+(g.size or 0)elseif g.kind=="dir"then for ai,m in pairs(g.children or{})do ah(m)end end end;ah(X)return ag end;H.setLabel=function()end;H.getLabel=function()return F end;local function aj(O)return O:gsub("^/+",""):gsub("/+$","")end;function H:type(O)local R=aj(O)if R==""then return"directory"end;local g=Y(R)if not g then return nil end;if g.kind=="dir"then return"directory"end;return"file"end;function H:fileExists(O)local R=aj(O)if R==""then return true end;return Y(R)~=nil end;function H:list(O)local R=aj(O)local a0=R==""and X or Y(R)if not a0 or a0.kind~="dir"then return{}end;local ak={}for a1 in pairs(a0.children or{})do ak[#ak+1]=a1 end;return ak end;function H:attributes(O)local R=aj(O)local a0=R==""and X or Y(R)if not a0 then return nil end;return{size=a0.kind=="file"and(a0.size or 0)or 0,isDir=a0.kind=="dir",isReadOnly=false,created=0,modified=0}end;function H:open(O,T)local R=aj(O)local a0=Y(R)if T=="r"thenLine truncated
|
||||
Reference in new issue
Block a user