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!
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
!
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.
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.
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
Undulate is available under the MIT license. See LICENSE.md for details.