love-release travis-ci

:love_letter: Lua script that makes LÖVE game release easier


License Build Status Coverage Status LuaRocks Lua

Lua 5.1 script that makes LÖVE game release easier (previously Bash script).
Automates LÖVE Game Distribution.
LÖVE forum topic.
Available as a LuaRocks package.


love-release makes your LÖVE game release easier. It can create from your sources Windows executables, MacOS X applications, Debian packages and simple LÖVE files.

love-release creates only one LÖVE file per release directory and keeps it synced with your sources.

love-release can extract its informations from the environment: it guesses your game’s title from the directory where it’s stored, selects by default the latest LÖVE version from the web or uses its latest bundled LÖVE version, then parses the conf.lua file to extract even more informations such as the real LÖVE version your project uses.


Usage: love-release [-D] [-M] [-a <author>] [-b] [-d <desc>]
       [-e <email>] [-l <love>] [-p <package>] [-t <title>] [-u <url>]
       [--uti <uti>] [-v <v>] [--version] [-h] [<release>] [<source>]
       [-W [32|64]]

Makes LÖVE games releases easier !

   release               Project release directory.
   source                Project source directory.

   -D                    Debian package.
   -M                    MacOS X application.
   -W [32|64]            Windows executable.
   -a <author>, --author <author>
                         Author full name.
   -b                    Compile new or updated files to LuaJIT bytecode.
   -d <desc>, --desc <desc>
                         Project description.
   -e <email>, --email <email>
                         Author email.
   -l <love>, --love <love>
                         LÖVE version to use.
   -p <package>, --package <package>
                         Package and command name.
   -t <title>, --title <title>
                         Project title.
   -u <url>, --url <url> Project homepage url.
   --uti <uti>           Project Uniform Type Identifier.
   -v <v>                Project version.
   --version             Show love-release version and exit.
   -h, --help            Show this help message and exit.

For more info, see


love-release prints to the command-line a Lua table containing the informations it uses to generate your project. These informations can be stored in your conf.lua file to be used later.

function love.conf(t)
  t.releases = {
    title = nil,              -- The project title (string)
    package = nil,            -- The project command and package name (string)
    loveVersion = nil,        -- The project LÖVE version
    version = nil,            -- The project version
    author = nil,             -- Your name (string)
    email = nil,              -- Your email (string)
    description = nil,        -- The project description (string)
    homepage = nil,           -- The project homepage (string)
    identifier = nil,         -- The project Uniform Type Identifier (string)
    releaseDirectory = nil,   -- Where to store the project releases (string)



love-release is only installable through LuaRocks and highly depends on LuaRocks internal API. love-release is currently build on LuaRocks 2.3.0. LuaRocks API is not meant to be stable, and a future update could break love-release. As love-release is made for LÖVE, it is written for Lua 5.1.


  • libzip headers for lua-zip.
  • lua-zip has no official stable version, thus while available on LuaRocks it must be installed manually.
  • Other libraries are automatically installed, but let’s give them some credit: luafilesystem, loadconf, middleclass, semver.


  • love can be used to determine your system LÖVE version.
  • fakeroot and dpkg-deb are required to create Debian packages.
  • LuaJIT can be used to compile your sources, either with luarocks-luajit or if luajit is installed.


# sudo
luarocks install --server= lua-zip

# latest stable version
luarocks install love-release

# development version
luarocks install --server= love-release

Remove Bash version

You may have previously installed the Bash version of love-release. You can remove it with the following piece of code. Take the time to assure yourself that the paths are correct and match your installation of love-release.

rm -rf '/usr/bin/love-release'
rm -rf '/usr/share/love-release'
rm -rf '/usr/share/man/man1/love-release.1.gz'
rm -rf '/usr/share/bash-completion/completions/love-release' '/etc/bash_completion.d/love-release'


The documentation of love-release internals is written with LDoc. Generate it by running ldoc ..
I do not plan to keep developing the Bash script, not even fixing it. If there appears to be any need for it, let me know and I might consider doing so.
Every bug report or feature request is gladly welcome !

Related Repositories



:love_letter: Lua script that makes LÖVE game release easier ...



Minimal Docker image for love-release automation. ...

Top Contributors

MisterDA GeoffreyFrogeye KevinBalz


-   v2.0.3 zip tar
-   v2.0.2 zip tar
-   v2.0.1 zip tar
-   v2.0.0 zip tar
-   v1.0.0 zip tar