Advertisement
Neon1432

system

Jan 26th, 2022 (edited)
300
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.25 KB | None | 0 0
  1. local function loadParams(path)
  2.     local file = fs.open(path, "r")
  3.     if file ~= nil then
  4.         local data = file.readAll()
  5.         file.close()
  6.         return textutils.unserialize(data)
  7.     else
  8.         return {}
  9.     end
  10. end
  11.  
  12.  
  13.  
  14. local function saveParams(path, table)
  15.     local file = fs.open(path, "w")
  16.     file.write(textutils.serialize(table))
  17.     file.close()
  18. end
  19.  
  20.  
  21.  
  22. local function addProgram(programmName, newTab, arguments, tabname)
  23.     if programmName == nil then printError("bs.startup.add(programmName = string, newTab = Boolean, arguments = table, tabname = unique string") end
  24.     local inserttable = {}
  25.     local params = loadParams("bs/files/startup_params")
  26.     if type(programmName) ~= "string" then return false end
  27.     if arguments ~= nil then
  28.         if type(arguments) ~= "table" then return false end
  29.     else
  30.         arguments = {}
  31.     end
  32.     if newTab ~= nil then
  33.         if type(newTab) ~= "boolean" then return false end
  34.     end
  35.  
  36.     if tabname == nil then return false end
  37.     if type(tabname) ~= "string" then return false end
  38.  
  39.     local function uniquetabname(i, v) if v.tabname == tabname then return false end end
  40.     if table.foreach(params, uniquetabname) == false then printError("\""..tabname.."\" is already set") return false end
  41.  
  42.     inserttable.name = programmName
  43.     inserttable.args = arguments
  44.     inserttable.newTab = newTab
  45.     inserttable.tabname = tabname
  46.     if params.order ~= nil then
  47.         if params.order[1] ~= nil then
  48.             table.insert(params.order, tabname)
  49.         end
  50.     end
  51.     table.insert(params, inserttable)
  52.     saveParams("bs/files/startup_params", params)
  53.     return true
  54. end
  55.  
  56.  
  57.  
  58. local function removeProgram(tabname)
  59.     local params = loadParams("bs/files/startup_params")
  60.     if type(tabname) ~= "string" then return false end
  61.     local index = 0
  62.     for I = 1, #params do
  63.         if params[I].tabname == tabname then
  64.             index = I
  65.             break
  66.         end
  67.     end
  68.     if index == 0 then
  69.         return false
  70.     else
  71.         table.remove(params, index)
  72.     end
  73.  
  74.     if params.order ~= nil then
  75.         for I = 1, #params.order do
  76.             if params[I] == tabname then
  77.                 index = I
  78.                 break
  79.             end
  80.         end
  81.         if index == 0 then
  82.             printError(tabname.." found in startup programs but not in the order table")
  83.             return false
  84.         else
  85.             table.remove(params.order, index)
  86.             saveParams("bs/files/startup_params", params)
  87.             return true
  88.         end
  89.     else
  90.         table.remove(params, index)
  91.         saveParams("bs/files/startup_params", params)
  92.         return true
  93.     end
  94. end
  95.  
  96.  
  97.  
  98. local function setOrder(ordertable)
  99.     if ordertable == nil then return false end
  100.     local params = loadParams("bs/files/startup_params")
  101.     if type(ordertable) == "table" then
  102.         params.order = ordertable
  103.         saveParams("bs/files/startup_params", params)
  104.         return true
  105.     else
  106.         return false
  107.     end
  108. end
  109.  
  110.  
  111.  
  112. local function getOrder()
  113.     local params = loadParams("bs/files/startup_params")
  114.     if params ~= nil then
  115.         if params.order ~= nil then
  116.             return params.order
  117.         else
  118.             return nil
  119.         end
  120.     else
  121.         return false
  122.     end
  123. end
  124.  
  125.  
  126.  
  127. local function getNames()
  128.     local params = loadParams("bs/files/startup_params")
  129.     local returntable = {}
  130.     for I = 1, #params do
  131.         table.insert(returntable, params[I].tabname)
  132.     end
  133.     return returntable
  134. end
  135.  
  136.  
  137. params = {load = loadParams, save = saveParams}
  138. startup = {add = addProgram, remove = removeProgram, getNames = getNames, setOrder = setOrder, getOrder = getOrder}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement