forgot to commit openos
This commit is contained in:
70
data/openos/bin/mktmp.lua
Normal file
70
data/openos/bin/mktmp.lua
Normal file
@@ -0,0 +1,70 @@
|
||||
local fs = require("filesystem")
|
||||
local shell = require("shell")
|
||||
local sh = require("sh")
|
||||
|
||||
local touch = loadfile(shell.resolve("touch", "lua"))
|
||||
local mkdir = loadfile(shell.resolve("mkdir", "lua"))
|
||||
|
||||
if not touch then
|
||||
local errorMessage = "missing tools for mktmp"
|
||||
io.stderr:write(errorMessage .. '\n')
|
||||
return false, errorMessage
|
||||
end
|
||||
|
||||
local args, ops = shell.parse(...)
|
||||
|
||||
local function pop(...)
|
||||
local result
|
||||
for _,key in ipairs({...}) do
|
||||
result = ops[key] or result
|
||||
ops[key] = nil
|
||||
end
|
||||
return result
|
||||
end
|
||||
|
||||
local directory = pop('d')
|
||||
local verbose = pop('v', 'verbose')
|
||||
local quiet = pop('q', 'quiet')
|
||||
|
||||
if pop('help') or #args > 1 or next(ops) then
|
||||
print([[Usage: mktmp [OPTION] [PATH]
|
||||
Create a new file with a random name in $TMPDIR or PATH argument if given
|
||||
-d create a directory instead of a file
|
||||
-v, --verbose print result to stdout, even if no tty
|
||||
-q, --quiet do not print results to stdout, even if tty (verbose overrides)
|
||||
--help print this help message]])
|
||||
if next(ops) then
|
||||
io.stderr:write("invalid option: " .. (next(ops)) .. '\n')
|
||||
return 1
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
if not verbose then
|
||||
if not quiet then
|
||||
if io.stdout.tty then
|
||||
verbose = true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local prefix = args[1] or os.getenv("TMPDIR") .. '/'
|
||||
if not fs.exists(prefix) then
|
||||
io.stderr:write(
|
||||
string.format(
|
||||
"cannot create tmp file or directory at %s, it does not exist\n",
|
||||
prefix))
|
||||
return 1
|
||||
end
|
||||
|
||||
local tmp = os.tmpname()
|
||||
local ok, reason = (directory and mkdir or touch)(tmp)
|
||||
|
||||
if sh.internal.command_passed(ok) then
|
||||
if verbose then
|
||||
print(tmp)
|
||||
end
|
||||
return tmp
|
||||
end
|
||||
|
||||
return ok, reason
|
||||
Reference in New Issue
Block a user