mirror of
https://github.com/NeoFlock/neonucleus.git
synced 2025-09-24 09:03:32 +02:00
53 lines
1.3 KiB
Lua
53 lines
1.3 KiB
Lua
local component = require("component")
|
|
local shell = require("shell")
|
|
local text = require("text")
|
|
|
|
local args, options = shell.parse(...)
|
|
local count = tonumber(options.limit) or math.huge
|
|
|
|
local components = {}
|
|
local padTo = 1
|
|
|
|
if #args == 0 then -- get all components if no filters given.
|
|
args[1] = ""
|
|
end
|
|
for _, filter in ipairs(args) do
|
|
for address, name in component.list(filter) do
|
|
if name:len() > padTo then
|
|
padTo = name:len() + 2
|
|
end
|
|
components[address] = name
|
|
end
|
|
end
|
|
|
|
padTo = padTo + 8 - padTo % 8
|
|
for address, name in pairs(components) do
|
|
io.write(text.padRight(name, padTo) .. address .. '\n')
|
|
|
|
if options.l then
|
|
local proxy = component.proxy(address)
|
|
local padTo = 1
|
|
local methods = {}
|
|
for name, member in pairs(proxy) do
|
|
if type(member) == "table" or type(member) == "function" then
|
|
if name:len() > padTo then
|
|
padTo = name:len() + 2
|
|
end
|
|
table.insert(methods, name)
|
|
end
|
|
end
|
|
table.sort(methods)
|
|
padTo = padTo + 8 - padTo % 8
|
|
|
|
for _, name in ipairs(methods) do
|
|
local doc = component.doc(address, name) or tostring(proxy[name])
|
|
io.write(" " .. text.padRight(name, padTo) .. doc .. '\n')
|
|
end
|
|
end
|
|
|
|
count = count - 1
|
|
if count <= 0 then
|
|
break
|
|
end
|
|
end
|