Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local data
- local file = "./p2p.tbl"
- local function save()
- local f = fs.open(file, "w")
- f.write(textutils.serialise(data))
- f.close()
- end
- local function load()
- if fs.exists(file) then
- local f = fs.open(file, "r")
- local x = textutils.unserialise(f.readAll())
- f.close()
- return x
- end
- end
- local function split(str)
- local t = {}
- for w in str:gmatch("%S+") do table.insert(t, w) end
- return t
- end
- data = load() or {}
- local case_insensitive = {
- __index = function( table, key )
- local value = rawget( table, key )
- if value ~= nil then
- return value
- end
- if type(key) == "string" then
- local value = rawget( table, string.lower(key) )
- if value ~= nil then
- return value
- end
- end
- return nil
- end
- }
- setmetatable(data, case_insensitive)
- local function tunnel_info(name)
- local d = data[name]
- return ("%s: %d %s"):format(name, d.channels, d.description)
- end
- local commands = {
- list = function()
- for t in pairs(data) do print(tunnel_info(t)) end
- end,
- info = function(name)
- print(tunnel_info(name))
- end,
- describe = function(name)
- local t = data[name]
- print("Description:", t.description)
- write "New description: "
- t.description = read()
- end,
- add = function(name)
- data[name] = {
- channels = 0,
- description = "None set."
- }
- end,
- channels = function(name, by)
- local by = tonumber(by)
- if not by then error "Invalid number!" end
- local t = data[name]
- print("Channels:", t.channels)
- print("Increasing by:", by)
- t.channels = t.channels + by
- print("New channels:", t.channels)
- end,
- delete = function(name)
- data[name] = nil
- end
- }
- setmetatable(commands, case_insensitive)
- local hist = {}
- while true do
- write "> "
- local text = read(nil, hist)
- table.insert(hist, text)
- local tokens = split(text)
- local command = table.remove(tokens, 1)
- local ok, err = pcall(commands[command], unpack(tokens))
- save()
- if not ok then printError(err) end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement