#lua #manager #progress #early #package #install #nothing

bin+lib undulate

A lightweight package manager for Lua. An early work in progress, expect nothing to work!

1 unstable release

Uses old Rust 2015

0.1.0 Nov 2, 2017

#35 in #early

MIT license

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:

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

~25–36MB
~663K SLoC