Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local function loadParams(path)
- local file = fs.open(path, "r")
- if file ~= nil then
- local data = file.readAll()
- file.close()
- return textutils.unserialize(data)
- else
- return {}
- end
- end
- local function saveParams(path, table)
- local file = fs.open(path, "w")
- file.write(textutils.serialize(table))
- file.close()
- end
- local function addProgram(programmName, newTab, arguments, tabname)
- if programmName == nil then printError("bs.startup.add(programmName = string, newTab = Boolean, arguments = table, tabname = unique string") end
- local inserttable = {}
- local params = loadParams("bs/files/startup_params")
- if type(programmName) ~= "string" then return false end
- if arguments ~= nil then
- if type(arguments) ~= "table" then return false end
- else
- arguments = {}
- end
- if newTab ~= nil then
- if type(newTab) ~= "boolean" then return false end
- end
- if tabname == nil then return false end
- if type(tabname) ~= "string" then return false end
- local function uniquetabname(i, v) if v.tabname == tabname then return false end end
- if table.foreach(params, uniquetabname) == false then printError("\""..tabname.."\" is already set") return false end
- inserttable.name = programmName
- inserttable.args = arguments
- inserttable.newTab = newTab
- inserttable.tabname = tabname
- if params.order ~= nil then
- if params.order[1] ~= nil then
- table.insert(params.order, tabname)
- end
- end
- table.insert(params, inserttable)
- saveParams("bs/files/startup_params", params)
- return true
- end
- local function removeProgram(tabname)
- local params = loadParams("bs/files/startup_params")
- if type(tabname) ~= "string" then return false end
- local index = 0
- for I = 1, #params do
- if params[I].tabname == tabname then
- index = I
- break
- end
- end
- if index == 0 then
- return false
- else
- table.remove(params, index)
- end
- if params.order ~= nil then
- for I = 1, #params.order do
- if params[I] == tabname then
- index = I
- break
- end
- end
- if index == 0 then
- printError(tabname.." found in startup programs but not in the order table")
- return false
- else
- table.remove(params.order, index)
- saveParams("bs/files/startup_params", params)
- return true
- end
- else
- table.remove(params, index)
- saveParams("bs/files/startup_params", params)
- return true
- end
- end
- local function setOrder(ordertable)
- if ordertable == nil then return false end
- local params = loadParams("bs/files/startup_params")
- if type(ordertable) == "table" then
- params.order = ordertable
- saveParams("bs/files/startup_params", params)
- return true
- else
- return false
- end
- end
- local function getOrder()
- local params = loadParams("bs/files/startup_params")
- if params ~= nil then
- if params.order ~= nil then
- return params.order
- else
- return nil
- end
- else
- return false
- end
- end
- local function getNames()
- local params = loadParams("bs/files/startup_params")
- local returntable = {}
- for I = 1, #params do
- table.insert(returntable, params[I].tabname)
- end
- return returntable
- end
- params = {load = loadParams, save = saveParams}
- startup = {add = addProgram, remove = removeProgram, getNames = getNames, setOrder = setOrder, getOrder = getOrder}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement