potatOS/src/bin/ccemux.lua

48 lines
1.6 KiB
Lua

local args = {...}
local subcommand = table.remove(args, 1)
if not ccemux then error "For CCEmuX use only." end
local function assert_args(n, reqd, gte)
if (#args ~= n and not gte) or (#args < n and gte) then
error(("%d args required: %s"):format(n, reqd), 0)
end
end
if subcommand == "attach" then
assert_args(2, "side, peripheral, [options]", true)
local side, periph = table.remove(args, 1), table.remove(args, 1)
local opts = {}
for _, arg in pairs(args) do
local k, v = arg:match "^([^=]+)=(.*)$"
opts[k] = tonumber(v) or v
end
local ok, err = pcall(ccemux.attach, side, periph, opts)
if not ok then
if err:match "Invalid peripheral" then
error("invalid peripheral (try disk_drive, wireless_modem)", 0)
else
error(err, 0)
end
end
elseif subcommand == "detach" then
assert_args(1, "side")
ccemux.detach(args[1])
elseif subcommand == "version" then
print(ccemux.getVersion())
elseif subcommand == "emu" then
ccemux.openEmu(tonumber(args[1]))
elseif subcommand == "datadir" then ccemux.openDataDir()
elseif subcommand == "config" then ccemux.openConfig()
elseif subcommand == "echo" then ccemux.echo(table.concat(args, " "))
elseif subcommand == "help" or not subcommand then
print([[available commands:
attach side, peripheral, [options] - attach virtual peripheral
detach side - detach virtual peripheral
version - get CCEmuX version
emu [ID] - open emulator window with computer with given ID (or next free one)
datadir - open CCEmuX data directory
config - open CCEmuX config
echo - print to CCEmuX console
help - print this]])
end