Create config.lua
This commit is contained in:
parent
1f4fc5ab4b
commit
6017c4b385
1 changed files with 141 additions and 0 deletions
141
src/apis/config.lua
Normal file
141
src/apis/config.lua
Normal file
|
@ -0,0 +1,141 @@
|
||||||
|
--Config API from LMNetOS
|
||||||
|
|
||||||
|
function read(cfgfile, cfg)
|
||||||
|
local rtn
|
||||||
|
local ok, err = pcall(function()
|
||||||
|
local path
|
||||||
|
if not cfgfile then
|
||||||
|
path = "/.lmnet/sys.conf"
|
||||||
|
else
|
||||||
|
path = cfgfile
|
||||||
|
end
|
||||||
|
local file = fs.open(path, "r")
|
||||||
|
if not file then
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
local lines = {}
|
||||||
|
local line = ""
|
||||||
|
while line ~= nil do
|
||||||
|
line = file.readLine()
|
||||||
|
if line then
|
||||||
|
table.insert(lines, line)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
file.close()
|
||||||
|
local config = {}
|
||||||
|
for _, v in pairs(lines) do
|
||||||
|
local tmp
|
||||||
|
local tmp2 = ""
|
||||||
|
for match in string.gmatch(v, "[^\=]+") do
|
||||||
|
if tmp then
|
||||||
|
tmp2 = tmp2..match
|
||||||
|
else
|
||||||
|
tmp = match
|
||||||
|
end
|
||||||
|
end
|
||||||
|
config[tmp] = textutils.unserialize(tostring(tmp2))
|
||||||
|
end
|
||||||
|
for i, v in pairs(config) do
|
||||||
|
if i == cfg then
|
||||||
|
rtn = v
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
if not ok then
|
||||||
|
return false, err
|
||||||
|
end
|
||||||
|
return rtn
|
||||||
|
end
|
||||||
|
function write(cfgfile, cfg, value)
|
||||||
|
local rtn = false
|
||||||
|
local ok, err = pcall(function()
|
||||||
|
local path
|
||||||
|
if not cfgfile then
|
||||||
|
path = "/.lmnet/sys.conf"
|
||||||
|
else
|
||||||
|
path = cfgfile
|
||||||
|
end
|
||||||
|
if fs.exists(path) and fs.isDir(path) then
|
||||||
|
error(path.." is a directory", 0)
|
||||||
|
end
|
||||||
|
local readfile = fs.open(path, "r")
|
||||||
|
local readlines = {}
|
||||||
|
if readfile then
|
||||||
|
local readline = ""
|
||||||
|
while readline ~= nil do
|
||||||
|
readline = readfile.readLine()
|
||||||
|
if readline then
|
||||||
|
table.insert(readlines, readline)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
readfile.close()
|
||||||
|
end
|
||||||
|
local config = {}
|
||||||
|
if fs.exists(path) and not fs.isDir(path) then
|
||||||
|
for _, v in pairs(readlines) do
|
||||||
|
local tmp
|
||||||
|
local tmp2 = ""
|
||||||
|
for match in string.gmatch(v, "[^\=]+") do
|
||||||
|
if tmp then
|
||||||
|
tmp2 = tmp2..match
|
||||||
|
else
|
||||||
|
tmp = match
|
||||||
|
end
|
||||||
|
end
|
||||||
|
config[tmp] = textutils.unserialize(tostring(tmp2))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local writefile = fs.open(path, "w")
|
||||||
|
config[cfg] = value
|
||||||
|
table.sort(config)
|
||||||
|
for i, v in pairs(config) do
|
||||||
|
writefile.writeLine(i.."="..textutils.serialize(v))
|
||||||
|
end
|
||||||
|
writefile.close()
|
||||||
|
rtn = true
|
||||||
|
end)
|
||||||
|
return rtn
|
||||||
|
end
|
||||||
|
function list(cfgfile)
|
||||||
|
local rtn
|
||||||
|
local ok, err = pcall(function()
|
||||||
|
local path
|
||||||
|
if not cfgfile then
|
||||||
|
path = "/.lmnet/sys.conf"
|
||||||
|
else
|
||||||
|
path = cfgfile
|
||||||
|
end
|
||||||
|
local file = fs.open(path, "r")
|
||||||
|
if not file then
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
local lines = {}
|
||||||
|
local line = ""
|
||||||
|
while line ~= nil do
|
||||||
|
line = file.readLine()
|
||||||
|
if line then
|
||||||
|
table.insert(lines, line)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
file.close()
|
||||||
|
local config = {}
|
||||||
|
for _, v in pairs(lines) do
|
||||||
|
local tmp
|
||||||
|
local tmp2 = ""
|
||||||
|
for match in string.gmatch(v, "[^\=]+") do
|
||||||
|
if tmp then
|
||||||
|
tmp2 = tmp2..match
|
||||||
|
else
|
||||||
|
tmp = match
|
||||||
|
end
|
||||||
|
end
|
||||||
|
config[tmp] = textutils.unserialize(tostring(tmp2))
|
||||||
|
end
|
||||||
|
rtn = config
|
||||||
|
end)
|
||||||
|
if not ok then
|
||||||
|
return false, err
|
||||||
|
end
|
||||||
|
return rtn
|
||||||
|
end
|
Loading…
Reference in a new issue