Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/MisterDA/love-release

:love_letter: Lua script that makes LÖVE game release easier
https://github.com/MisterDA/love-release

love love2d lua

Last synced: 3 months ago
JSON representation

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

Lists

README

        

# love-release
[![License](https://img.shields.io/badge/License-MIT-brightgreen.svg)](LICENSE)
[![LuaRocks](https://img.shields.io/badge/LuaRocks-blue.svg)](https://luarocks.org/modules/rucikir/love-release)
![Lua](https://img.shields.io/badge/Lua-5.1%2C%20JIT-blue.svg)

[Lua][lua] script that makes [LÖVE][love] game release easier (previously
Bash script).\
Automates LÖVE [Game Distribution][game_dist].\
LÖVE [forum topic][forum_topic].\
Available as a [LuaRocks 3][luarocks] [package][].

## Features
love-release makes your LÖVE game release easier. love-release can
create from your sources: Windows executables, macOS 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 information 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 information such as the real LÖVE version your
project uses.

### Usage
```
Usage: love-release [-D] [-M] [-a ] [-b] [-d ]
[-e ] [-l ] [-p ] [-t ] [-u ]
[--uti ] [-v ] [-X ] [--version] [-h] [] []
[-W [32|64]]

Makes LÖVE games releases easier !

Arguments:
release Project release directory.
source Project source directory.

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

For more info, see https://github.com/MisterDA/love-release
```

### Configuration
love-release outputs a Lua table containing the information it uses to
generate your project. That information can be stored in your
`conf.lua` file to be used later.

```lua
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)
excludeFileList = {}, -- File patterns to exclude. (string list)
releaseDirectory = nil, -- Where to store the project releases (string)
}
end
```

## Installation

### Dependencies
love-release is only installable through LuaRocks and highly depends
on LuaRocks internal API. love-release is currently built on
LuaRocks 3. LuaRocks API is not meant to be stable, and a future
update could break love-release.

#### Required
- [libzip][] and its headers for lua-libzip.
- Other libraries are automatically installed, but let's give them
some credit: [lua-zip][], [luafilesystem][], [loadconf][],
[middleclass][].

#### Optional
- `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 with `luajit` if it is installed.

### Install

```sh
# latest stable version
luarocks install love-release

# development version
luarocks install --server=http://luarocks.org/dev 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.

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

## Contribute
The documentation of love-release internals is written with [LDoc][].
Generate it by running `ldoc .`.\
I currently do not plan to continue the development of the Bash script,
or even to fix 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 !

[forum_topic]: https://love2d.org/forums/viewtopic.php?t=75387
[game_dist]: https://www.love2d.org/wiki/Game_Distribution
[LDoc]: https://github.com/stevedonovan/LDoc
[luafilesystem]: https://github.com/keplerproject/luafilesystem
[libzip]: http://www.nih.at/libzip/
[love]: https://www.love2d.org/
[Lua]: http://www.lua.org/
[luaJIT]: http://luajit.org/
[luarocks]: https://luarocks.org/
[lua-zip]: https://github.com/brimworks/lua-zip
[loadconf]: https://github.com/Alloyed/loadconf
[middleclass]: https://github.com/kikito/middleclass
[package]: https://luarocks.org/modules/rucikir/love-release