fix: Releases, port to new scripts
"+ Releases used the lib/ folder instead of a darklua processed dist/ folder, leading to them using unsupported string requires" -m "+ Port lune scripts to new, more awesome and strictly typed scripts" -m "+ Bump to and release v0.1.1"
This commit is contained in:
parent
655d47274e
commit
f30b3b677d
21 changed files with 2671 additions and 64 deletions
39
.lune/util/spawn.luau
Normal file
39
.lune/util/spawn.luau
Normal file
|
@ -0,0 +1,39 @@
|
|||
--!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
|
44
.lune/util/watch.luau
Normal file
44
.lune/util/watch.luau
Normal file
|
@ -0,0 +1,44 @@
|
|||
--!strict
|
||||
local fs = require("@lune/fs")
|
||||
local task = require("@lune/task")
|
||||
|
||||
local function watch(path: string, on_change: (path: string, contents: string) -> ())
|
||||
local initial_metadata = fs.metadata(path)
|
||||
if not initial_metadata.exists then
|
||||
return
|
||||
end
|
||||
|
||||
local initial_contents = fs.readFile(path)
|
||||
|
||||
local initial_success, why = pcall(on_change :: any, path, initial_contents) -- :: any because otherwise it shits itself and the type doesn't give (boolean, string)??
|
||||
if not initial_success then
|
||||
warn(`There was an error while trying to start the watcher thread:\n{why}`)
|
||||
return
|
||||
end
|
||||
|
||||
local last_modification = initial_metadata.modifiedAt
|
||||
|
||||
while true do
|
||||
local metadata = fs.metadata(path)
|
||||
|
||||
if not metadata.exists then
|
||||
continue
|
||||
end
|
||||
|
||||
if metadata.modifiedAt == last_modification then
|
||||
continue
|
||||
end
|
||||
last_modification = metadata.modifiedAt
|
||||
|
||||
local contents = fs.readFile(path)
|
||||
|
||||
local success, err = pcall(on_change :: any, path, contents)
|
||||
if not success then
|
||||
warn(err)
|
||||
end
|
||||
|
||||
task.wait(1)
|
||||
end
|
||||
end
|
||||
|
||||
return watch
|
Loading…
Add table
Add a link
Reference in a new issue