mirror of
https://github.com/lune-org/lune.git
synced 2024-12-12 04:50:36 +00:00
Add editorconfig, fix some formatting
This commit is contained in:
parent
c2dc8e2eb9
commit
e340321604
8 changed files with 285 additions and 284 deletions
17
.editorconfig
Normal file
17
.editorconfig
Normal file
|
@ -0,0 +1,17 @@
|
|||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
indent_style = tab
|
||||
indent_size = 4
|
||||
|
||||
[*.{json,jsonc,json5]
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
|
||||
[*.{yml,yaml]
|
||||
indent_style = space
|
||||
indent_size = 2
|
440
CHANGELOG.md
440
CHANGELOG.md
|
@ -12,404 +12,404 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||
|
||||
### Added
|
||||
|
||||
- Added auto-generated API reference pages and documentation using GitHub wiki pages
|
||||
- Added support for `query` in `net.request` parameters, which enables usage of query parameters in URLs without having to manually URL encode values.
|
||||
- Added a new function `fs.move` to move / rename a file or directory from one path to another.
|
||||
- Implemented a new task scheduler which resolves several long-standing issues:
|
||||
- Added auto-generated API reference pages and documentation using GitHub wiki pages
|
||||
- Added support for `query` in `net.request` parameters, which enables usage of query parameters in URLs without having to manually URL encode values.
|
||||
- Added a new function `fs.move` to move / rename a file or directory from one path to another.
|
||||
- Implemented a new task scheduler which resolves several long-standing issues:
|
||||
|
||||
- Issues with yielding across the C-call/metamethod boundary no longer occur when calling certain async APIs that Lune provides.
|
||||
- Ordering of interleaved calls to `task.spawn/task.defer` is now completely deterministic, deferring is now guaranteed to run last even in these cases.
|
||||
- The minimum wait time possible when using `task.wait` and minimum delay time using `task.delay` are now much smaller, and only limited by the underlying OS implementation. For most systems this means `task.wait` and `task.delay` are now accurate down to about 5 milliseconds or less.
|
||||
- Issues with yielding across the C-call/metamethod boundary no longer occur when calling certain async APIs that Lune provides.
|
||||
- Ordering of interleaved calls to `task.spawn/task.defer` is now completely deterministic, deferring is now guaranteed to run last even in these cases.
|
||||
- The minimum wait time possible when using `task.wait` and minimum delay time using `task.delay` are now much smaller, and only limited by the underlying OS implementation. For most systems this means `task.wait` and `task.delay` are now accurate down to about 5 milliseconds or less.
|
||||
|
||||
### Changed
|
||||
|
||||
- Type definitions are now bundled as part of the Lune executable, meaning they no longer need to be downloaded.
|
||||
- `lune --generate-selene-types` will generate the Selene type definitions file, replacing `lune --download-selene-types`
|
||||
- `lune --generate-luau-types` will generate the Luau type definitions file, replacing `lune --download-luau-types`
|
||||
- Improved accuracy of Selene type definitions, strongly typed arrays are now used where possible
|
||||
- Improved error handling and messages for `net.serve`
|
||||
- Improved error handling and messages for `stdio.prompt`
|
||||
- File path representations on Windows now use legacy paths instead of UNC paths wherever possible, preventing some confusing cases where file paths don't work as expected
|
||||
- Type definitions are now bundled as part of the Lune executable, meaning they no longer need to be downloaded.
|
||||
- `lune --generate-selene-types` will generate the Selene type definitions file, replacing `lune --download-selene-types`
|
||||
- `lune --generate-luau-types` will generate the Luau type definitions file, replacing `lune --download-luau-types`
|
||||
- Improved accuracy of Selene type definitions, strongly typed arrays are now used where possible
|
||||
- Improved error handling and messages for `net.serve`
|
||||
- Improved error handling and messages for `stdio.prompt`
|
||||
- File path representations on Windows now use legacy paths instead of UNC paths wherever possible, preventing some confusing cases where file paths don't work as expected
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed `process.cwd` not having the correct ending path separator on Windows
|
||||
- Fixed remaining edge cases where the `task` and `coroutine` libraries weren't interoperable
|
||||
- Fixed `task.delay` keeping the script running even if it was cancelled using `task.cancel`
|
||||
- Fixed `stdio.prompt` blocking all other lua threads while prompting for input
|
||||
- Fixed `process.cwd` not having the correct ending path separator on Windows
|
||||
- Fixed remaining edge cases where the `task` and `coroutine` libraries weren't interoperable
|
||||
- Fixed `task.delay` keeping the script running even if it was cancelled using `task.cancel`
|
||||
- Fixed `stdio.prompt` blocking all other lua threads while prompting for input
|
||||
|
||||
## `0.4.0` - February 11th, 2023
|
||||
|
||||
### Added
|
||||
|
||||
- ### Web Sockets
|
||||
- ### Web Sockets
|
||||
|
||||
`net` now supports web sockets for both clients and servers! <br />
|
||||
Note that the web socket object is identical on both client and
|
||||
server, but how you retrieve a web socket object is different.
|
||||
`net` now supports web sockets for both clients and servers! <br />
|
||||
Note that the web socket object is identical on both client and
|
||||
server, but how you retrieve a web socket object is different.
|
||||
|
||||
#### Server API
|
||||
#### Server API
|
||||
|
||||
The server web socket API is an extension of the existing `net.serve` function. <br />
|
||||
This allows for serving both normal HTTP requests and web socket requests on the same port.
|
||||
The server web socket API is an extension of the existing `net.serve` function. <br />
|
||||
This allows for serving both normal HTTP requests and web socket requests on the same port.
|
||||
|
||||
Example usage:
|
||||
Example usage:
|
||||
|
||||
```lua
|
||||
net.serve(8080, {
|
||||
handleRequest = function(request)
|
||||
return "Hello, world!"
|
||||
end,
|
||||
handleWebSocket = function(socket)
|
||||
task.delay(10, function()
|
||||
socket.send("Timed out!")
|
||||
socket.close()
|
||||
end)
|
||||
-- The message will be nil when the socket has closed
|
||||
repeat
|
||||
local messageFromClient = socket.next()
|
||||
if messageFromClient == "Ping" then
|
||||
socket.send("Pong")
|
||||
end
|
||||
until messageFromClient == nil
|
||||
end,
|
||||
})
|
||||
```
|
||||
```lua
|
||||
net.serve(8080, {
|
||||
handleRequest = function(request)
|
||||
return "Hello, world!"
|
||||
end,
|
||||
handleWebSocket = function(socket)
|
||||
task.delay(10, function()
|
||||
socket.send("Timed out!")
|
||||
socket.close()
|
||||
end)
|
||||
-- The message will be nil when the socket has closed
|
||||
repeat
|
||||
local messageFromClient = socket.next()
|
||||
if messageFromClient == "Ping" then
|
||||
socket.send("Pong")
|
||||
end
|
||||
until messageFromClient == nil
|
||||
end,
|
||||
})
|
||||
```
|
||||
|
||||
#### Client API
|
||||
#### Client API
|
||||
|
||||
Example usage:
|
||||
Example usage:
|
||||
|
||||
```lua
|
||||
local socket = net.socket("ws://localhost:8080")
|
||||
```lua
|
||||
local socket = net.socket("ws://localhost:8080")
|
||||
|
||||
socket.send("Ping")
|
||||
socket.send("Ping")
|
||||
|
||||
task.delay(5, function()
|
||||
socket.close()
|
||||
end)
|
||||
task.delay(5, function()
|
||||
socket.close()
|
||||
end)
|
||||
|
||||
-- The message will be nil when the socket has closed
|
||||
repeat
|
||||
local messageFromServer = socket.next()
|
||||
if messageFromServer == "Ping" then
|
||||
socket.send("Pong")
|
||||
end
|
||||
until messageFromServer == nil
|
||||
```
|
||||
-- The message will be nil when the socket has closed
|
||||
repeat
|
||||
local messageFromServer = socket.next()
|
||||
if messageFromServer == "Ping" then
|
||||
socket.send("Pong")
|
||||
end
|
||||
until messageFromServer == nil
|
||||
```
|
||||
|
||||
### Changed
|
||||
|
||||
- `net.serve` now returns a `NetServeHandle` which can be used to stop serving requests safely.
|
||||
- `net.serve` now returns a `NetServeHandle` which can be used to stop serving requests safely.
|
||||
|
||||
Example usage:
|
||||
Example usage:
|
||||
|
||||
```lua
|
||||
local handle = net.serve(8080, function()
|
||||
return "Hello, world!"
|
||||
end)
|
||||
```lua
|
||||
local handle = net.serve(8080, function()
|
||||
return "Hello, world!"
|
||||
end)
|
||||
|
||||
print("Shutting down after 1 second...")
|
||||
task.wait(1)
|
||||
handle.stop()
|
||||
print("Shut down succesfully")
|
||||
```
|
||||
print("Shutting down after 1 second...")
|
||||
task.wait(1)
|
||||
handle.stop()
|
||||
print("Shut down succesfully")
|
||||
```
|
||||
|
||||
- The third and optional argument of `process.spawn` is now a global type `ProcessSpawnOptions`.
|
||||
- Setting `cwd` in the options for `process.spawn` to a path starting with a tilde (`~`) will now use a path relative to the platform-specific home / user directory.
|
||||
- `NetRequest` query parameters value has been changed to be a table of key-value pairs similar to `process.env`.
|
||||
If any query parameter is specified more than once in the request url, the value chosen will be the last one that was specified.
|
||||
- The internal http client for `net.request` now reuses headers and connections for more efficient requests.
|
||||
- Refactored the Lune rust crate to be much more user-friendly and documented all of the public functions.
|
||||
- The third and optional argument of `process.spawn` is now a global type `ProcessSpawnOptions`.
|
||||
- Setting `cwd` in the options for `process.spawn` to a path starting with a tilde (`~`) will now use a path relative to the platform-specific home / user directory.
|
||||
- `NetRequest` query parameters value has been changed to be a table of key-value pairs similar to `process.env`.
|
||||
If any query parameter is specified more than once in the request url, the value chosen will be the last one that was specified.
|
||||
- The internal http client for `net.request` now reuses headers and connections for more efficient requests.
|
||||
- Refactored the Lune rust crate to be much more user-friendly and documented all of the public functions.
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed `process.spawn` blocking all lua threads if the spawned child process yields.
|
||||
- Fixed `process.spawn` blocking all lua threads if the spawned child process yields.
|
||||
|
||||
## `0.3.0` - February 6th, 2023
|
||||
|
||||
### Added
|
||||
|
||||
- Added a new global `stdio` which replaces `console`
|
||||
- Added `stdio.write` which writes a string directly to stdout, without any newlines
|
||||
- Added `stdio.ewrite` which writes a string directly to stderr, without any newlines
|
||||
- Added `stdio.prompt` which will prompt the user for different kinds of input
|
||||
- Added a new global `stdio` which replaces `console`
|
||||
- Added `stdio.write` which writes a string directly to stdout, without any newlines
|
||||
- Added `stdio.ewrite` which writes a string directly to stderr, without any newlines
|
||||
- Added `stdio.prompt` which will prompt the user for different kinds of input
|
||||
|
||||
Example usage:
|
||||
Example usage:
|
||||
|
||||
```lua
|
||||
local text = stdio.prompt()
|
||||
```lua
|
||||
local text = stdio.prompt()
|
||||
|
||||
local text2 = stdio.prompt("text", "Please write some text")
|
||||
local text2 = stdio.prompt("text", "Please write some text")
|
||||
|
||||
local didConfirm = stdio.prompt("confirm", "Please confirm this action")
|
||||
local didConfirm = stdio.prompt("confirm", "Please confirm this action")
|
||||
|
||||
local optionIndex = stdio.prompt("select", "Please select an option", { "one", "two", "three" })
|
||||
local optionIndex = stdio.prompt("select", "Please select an option", { "one", "two", "three" })
|
||||
|
||||
local optionIndices = stdio.prompt(
|
||||
"multiselect",
|
||||
"Please select one or more options",
|
||||
{ "one", "two", "three", "four", "five" }
|
||||
)
|
||||
```
|
||||
local optionIndices = stdio.prompt(
|
||||
"multiselect",
|
||||
"Please select one or more options",
|
||||
{ "one", "two", "three", "four", "five" }
|
||||
)
|
||||
```
|
||||
|
||||
### Changed
|
||||
|
||||
- Migrated `console.setColor/resetColor` and `console.setStyle/resetStyle` to `stdio.color` and `stdio.style` to allow for more flexibility in custom printing using ANSI color codes. Check the documentation for new usage and behavior.
|
||||
- Migrated the pretty-printing and formatting behavior of `console.log/info/warn/error` to the standard Luau printing functions.
|
||||
- Migrated `console.setColor/resetColor` and `console.setStyle/resetStyle` to `stdio.color` and `stdio.style` to allow for more flexibility in custom printing using ANSI color codes. Check the documentation for new usage and behavior.
|
||||
- Migrated the pretty-printing and formatting behavior of `console.log/info/warn/error` to the standard Luau printing functions.
|
||||
|
||||
### Removed
|
||||
|
||||
- Removed printing functions `console.log/info/warn/error` in favor of regular global functions for printing.
|
||||
- Removed printing functions `console.log/info/warn/error` in favor of regular global functions for printing.
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed scripts hanging indefinitely on error
|
||||
- Fixed scripts hanging indefinitely on error
|
||||
|
||||
## `0.2.2` - February 5th, 2023
|
||||
|
||||
### Added
|
||||
|
||||
- Added global types for networking & child process APIs
|
||||
- `net.request` gets `NetFetchParams` and `NetFetchResponse` for its argument and return value
|
||||
- `net.serve` gets `NetRequest` and `NetResponse` for the handler function argument and return value
|
||||
- `process.spawn` gets `ProcessSpawnOptions` for its third and optional parameter
|
||||
- Added global types for networking & child process APIs
|
||||
- `net.request` gets `NetFetchParams` and `NetFetchResponse` for its argument and return value
|
||||
- `net.serve` gets `NetRequest` and `NetResponse` for the handler function argument and return value
|
||||
- `process.spawn` gets `ProcessSpawnOptions` for its third and optional parameter
|
||||
|
||||
### Changed
|
||||
|
||||
- Reorganize repository structure to take advantage of cargo workspaces, improves compile times
|
||||
- Reorganize repository structure to take advantage of cargo workspaces, improves compile times
|
||||
|
||||
## `0.2.1` - February 3rd, 2023
|
||||
|
||||
### Added
|
||||
|
||||
- Added support for string interpolation syntax (update to Luau 0.561)
|
||||
- Added network server functionality using `net.serve`
|
||||
- Added support for string interpolation syntax (update to Luau 0.561)
|
||||
- Added network server functionality using `net.serve`
|
||||
|
||||
Example usage:
|
||||
Example usage:
|
||||
|
||||
```lua
|
||||
net.serve(8080, function(request)
|
||||
print(`Got a {request.method} request at {request.path}!`)
|
||||
```lua
|
||||
net.serve(8080, function(request)
|
||||
print(`Got a {request.method} request at {request.path}!`)
|
||||
|
||||
local data = net.jsonDecode(request.body)
|
||||
local data = net.jsonDecode(request.body)
|
||||
|
||||
-- For simple text responses with a 200 status
|
||||
return "OK"
|
||||
-- For simple text responses with a 200 status
|
||||
return "OK"
|
||||
|
||||
-- For anything else
|
||||
return {
|
||||
status = 203,
|
||||
headers = { ["Content-Type"] = "application/json" },
|
||||
body = net.jsonEncode({
|
||||
message = "echo",
|
||||
data = data,
|
||||
})
|
||||
}
|
||||
end)
|
||||
```
|
||||
-- For anything else
|
||||
return {
|
||||
status = 203,
|
||||
headers = { ["Content-Type"] = "application/json" },
|
||||
body = net.jsonEncode({
|
||||
message = "echo",
|
||||
data = data,
|
||||
})
|
||||
}
|
||||
end)
|
||||
```
|
||||
|
||||
### Changed
|
||||
|
||||
- Improved type definitions file for Selene, now including constants like `process.env` + tags such as `readonly` and `mustuse` wherever applicable
|
||||
- Improved type definitions file for Selene, now including constants like `process.env` + tags such as `readonly` and `mustuse` wherever applicable
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed type definitions file for Selene not including all API members and parameters
|
||||
- Fixed `process.exit` exiting at the first yield instead of exiting instantly as it should
|
||||
- Fixed type definitions file for Selene not including all API members and parameters
|
||||
- Fixed `process.exit` exiting at the first yield instead of exiting instantly as it should
|
||||
|
||||
## `0.2.0` - January 28th, 2023
|
||||
|
||||
### Added
|
||||
|
||||
- Added full documentation for all global APIs provided by Lune! This includes over 200 lines of pure documentation about behavior & error cases for all of the current 35 constants & functions. Check the [README](/README.md) to find out how to enable documentation in your editor.
|
||||
- Added full documentation for all global APIs provided by Lune! This includes over 200 lines of pure documentation about behavior & error cases for all of the current 35 constants & functions. Check the [README](/README.md) to find out how to enable documentation in your editor.
|
||||
|
||||
- Added a third argument `options` for `process.spawn`:
|
||||
- Added a third argument `options` for `process.spawn`:
|
||||
|
||||
- `cwd` - The current working directory for the process
|
||||
- `env` - Extra environment variables to give to the process
|
||||
- `shell` - Whether to run in a shell or not - set to `true` to run using the default shell, or a string to run using a specific shell
|
||||
- `stdio` - How to treat output and error streams from the child process - set to `"inherit"` to pass output and error streams to the current process
|
||||
- `cwd` - The current working directory for the process
|
||||
- `env` - Extra environment variables to give to the process
|
||||
- `shell` - Whether to run in a shell or not - set to `true` to run using the default shell, or a string to run using a specific shell
|
||||
- `stdio` - How to treat output and error streams from the child process - set to `"inherit"` to pass output and error streams to the current process
|
||||
|
||||
- Added `process.cwd`, the path to the current working directory in which the Lune script is running
|
||||
- Added `process.cwd`, the path to the current working directory in which the Lune script is running
|
||||
|
||||
## `0.1.3` - January 25th, 2023
|
||||
|
||||
### Added
|
||||
|
||||
- Added a `--list` subcommand to list scripts found in the `lune` or `.lune` directory.
|
||||
- Added a `--list` subcommand to list scripts found in the `lune` or `.lune` directory.
|
||||
|
||||
## `0.1.2` - January 24th, 2023
|
||||
|
||||
### Added
|
||||
|
||||
- Added automatic publishing of the Lune library to [crates.io](https://crates.io/crates/lune)
|
||||
- Added automatic publishing of the Lune library to [crates.io](https://crates.io/crates/lune)
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed scripts that terminate instantly sometimes hanging
|
||||
- Fixed scripts that terminate instantly sometimes hanging
|
||||
|
||||
## `0.1.1` - January 24th, 2023
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed errors containing `./` and / or `../` in the middle of file paths
|
||||
- Potential fix for spawned processes that yield erroring with "attempt to yield across metamethod/c-call boundary"
|
||||
- Fixed errors containing `./` and / or `../` in the middle of file paths
|
||||
- Potential fix for spawned processes that yield erroring with "attempt to yield across metamethod/c-call boundary"
|
||||
|
||||
## `0.1.0` - January 24th, 2023
|
||||
|
||||
### Added
|
||||
|
||||
- `task` now supports passing arguments in `task.spawn` / `task.delay` / `task.defer`
|
||||
- `require` now uses paths relative to the file instead of being relative to the current directory, which is consistent with almost all other languages but not original Lua / Luau - this is a breaking change but will allow for proper packaging of third-party modules and more in the future.
|
||||
- **_NOTE:_** _If you still want to use the default Lua behavior instead of relative paths, set the environment variable `LUAU_PWD_REQUIRE` to `true`_
|
||||
- `task` now supports passing arguments in `task.spawn` / `task.delay` / `task.defer`
|
||||
- `require` now uses paths relative to the file instead of being relative to the current directory, which is consistent with almost all other languages but not original Lua / Luau - this is a breaking change but will allow for proper packaging of third-party modules and more in the future.
|
||||
- **_NOTE:_** _If you still want to use the default Lua behavior instead of relative paths, set the environment variable `LUAU_PWD_REQUIRE` to `true`_
|
||||
|
||||
### Changed
|
||||
|
||||
- Improved error message when an invalid file path is passed to `require`
|
||||
- Much improved error formatting and stack traces
|
||||
- Improved error message when an invalid file path is passed to `require`
|
||||
- Much improved error formatting and stack traces
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed downloading of type definitions making json files instead of the proper format
|
||||
- Process termination will now always make sure all lua state is cleaned up before exiting, in all cases
|
||||
- Fixed downloading of type definitions making json files instead of the proper format
|
||||
- Process termination will now always make sure all lua state is cleaned up before exiting, in all cases
|
||||
|
||||
## `0.0.6` - January 23rd, 2023
|
||||
|
||||
### Added
|
||||
|
||||
- Initial implementation of [Roblox's task library](https://create.roblox.com/docs/reference/engine/libraries/task), with some caveats:
|
||||
- Initial implementation of [Roblox's task library](https://create.roblox.com/docs/reference/engine/libraries/task), with some caveats:
|
||||
|
||||
- Minimum wait / delay time is currently set to 10ms, subject to change
|
||||
- It is not yet possible to pass arguments to tasks created using `task.spawn` / `task.delay` / `task.defer`
|
||||
- Timings for `task.defer` are flaky and deferred tasks are not (yet) guaranteed to run after spawned tasks
|
||||
- Minimum wait / delay time is currently set to 10ms, subject to change
|
||||
- It is not yet possible to pass arguments to tasks created using `task.spawn` / `task.delay` / `task.defer`
|
||||
- Timings for `task.defer` are flaky and deferred tasks are not (yet) guaranteed to run after spawned tasks
|
||||
|
||||
With all that said, everything else should be stable!
|
||||
With all that said, everything else should be stable!
|
||||
|
||||
- Mixing and matching the `coroutine` library with `task` works in all cases
|
||||
- `process.exit()` will stop all spawned / delayed / deferred threads and exit the process
|
||||
- Lune is guaranteed to keep running until there are no longer any waiting threads
|
||||
- Mixing and matching the `coroutine` library with `task` works in all cases
|
||||
- `process.exit()` will stop all spawned / delayed / deferred threads and exit the process
|
||||
- Lune is guaranteed to keep running until there are no longer any waiting threads
|
||||
|
||||
If any of the abovementioned things do not work as expected, it is a bug, please file an issue!
|
||||
If any of the abovementioned things do not work as expected, it is a bug, please file an issue!
|
||||
|
||||
### Fixed
|
||||
|
||||
- Potential fix for spawned processes that yield erroring with "attempt to yield across metamethod/c-call boundary"
|
||||
- Potential fix for spawned processes that yield erroring with "attempt to yield across metamethod/c-call boundary"
|
||||
|
||||
## `0.0.5` - January 22nd, 2023
|
||||
|
||||
### Added
|
||||
|
||||
- Added full test suites for all Lune globals to ensure correct behavior
|
||||
- Added library version of Lune that can be used from other Rust projects
|
||||
- Added full test suites for all Lune globals to ensure correct behavior
|
||||
- Added library version of Lune that can be used from other Rust projects
|
||||
|
||||
### Changed
|
||||
|
||||
- Large internal changes to allow for implementing the `task` library.
|
||||
- Improved general formatting of errors to make them more readable & glanceable
|
||||
- Improved output formatting of non-primitive types
|
||||
- Improved output formatting of empty tables
|
||||
- Large internal changes to allow for implementing the `task` library.
|
||||
- Improved general formatting of errors to make them more readable & glanceable
|
||||
- Improved output formatting of non-primitive types
|
||||
- Improved output formatting of empty tables
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed double stack trace for certain kinds of errors
|
||||
- Fixed double stack trace for certain kinds of errors
|
||||
|
||||
## `0.0.4` - January 21st, 2023
|
||||
|
||||
### Added
|
||||
|
||||
- Added `process.args` for inspecting values given to Lune when running (read only)
|
||||
- Added `process.env` which is a plain table where you can get & set environment variables
|
||||
- Added `process.args` for inspecting values given to Lune when running (read only)
|
||||
- Added `process.env` which is a plain table where you can get & set environment variables
|
||||
|
||||
### Changed
|
||||
|
||||
- Improved error formatting & added proper file name to stack traces
|
||||
- Improved error formatting & added proper file name to stack traces
|
||||
|
||||
### Removed
|
||||
|
||||
- Removed `...` for process arguments, use `process.args` instead
|
||||
- Removed individual functions for getting & setting environment variables, use `process.env` instead
|
||||
- Removed `...` for process arguments, use `process.args` instead
|
||||
- Removed individual functions for getting & setting environment variables, use `process.env` instead
|
||||
|
||||
## `0.0.3` - January 20th, 2023
|
||||
|
||||
### Added
|
||||
|
||||
- Added networking functions under `net`
|
||||
- Added networking functions under `net`
|
||||
|
||||
Example usage:
|
||||
Example usage:
|
||||
|
||||
```lua
|
||||
local apiResult = net.request({
|
||||
url = "https://jsonplaceholder.typicode.com/posts/1",
|
||||
method = "PATCH",
|
||||
headers = {
|
||||
["Content-Type"] = "application/json",
|
||||
},
|
||||
body = net.jsonEncode({
|
||||
title = "foo",
|
||||
body = "bar",
|
||||
}),
|
||||
})
|
||||
```lua
|
||||
local apiResult = net.request({
|
||||
url = "https://jsonplaceholder.typicode.com/posts/1",
|
||||
method = "PATCH",
|
||||
headers = {
|
||||
["Content-Type"] = "application/json",
|
||||
},
|
||||
body = net.jsonEncode({
|
||||
title = "foo",
|
||||
body = "bar",
|
||||
}),
|
||||
})
|
||||
|
||||
local apiResponse = net.jsonDecode(apiResult.body)
|
||||
assert(apiResponse.title == "foo", "Invalid json response")
|
||||
assert(apiResponse.body == "bar", "Invalid json response")
|
||||
```
|
||||
local apiResponse = net.jsonDecode(apiResult.body)
|
||||
assert(apiResponse.title == "foo", "Invalid json response")
|
||||
assert(apiResponse.body == "bar", "Invalid json response")
|
||||
```
|
||||
|
||||
- Added console logging & coloring functions under `console`
|
||||
- Added console logging & coloring functions under `console`
|
||||
|
||||
This piece of code:
|
||||
This piece of code:
|
||||
|
||||
```lua
|
||||
local tab = { Integer = 1234, Hello = { "World" } }
|
||||
console.log(tab)
|
||||
```
|
||||
```lua
|
||||
local tab = { Integer = 1234, Hello = { "World" } }
|
||||
console.log(tab)
|
||||
```
|
||||
|
||||
Will print the following formatted text to the console, **_with syntax highlighting_**:
|
||||
Will print the following formatted text to the console, **_with syntax highlighting_**:
|
||||
|
||||
```lua
|
||||
{
|
||||
Integer = 1234,
|
||||
Hello = {
|
||||
"World",
|
||||
}
|
||||
}
|
||||
```
|
||||
```lua
|
||||
{
|
||||
Integer = 1234,
|
||||
Hello = {
|
||||
"World",
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Additional utility functions exist with the same behavior but that also print out a colored
|
||||
tag together with any data given to them: `console.info`, `console.warn`, `console.error` -
|
||||
These print out prefix tags `[INFO]`, `[WARN]`, `[ERROR]` in blue, orange, and red, respectively.
|
||||
Additional utility functions exist with the same behavior but that also print out a colored
|
||||
tag together with any data given to them: `console.info`, `console.warn`, `console.error` -
|
||||
These print out prefix tags `[INFO]`, `[WARN]`, `[ERROR]` in blue, orange, and red, respectively.
|
||||
|
||||
### Changed
|
||||
|
||||
- The `json` api is now part of `net`
|
||||
- `json.encode` becomes `net.jsonEncode`
|
||||
- `json.decode` become `net.jsonDecode`
|
||||
- The `json` api is now part of `net`
|
||||
- `json.encode` becomes `net.jsonEncode`
|
||||
- `json.decode` become `net.jsonDecode`
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed JSON decode not working properly
|
||||
- Fixed JSON decode not working properly
|
||||
|
||||
## `0.0.2` - January 19th, 2023
|
||||
|
||||
### Added
|
||||
|
||||
- Added support for command-line parameters to scripts
|
||||
- Added support for command-line parameters to scripts
|
||||
|
||||
These can be accessed as a vararg in the root of a script:
|
||||
These can be accessed as a vararg in the root of a script:
|
||||
|
||||
```lua
|
||||
local firstArg: string, secondArg: string = ...
|
||||
print(firstArg, secondArg)
|
||||
```
|
||||
```lua
|
||||
local firstArg: string, secondArg: string = ...
|
||||
print(firstArg, secondArg)
|
||||
```
|
||||
|
||||
- Added CLI parameters for downloading type definitions:
|
||||
- Added CLI parameters for downloading type definitions:
|
||||
|
||||
- `lune --download-selene-types` to download Selene types to the current directory
|
||||
- `lune --download-luau-types` to download Luau types to the current directory
|
||||
- `lune --download-selene-types` to download Selene types to the current directory
|
||||
- `lune --download-luau-types` to download Luau types to the current directory
|
||||
|
||||
These files will be downloaded as `lune.yml` and `luneTypes.d.luau`
|
||||
respectively and are also available in each release on GitHub.
|
||||
These files will be downloaded as `lune.yml` and `luneTypes.d.luau`
|
||||
respectively and are also available in each release on GitHub.
|
||||
|
||||
## `0.0.1` - January 18th, 2023
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@ if #process.args > 0 then
|
|||
error("Too many arguments!")
|
||||
end
|
||||
else
|
||||
print("Got no arguments ☹️")
|
||||
print("Got no arguments ☹️")
|
||||
end
|
||||
|
||||
|
||||
|
@ -75,14 +75,14 @@ end
|
|||
|
||||
Writing a module
|
||||
|
||||
Modularizing and splitting up your code is Lune is very straight-forward,
|
||||
in contrast to other scripting languages and shells such as bash
|
||||
Modularizing and splitting up your code is Lune is very straight-forward,
|
||||
in contrast to other scripting languages and shells such as bash
|
||||
]]
|
||||
|
||||
local module = {}
|
||||
|
||||
function module.sayHello()
|
||||
print("Hello, Lune! 🌙")
|
||||
print("Hello, Lune! 🌙")
|
||||
end
|
||||
|
||||
return module
|
||||
|
@ -94,7 +94,7 @@ return module
|
|||
|
||||
Using a function from another module / script
|
||||
|
||||
Lune has path-relative imports, similar to other popular languages such as JavaScript
|
||||
Lune has path-relative imports, similar to other popular languages such as JavaScript
|
||||
]]
|
||||
|
||||
local module = require("../modules/module")
|
||||
|
@ -107,7 +107,7 @@ module.sayHello()
|
|||
|
||||
Spawning concurrent tasks
|
||||
|
||||
These tasks will run at the same time as other Lua code which lets you do primitive multitasking
|
||||
These tasks will run at the same time as other Lua code which lets you do primitive multitasking
|
||||
]]
|
||||
|
||||
task.spawn(function()
|
||||
|
@ -173,7 +173,7 @@ end
|
|||
|
||||
Call out to another program / executable
|
||||
|
||||
You can also get creative and combine this with example #6 to spawn several programs at the same time!
|
||||
You can also get creative and combine this with example #6 to spawn several programs at the same time!
|
||||
]]
|
||||
|
||||
print("Sending 4 pings to google 🌏")
|
||||
|
@ -190,7 +190,7 @@ local result = process.spawn("ping", {
|
|||
Using the result of a spawned process, exiting the process
|
||||
|
||||
This looks scary with lots of weird symbols, but, it's just some Lua-style pattern matching
|
||||
to parse the lines of "min/avg/max/stddev = W/X/Y/Z ms" that the ping program outputs to us
|
||||
to parse the lines of "min/avg/max/stddev = W/X/Y/Z ms" that the ping program outputs to us
|
||||
]]
|
||||
|
||||
if result.ok then
|
||||
|
@ -302,12 +302,12 @@ VALID=true
|
|||
COUNT=1
|
||||
while [ $VALID ]
|
||||
do
|
||||
echo $COUNT
|
||||
if [ $COUNT -eq 5 ];
|
||||
then
|
||||
break
|
||||
fi
|
||||
((COUNT++))
|
||||
echo $COUNT
|
||||
if [ $COUNT -eq 5 ];
|
||||
then
|
||||
break
|
||||
fi
|
||||
((COUNT++))
|
||||
done
|
||||
```
|
||||
|
||||
|
@ -317,10 +317,10 @@ done
|
|||
local valid = true
|
||||
local count = 1
|
||||
while valid do
|
||||
print(count)
|
||||
if count == 5 then
|
||||
break
|
||||
end
|
||||
count += 1
|
||||
print(count)
|
||||
if count == 5 then
|
||||
break
|
||||
end
|
||||
count += 1
|
||||
end
|
||||
```
|
||||
|
|
|
@ -10,24 +10,24 @@ These steps assume you have already installed Lune and that it is available to r
|
|||
2. Run `lune --generate-docs-file` to generate a Luau LSP documentation file (`luneDocs.json`) in the current directory
|
||||
3. Modify your VSCode settings, either by using the settings menu or in `settings.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"luau-lsp.require.mode": "relativeToFile", // Set the require mode to work with Lune
|
||||
"luau-lsp.types.definitionFiles": ["luneTypes.d.luau"], // Add type definitions for Lune globals
|
||||
"luau-lsp.types.documentationFiles": ["luneDocs.json"] // Add documentation for Lune globals
|
||||
}
|
||||
```
|
||||
```json
|
||||
{
|
||||
"luau-lsp.require.mode": "relativeToFile", // Set the require mode to work with Lune
|
||||
"luau-lsp.types.definitionFiles": ["luneTypes.d.luau"], // Add type definitions for Lune globals
|
||||
"luau-lsp.types.documentationFiles": ["luneDocs.json"] // Add documentation for Lune globals
|
||||
}
|
||||
```
|
||||
|
||||
## Selene
|
||||
|
||||
1. Run `lune --generate-selene-types` to generate a Selene type definitions file (`lune.yml`) in the current directory
|
||||
2. Modify your Selene settings in `selene.toml`:
|
||||
|
||||
```yaml
|
||||
# Use this if Lune is the only thing you use Luau files with:
|
||||
std = "luau+lune"
|
||||
# OR use this if your project also contains Roblox-specific Luau code:
|
||||
std = "roblox+lune"
|
||||
# If you are also using the Luau type definitions file, it may cause issues, and can be safely ignored:
|
||||
exclude = ["luneTypes.d.luau"]
|
||||
```
|
||||
```yaml
|
||||
# Use this if Lune is the only thing you use Luau files with:
|
||||
std = "luau+lune"
|
||||
# OR use this if your project also contains Roblox-specific Luau code:
|
||||
std = "roblox+lune"
|
||||
# If you are also using the Luau type definitions file, it may cause issues, and can be safely ignored:
|
||||
exclude = ["luneTypes.d.luau"]
|
||||
```
|
||||
|
|
|
@ -6,20 +6,4 @@ Here you can find tutorials as well as a full API reference for all of Lune's bu
|
|||
|
||||
If you are just getting started, head over to the [installation](https://github.com/filiptibell/lune/wiki/Getting-Started---1-Installation) page!
|
||||
|
||||
## Page Reference
|
||||
|
||||
- Getting Started
|
||||
|
||||
- [1. Installation](https://github.com/filiptibell/lune/wiki/Getting-Started---1-Installation)
|
||||
- [2. Writing Scripts](https://github.com/filiptibell/lune/wiki/Getting-Started---2-Writing-Scripts)
|
||||
- [3. Running Scripts](https://github.com/filiptibell/lune/wiki/Getting-Started---3-Running-Scripts)
|
||||
- [4. Editor Setup](https://github.com/filiptibell/lune/wiki/Getting-Started---4-Editor-Setup)
|
||||
|
||||
- API Reference
|
||||
|
||||
- [FS](https://github.com/filiptibell/lune/wiki/API-Reference---FS)
|
||||
- [Net](https://github.com/filiptibell/lune/wiki/API-Reference---Net)
|
||||
- [Process](https://github.com/filiptibell/lune/wiki/API-Reference---Process)
|
||||
- [Stdio](https://github.com/filiptibell/lune/wiki/API-Reference---Stdio)
|
||||
- [Task](https://github.com/filiptibell/lune/wiki/API-Reference---Task)
|
||||
- [Uncategorized](https://github.com/filiptibell/lune/wiki/API-Reference---Uncategorized)
|
||||
Anything else can be found in the navigation sidebar.
|
||||
|
|
|
@ -2,17 +2,17 @@
|
|||
|
||||
# Home
|
||||
|
||||
- [Getting Started](https://github.com/filiptibell/lune/wiki)
|
||||
- [1. Installation](https://github.com/filiptibell/lune/wiki/Getting-Started---1-Installation)
|
||||
- [2. Writing Scripts](https://github.com/filiptibell/lune/wiki/Getting-Started---2-Writing-Scripts)
|
||||
- [3. Running Scripts](https://github.com/filiptibell/lune/wiki/Getting-Started---3-Running-Scripts)
|
||||
- [4. Editor Setup](https://github.com/filiptibell/lune/wiki/Getting-Started---4-Editor-Setup)
|
||||
- [Getting Started](https://github.com/filiptibell/lune/wiki)
|
||||
- [1. Installation](https://github.com/filiptibell/lune/wiki/Getting-Started---1-Installation)
|
||||
- [2. Writing Scripts](https://github.com/filiptibell/lune/wiki/Getting-Started---2-Writing-Scripts)
|
||||
- [3. Running Scripts](https://github.com/filiptibell/lune/wiki/Getting-Started---3-Running-Scripts)
|
||||
- [4. Editor Setup](https://github.com/filiptibell/lune/wiki/Getting-Started---4-Editor-Setup)
|
||||
|
||||
# API Reference
|
||||
|
||||
- [FS](https://github.com/filiptibell/lune/wiki/API-Reference---FS)
|
||||
- [Net](https://github.com/filiptibell/lune/wiki/API-Reference---Net)
|
||||
- [Process](https://github.com/filiptibell/lune/wiki/API-Reference---Process)
|
||||
- [Stdio](https://github.com/filiptibell/lune/wiki/API-Reference---Stdio)
|
||||
- [Task](https://github.com/filiptibell/lune/wiki/API-Reference---Task)
|
||||
- [Uncategorized](https://github.com/filiptibell/lune/wiki/API-Reference---Uncategorized)
|
||||
- [FS](https://github.com/filiptibell/lune/wiki/API-Reference---FS)
|
||||
- [Net](https://github.com/filiptibell/lune/wiki/API-Reference---Net)
|
||||
- [Process](https://github.com/filiptibell/lune/wiki/API-Reference---Process)
|
||||
- [Stdio](https://github.com/filiptibell/lune/wiki/API-Reference---Stdio)
|
||||
- [Task](https://github.com/filiptibell/lune/wiki/API-Reference---Task)
|
||||
- [Uncategorized](https://github.com/filiptibell/lune/wiki/API-Reference---Uncategorized)
|
||||
|
|
Loading…
Reference in a new issue