1 unstable release
Uses old Rust 2015
0.1.0 | Nov 2, 2017 |
---|
#30 in #early
8KB
120 lines
Undulate
A package manager for Lua. It's an early work in progress.
Undulate is optimized for pure Lua dependencies, like the ones that you'd typically use in a LÖVE game. It will support native dependencies and LuaRocks rocks in the future, too!
Installation
Pre-built binaries will be available for several platforms eventually.
For now:
- Have the latest stable Rust
- Run
cargo install undulate
- Undulate is available as
und
!
Usage
Undulate has only a few, single-purpose commands. You can use und help
if you need a quick reference!
und init [<PATH>]
Initializes a new Undulate module (an 'undule') in the given path. By default, this is the current directory.
und add <PACKAGE> [<PACKAGE>...]
Installs one or more dependencies and saves them to the dependency list.
und remove <PACKAGE> [<PACKAGE>...]
Removes one or more dependencies.
und install
Installs all the dependencies as specified by the current dependency list.
FAQ
Why write this in Rust?
Writing Undulate in Lua would make it depend on the version of Lua the user is targeting. There's no reason to do that. It would also shackle the project to LuaRocks.
Undulate could be written in any portable compiled language. I chose Rust because of strong error modeling, a solid ecosystem, and a distribution method in the form of Cargo and crates.io.
Why not LuaRocks?
LuaRocks:
- Installs packages globally by default
- Creates a complicated systree when installing packages
- Uses Lua as a configuration format, which is hostile to other tools
- Has a convoluted package specification
- Has poor Windows support, requiring admin elevation by default and awkward batch script installation
License
Undulate is available under the MIT license. See LICENSE.md for details.
Dependencies
~24–33MB
~636K SLoC