IonutParau 687cfebd00 testing version of LuaBIOS and OpenOS
people were having issues getting them to work so now we promote consistency
2025-06-28 20:41:49 +02:00

71 lines
1.6 KiB
Lua

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