formating better for spm packages
This commit is contained in:
82
Src/hysh/data/bin/readlink
Normal file
82
Src/hysh/data/bin/readlink
Normal file
@@ -0,0 +1,82 @@
|
||||
--:Minify:--
|
||||
local name = syscall.getTask(syscall.getpid()).name
|
||||
local cloptions = { n = false, f = false, e = false, help = false }
|
||||
local args = {}
|
||||
|
||||
for _, v in ipairs({ ... }) do
|
||||
if v:sub(1, 2) == "--" then
|
||||
local opt = v:sub(3)
|
||||
if cloptions[opt] == nil then
|
||||
print(name .. ": unrecognized option '" .. v .. "'")
|
||||
syscall.exit(1); return
|
||||
end
|
||||
cloptions[opt] = true
|
||||
elseif v:sub(1, 1) == "-" then
|
||||
for i = 2, #v do
|
||||
local opt = v:sub(i, i)
|
||||
if cloptions[opt] == nil then
|
||||
print(name .. ": invalid option '-" .. opt .. "'")
|
||||
syscall.exit(1); return
|
||||
end
|
||||
cloptions[opt] = true
|
||||
end
|
||||
else
|
||||
table.insert(args, v)
|
||||
end
|
||||
end
|
||||
|
||||
if cloptions.help then
|
||||
print("Usage: " .. name .. " [OPTION]... FILE...")
|
||||
print("Print the resolved target of symbolic links.")
|
||||
print("")
|
||||
print("Options:")
|
||||
print(" -f canonicalize: follow every symlink; last component need not exist")
|
||||
print(" -e like -f but all components must exist")
|
||||
print(" -n do not output trailing newline")
|
||||
print(" --help display this help and exit")
|
||||
return
|
||||
end
|
||||
|
||||
if #args == 0 then
|
||||
print(name .. ": missing operand")
|
||||
print("try '" .. name .. " --help' for more information.")
|
||||
syscall.exit(1); return
|
||||
end
|
||||
|
||||
local function absPath(p)
|
||||
if p:sub(1,1) ~= "/" then
|
||||
local d = syscall.getcwd()
|
||||
if d:sub(-1) ~= "/" then d = d .. "/" end
|
||||
p = d .. p
|
||||
end
|
||||
return p
|
||||
end
|
||||
|
||||
local anyErr = false
|
||||
for _, path in ipairs(args) do
|
||||
path = absPath(path)
|
||||
|
||||
if cloptions.f or cloptions.e then
|
||||
local ok, stat = pcall(syscall.stat, path)
|
||||
if not ok then
|
||||
if cloptions.e then
|
||||
print(name .. ": " .. path .. ": " .. tostring(stat))
|
||||
anyErr = true
|
||||
else
|
||||
if not cloptions.n then print(path) else printInline(path) end
|
||||
end
|
||||
else
|
||||
if not cloptions.n then print(path) else printInline(path) end
|
||||
end
|
||||
else
|
||||
local ok, target = pcall(syscall.readlink, path)
|
||||
if not ok then
|
||||
print(name .. ": " .. path .. ": " .. tostring(target))
|
||||
anyErr = true
|
||||
else
|
||||
if not cloptions.n then print(target) else printInline(target) end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if anyErr then syscall.exit(1) end
|
||||
Reference in New Issue
Block a user