A [WIP] Library & Client implementation of luarocks
Warning
lux is a work in progress and does not have a stable release yet.
Lux serves as an application for:
- Installing and managing rocks
- Creating Lua projects with dependencies, build scripts and desired Lua versions
- Creating and publishing your own rocks
- Embedding rock manipulation logic into your own application
Note
This aims to be a full rewrite of luarocks
, with many flags altered to be more
ergonomic. This is not a drop-in replacement for luarocks
commands you may have in scripts.
lux <command> <options>
To view available options and their descriptions, run lux --help
.
Comparison with luarocks v3.11.1
As this project is still a work in progress, some luarocks features have not been (fully) implemented yet. On the other hand, lux has some features that are not present in luarocks.
The following table provides a brief (incomplete) comparison:
lux |
luarocks v3.11.1 |
|
---|---|---|
builtin build spec |
β | β |
make build spec |
β | β |
cmake build spec |
β | β |
command build spec |
β | β |
custom build backends | β 1 | β |
rust-mlua build spec |
β (builtin) | β (external build backend) |
RockSpecs with CVS/Mercurial/SVN/SSCM sources | β (YAGNI2) | β |
install pre-built binary rocks | β | β |
parallel builds/installs | β | β |
install multiple packages with a single command | β | β |
install packages using version constraints | β | β |
proper lockfile support with integrity checks | β | β (basic, dependency versions only) |
auto-detect external dependencies and Lua headers with pkg-config |
β | β |
automatic lua detection/installation | β | β |
resolve multiple versions of the same dependency at runtime | β (planned) | β |
run tests with busted | β | β |
code formatting with stylua | β | β |
linting with luacheck | β | β |
static type checking | β (planned) | β |
pack and upload pre-built binary rocks | β | β |
add/remove dependencies | β | β |
luarocks.org manifest namespaces | β | β |
luarocks.org dev packages | β | β |
lux
is licensed under MIT.
Contributions are more than welcome! See CONTRIBUTING.md for a guide.
Footnotes
-
Supported via a compatibility layer that uses luarocks as a backend. β©