60 lines
1.7 KiB
Lua
60 lines
1.7 KiB
Lua
-- SPDX-FileCopyrightText: 2017 Daniel Ratcliffe
|
|
--
|
|
-- SPDX-License-Identifier: LicenseRef-CCPL
|
|
|
|
local pp = require "cc.pretty"
|
|
|
|
local tArgs = { ... }
|
|
if #tArgs == 0 then
|
|
-- "set"
|
|
local _, y = term.getCursorPos()
|
|
local tSettings = {}
|
|
for n, sName in ipairs(settings.getNames()) do
|
|
tSettings[n] = textutils.serialize(sName) .. " is " .. textutils.serialize(settings.get(sName))
|
|
end
|
|
textutils.pagedPrint(table.concat(tSettings, "\n"), y - 3)
|
|
|
|
elseif #tArgs == 1 then
|
|
-- "set foo"
|
|
local sName = tArgs[1]
|
|
local deets = settings.getDetails(sName)
|
|
local msg = pp.text(sName, colors.cyan) .. " is " .. pp.pretty(deets.value)
|
|
if deets.default ~= nil and deets.value ~= deets.default then
|
|
msg = msg .. " (default is " .. pp.pretty(deets.default) .. ")"
|
|
end
|
|
pp.print(msg)
|
|
if deets.description then print(deets.description) end
|
|
|
|
else
|
|
-- "set foo bar"
|
|
local sName = tArgs[1]
|
|
local sValue = tArgs[2]
|
|
local value
|
|
if sValue == "true" then
|
|
value = true
|
|
elseif sValue == "false" then
|
|
value = false
|
|
elseif sValue == "nil" then
|
|
value = nil
|
|
elseif tonumber(sValue) then
|
|
value = tonumber(sValue)
|
|
else
|
|
value = sValue
|
|
end
|
|
|
|
local option = settings.getDetails(sName)
|
|
if value == nil then
|
|
settings.unset(sName)
|
|
print(textutils.serialize(sName) .. " unset")
|
|
elseif option.type and option.type ~= type(value) then
|
|
printError(("%s is not a valid %s."):format(textutils.serialize(sValue), option.type))
|
|
else
|
|
settings.set(sName, value)
|
|
print(textutils.serialize(sName) .. " set to " .. textutils.serialize(value))
|
|
end
|
|
|
|
if value ~= option.value then
|
|
settings.save()
|
|
end
|
|
end
|