Add a scale subcommand to monitor.lua (#623)

This commit is contained in:
JackMacWindows 2021-05-29 11:55:55 -04:00 committed by GitHub
parent 8063059764
commit e0e194099c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 54 additions and 4 deletions

View File

@ -1,6 +1,8 @@
local function printUsage()
local programName = arg[0] or fs.getName(shell.getRunningProgram())
print("Usage: " .. programName .. " <name> <program> <arguments>")
print("Usage:")
print(" " .. programName .. " <name> <program> <arguments>")
print(" " .. programName .. " scale <name> <scale>")
return
end
@ -10,6 +12,23 @@ if #tArgs < 2 then
return
end
if tArgs[1] == "scale" then
local sName = tArgs[2]
if peripheral.getType(sName) ~= "monitor" then
print("No monitor named " .. sName)
return
end
local nRes = tonumber(tArgs[3])
if nRes == nil or nRes < 0.5 or nRes > 5 then
print("Invalid scale: " .. nRes)
return
end
peripheral.call(sName, "setTextScale", nRes)
return
end
local sName = tArgs[1]
if peripheral.getType(sName) ~= "monitor" then
print("No monitor named " .. sName)

View File

@ -67,10 +67,25 @@ shell.setCompletionFunction("rom/programs/label.lua", completion.build(
))
shell.setCompletionFunction("rom/programs/list.lua", completion.build(completion.dir))
shell.setCompletionFunction("rom/programs/mkdir.lua", completion.build({ completion.dir, many = true }))
local complete_monitor_extra = { "scale" }
shell.setCompletionFunction("rom/programs/monitor.lua", completion.build(
{ completion.peripheral, true },
completion.program
function(shell, text, previous)
local choices = completion.peripheral(shell, text, previous, true)
for _, option in pairs(completion.choice(shell, text, previous, complete_monitor_extra, true)) do
choices[#choices + 1] = option
end
return choices
end,
function(shell, text, previous)
if previous[2] == "scale" then
return completion.peripheral(shell, text, previous, true)
else
return completion.program(shell, text, previous)
end
end
))
shell.setCompletionFunction("rom/programs/move.lua", completion.build(
{ completion.dirOrFile, true },
completion.dirOrFile

View File

@ -3,6 +3,22 @@ local capture = require "test_helpers".capture_program
describe("The monitor program", function()
it("displays its usage when given no arguments", function()
expect(capture(stub, "monitor"))
:matches { ok = true, output = "Usage: monitor <name> <program> <arguments>\n", error = "" }
:matches {
ok = true,
output =
"Usage:\n" ..
" monitor <name> <program> <arguments>\n" ..
" monitor scale <name> <scale>\n",
error = "",
}
end)
it("changes the text scale with the scale command", function()
local r = 1
stub(peripheral, "call", function(s, f, t) r = t end)
stub(peripheral, "getType", function() return "monitor" end)
expect(capture(stub, "monitor", "scale", "left", "0.5"))
:matches { ok = true, output = "", error = "" }
expect(r):equals(0.5)
end)
end)