Lover is a open source command line build system and runner for Love2D projects inspired by Cargo.
Wiki | Example project | CLI usage | Constants
You can access certain constants like the game's version by the use of os.getenv()
.
local version = os.getenv("LOVER_PKG_VERSION")
You can easily build your game for all supported platforms with a single command.
lover build <platform>...
Example:
lover build linux
lover build win32 win64 linux
Love binaries required for building are downloaded automatically and can easily be managed by using Lover commands.
lover install <name>
to installlover uninstall <name>
to removelover dep <name>
to get detailslover dep
to list
Example:
lover install love-win64
- β Full support: The platform is fully supported and should work. Treated with the highest priority
- π‘ Partial support: The platform mostly works but you may encounter issues
- π Planned: Support will be implemented in future
- β Not yet needed: The platform is not widely used. If you want support for it you can open an issue.
- β Testers/maintainers needed: someone is needed to test and/or maintain the platform
- β Impossible: The platform is currently impossible to implement
Name | Arch | Alias | Status |
---|---|---|---|
Universal LOVE file | love |
β | |
Linux AppImage | x86_64 | linux |
β |
Linux AppImage | x86_32 | β | |
Windows EXE | x86_64 | win64 |
β |
Windows EXE | x86_32 | win32 |
β |
MacOS | β | ||
Web | π | ||
Android | π | ||
Nintendo 3DS 3DSX |
π | ||
Nintendo 3DS CIA |
π | ||
Nintendo Wii U | β | ||
Nintendo Switch | β |
Please also see the compatibility matrix.
The love
target is runnable on all platforms, but require LΓVE to be installed.
Platform | Arch | Status |
---|---|---|
Linux | x86_64 | β |
Linux | x86_32 | β |
Windows | x86_64 | β |
Windows | x86_32 | β |
MacOS | β |
(Note that this may not always be up to date)
(Also normally this is colored)
lover help
Usage: lover <command> [<arguments>]...
Lover is a open source cross-platform build system for Love2D projects.
https://github.com/Wolfyxon/lover
Available commands:
help: Shows help.
version: Shows the current Lover version.
new: Initializes a new Love2D project.
create: Runs an interactive project setup
run: Runs the game.
parse: Checks the validity of Lua scripts.
build: Packages the game.
clean: Removes compiled build files.
target: Lists or shows info of available build targets.
dep: Lists or shows info of available dependencies.
install: Installs dependencies.
uninstall: Removes installed dependencies.
fetch: Fetches a dependency. Mostly for testing
env: Shows a list of available Lover constants and their values.
module: Shows the extra code injected into your game when building. Mostly for testing
Use `lover help <command>` to see the usage of a specific command.
For additional help, see the wiki: https://github.com/Wolfyxon/lover/wiki
lover build win64 linux
> Initializing build of: win64, linux
OK: All dependencies are installed.
> Building target: love
Warning: 'luac' not found. Skipping luac parse.
>> Archiving game assets [==============================] 1/1
OK: Successfully built 'love'
> Building target: win64
>> Extracting Windows Love2D files [==============================] 14/14
>> Embedding game into the LOVE executable [==============================] 0.763/0.763 KB
OK: The EXE should now be usable, even if something fails.
>> Converting icon to the ICO format
>> Applying info with RCEdit
OK: Successfully built 'win64'
> Building target: linux
>> Embedding game into the LOVE executable [==============================] 0.763/0.763 KB
>> Replacing the LOVE binary in the SquashFS
>> Embedding created SquashFS into the AppImage
OK: Successfully built 'linux'
I wanted to create a simple expandable and universal system for building, running and managing Love2D projects.
This is a replacement for my previous project Love2D Universal which utilized a single Makefile, however a global system-wide tool written in a more advanced language like Rust is a way better approach. A single script setup for a large project is not a good idea, as organization is not great for such big scripts and implementing a lot of advanced features is not easy. Also this tool does not require installing as much software as Love2D Universal and has nice error handling and warnings.
This tool is also very similar to Cargo which manages Rust projects.
Lover is written in Rust and managed by Cargo.
Install Cargo on your system then open the terminal in the Lover's source directory and run:
cargo build
or
cargo run
to just run it.
Read the documentation for more info.
reqwest
: Sending HTTP requests and downloading filesserde
: Serializing structsserde_json
: JSON parsing and serde supporttoml
: TOML parsing and serde supportzip
: Managing ZIP archivesimage
: Handling image filesdirs
: Finding system directories on various platformsregex
: Using regular expressions on stringsansi_term
: Styling terminal outputbackhand
: Modifying, creating and parsing SquashFSsha256
: Hashing files