Advertisement
FFGFlash

boot.lua

Sep 28th, 2021 (edited)
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.89 KB | None | 0 0
  1. os.pullEvent=os.pullEventRaw
  2. local API_DIRECTORY = "/nekOS/api/"
  3.  
  4. function table.combine(t,o) for i,v in ipairs(o) do table.insert(t,v) end return t end
  5. function table.merge(t,o) for k,v in pairs(o) do t[k]=v end return t end
  6. function table.keys(t) local r={} for k in pairs(t) do r[#r+1]=k end return r end
  7. function table.values(t) local r={} for _,v in pairs(t) do r[#r+1]=v end return r end
  8. function table.filter(t,f) local r={} for k,v in pairs(t) do r[k]=f(v,k,t) and v or nil end return r end
  9. function table.isArray(t) local m=0 for k,v in pairs(t) do if type(k) ~= "number" then return false end m=math.max(m,k) end return m==#t end
  10. function string.startsWith(s,d) return string.sub(s,1,string.len(d)) == d end
  11. function _G.spairs(t,o) local k=table.keys(t) table.sort(k,not o and nil or function(a,b) return o(t[a],t[b]) end) local i = 0 return function() i = i + 1 if k[i] then return k[i],t[k[i]] end end end
  12.  
  13. local api = {}
  14. for i,f in ipairs(fs.list(API_DIRECTORY)) do local n=string.match(fs.getName(f),"([^\.]+)") api[n]=require(API_DIRECTORY..n) end
  15. for n,a in spairs(api,function(a,b) return a.LoadOrder > b.LoadOrder end) do _G[n]=a.Build() end
  16.  
  17. local m = system:getManifest()
  18.  
  19. for k,v in pairs(m.Settings) do settings.define(k,v) end
  20.  
  21. local c,t,w,h=0,#table.keys(system:getFileUpdates()),term.getSize()
  22. local l="///nekOS///"
  23. local function progress(m) local p=c/t local j,s=math.floor(p*w),tostring(math.floor(p*1000)/10).."%" term.setCursorPos(1,h-1) term.clearLine() term.write(m) term.setCursorPos(w-string.len(s)+1,h-1) term.write(s) term.setCursorPos(1,h) term.clearLine() for i=1,j do term.blit("#","8","7") end end
  24.  
  25. term.setTextColor(system.getTextColor())
  26. term.setBackgroundColor(system.getBackgroundColor())
  27. term.clear()
  28.  
  29. local p = peripheral.find("modem")
  30. local v = os.getComputerID()
  31. if not p or not p.isWireless() then
  32.   local l = "Please attach a wireless modem."
  33.   term.setCursorPos(math.floor((w-string.len(l))/2),math.floor(h/2))
  34.   term.clearLine()
  35.   term.write(l)
  36.   sleep(3)
  37.   os.shutdown()
  38. end
  39. if not p.isOpen(v) then p.open(v) end
  40. if not p.isOpen(65535) then p.open(65535) end
  41.  
  42. term.setCursorPos(math.floor((w-string.len(l))/2),math.floor(h/2))
  43. for i=1,string.len(l) do term.blit(string.sub(l,i,i),string.sub("edb00000bde",i,i),"7") sleep(1/5) end
  44. sleep(1)
  45.  
  46. if settings.get("nekos.auto_update") then
  47.   for k,v in system:gupdate() do
  48.     progress("Downloading "..k.."...")
  49.     local s,e=pastebin:get(v.Code,k,true)
  50.     if not s then progress(e) sleep(1) end
  51.     sleep(1/t)
  52.     c=c+1
  53.     u=true
  54.   end
  55.  
  56.   c,t = 0,#table.keys(system:getLegacyFiles())
  57.   for k in system:glegacy() do
  58.     progress("Removing "..k.."...")
  59.     fs.delete(k)
  60.     c=c+1
  61.     u=true
  62.     sleep(1/t)
  63.   end
  64.  
  65.   if u then
  66.     system:getUpdate():save("main.manifest")
  67.     os.reboot()
  68.   end
  69. end
  70.  
  71. term.clear()
  72. term.setCursorPos(1,1)
  73.  
  74. local user = system:getUser()
  75. app:execute("nekos",user)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement