39 lines
1.1 KiB
Text
39 lines
1.1 KiB
Text
--!strict
|
|
local process = require("@lune/process")
|
|
local task = require("@lune/task")
|
|
|
|
--- Start a process with the given command and options
|
|
--- ```luau
|
|
--- spawn.start("lune run test")
|
|
--- ```
|
|
--- @param cmd string
|
|
--- @param options process.SpawnOptions?
|
|
--- @return process.SpawnResult
|
|
local function start_process(cmd: string, options: process.SpawnOptions?): process.SpawnResult
|
|
local arguments = string.split(cmd, " ")
|
|
local command = arguments[1]
|
|
table.remove(arguments, 1)
|
|
|
|
local opts: process.SpawnOptions = options ~= nil and options or {}
|
|
opts.stdio = opts.stdio ~= nil and opts.stdio or "forward"
|
|
|
|
return process.spawn(command, arguments, opts)
|
|
end
|
|
|
|
--- `task.spawn` a process with the given command and options
|
|
--- ```luau
|
|
--- spawn.spawn("lune run test") -- process now runs in the background!
|
|
--- ```
|
|
--- @param cmd string
|
|
--- @param options process.SpawnOptions?
|
|
--- @return process.SpawnResult
|
|
local function spawn_process(cmd: string, options: process.SpawnOptions?)
|
|
task.spawn(start_process, cmd, options)
|
|
end
|
|
|
|
local spawn = {
|
|
start = start_process,
|
|
spawn = spawn_process,
|
|
}
|
|
|
|
return spawn
|