Skip to content

Wolfyxon/lover

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lover

Lover is a open source command line build system and runner for Love2D projects inspired by Cargo.

Wiki | CLI usage | Constants | Downloads

Features

Easy cross-platform building

You can easily build your game for all supported platforms with a single command.

Automatic dependency management

Love binaries required for building are downloaded automatically and can easily be managed by using Lover commands.

Default environment variables

You can access certain constants like the game's version by the use of os.getenv().

local version = os.getenv("LOVER_PKG_VERSION")

learn more

Simple command line interface

Lover has a simple and easy to use command syntax (at least I hope).

Supported platforms

  • Full support: The platform is fully supported and should work
  • 🟡 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 and it will be implemented.
  • Testers/maintainers needed: someone is needed to test and/or maintain the platform
  • Impossible: The platform is currently impossible to implement

Build targets

Name Arch Alias Status
Universal LOVE file love
Linux AppImage x86_64 linux
Linux AppImage x86_32
Windows x86_64 win64
Windows 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.

Lover tool

Platform Arch Status
Linux x86_64
Linux x86_32
Windows x86_64
Windows x86_32
MacOS

Compiling

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.

Why?

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 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 a nice error handling and warnings.

This tool is also very similar to Cargo which manages Rust projects.

Used crates

  • reqwest: Sending HTTP requests and downloading files
  • serde: Serializing structs
  • serde_json: JSON parsing and serde support
  • toml: TOML parsing and serde support
  • zip: Managing ZIP archives
  • image: Handling image files
  • dirs: Finding system directories on various platforms
  • regex: Using regular expressions on strings
  • ansi_term: Styling terminal output
  • backhand: Modifying, creating and parsing SquashFS