mirror of
https://github.com/NeoFlock/neonucleus.git
synced 2025-09-24 17:13:31 +02:00
63 lines
1.3 KiB
Lua
63 lines
1.3 KiB
Lua
local shell = require("shell")
|
|
local args, options = shell.parse(...)
|
|
|
|
local ec, error_prefix = 0, "alias:"
|
|
|
|
if options.help then
|
|
print(string.format("Usage: alias: [name[=value] ... ]"))
|
|
return
|
|
end
|
|
|
|
local function validAliasName(k)
|
|
return k:match("[/%$`=|&;%(%)<> \t]") == nil
|
|
end
|
|
|
|
local function setAlias(k, v)
|
|
if not validAliasName(k) then
|
|
io.stderr:write(string.format("%s `%s': invalid alias name\n", error_prefix, k))
|
|
else
|
|
shell.setAlias(k, v)
|
|
end
|
|
end
|
|
|
|
local function printAlias(k)
|
|
local v = shell.getAlias(k)
|
|
if not v then
|
|
io.stderr:write(string.format("%s %s: not found\n", error_prefix, k))
|
|
ec = 1
|
|
else
|
|
io.write(string.format("alias %s='%s'\n", k, v))
|
|
end
|
|
end
|
|
|
|
local function splitPair(arg)
|
|
local matchBegin, matchEnd = arg:find("=")
|
|
if matchBegin == nil or matchBegin == 1 then
|
|
return arg
|
|
else
|
|
return arg:sub(1, matchBegin - 1), arg:sub(matchEnd + 1)
|
|
end
|
|
end
|
|
|
|
local function handlePair(k, v)
|
|
if v then
|
|
return setAlias(k, v)
|
|
else
|
|
return printAlias(k)
|
|
end
|
|
end
|
|
|
|
if not next(args) then -- no args
|
|
-- print all aliases
|
|
for k,v in shell.aliases() do
|
|
print(string.format("alias %s='%s'", k, v))
|
|
end
|
|
else
|
|
for _,v in ipairs(args) do
|
|
checkArg(1,v,"string")
|
|
handlePair(splitPair(v))
|
|
end
|
|
end
|
|
|
|
return ec
|