forked from osmarks/potatOS
48 lines
1.6 KiB
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 |