# Ren'Py Distribution Tools

The Ren'Py Distribution Tools (RDT) is a set of utilities that make distribution of Ren'Py projects easier and more seamless programmatically.

[![MIT](https://img.shields.io/github/license/unscriptedvn/rdt)](LICENSE.txt)
![Python](https://img.shields.io/badge/python-3.7+-blue.svg)
[![PyPI version](https://badge.fury.io/py/renpy-distribute-tools.svg)](https://pypi.org/project/renpy-distribute-tools)

## Getting Started

### Quick Start: Install via PyPI/Poetry

To install via PyPI:

```
pip install renpy-distribute-tools
```

Or, if you're using a Poetry project, just add the dependency:

```
poetry add renpy-distribute-tools
```

### Building from source

#### Requirements

- Python 3.7 or higher
- Poetry package manager

Ren'Py Distribute Tools is a Poetry project and can be built using Poetry's `build` command.

1. Clone the repository.
2. In the root of the project, run `poetry install`.
3. Finally, run `poetry build`.

## What's included

The Ren'Py Distribution Tools set comes with utilities that make it easy to do the following:

- Modifying a visual novel's `Info.plist`.
- Code-signing the visual novel binaries in the Mac app with entitlements.
- Creating a ZIP copy of the Mac app and sending it to Apple's notarization servers.
- Verifying the notarization status of an app.
- Stapling the notarization ticket to a macOS app.
- Distributing app content through Itch.io.

## Usage

The documentation website covers all of the modules contained in the RDT package. [View docs &rsaquo;](https://unscriptedvn.github.io/rdt/)

### Example Usage: Notarizing a macOS build

```py
import renpy_distribute_tools as rdt

author = "Joe Smith"
bundle_identifier = "com.example.my-vn"
code_sign_identity = "Developer ID Application: Joe Smith (XXXXXXXXXX)"
app_path = "VN-1.0.0-dists/VN-1.0.0-mac/VN.app"
apple_email = "example.joesmith@icloud.com"
apple_provider = "XXXXXXXXXX"

rdt.fix_plist(app_path + "/Contents/Info.plist",
          bundle_identifier,
          "© %s %s. All rights reserved." % (date.today().year, author))
rdt.code_sign(code_sign_identity,
          app_path,
          entitlements="../../entitlements.plist",
          enable_hardened_runtime=True)
try:
    rdt.upload_to_notary(app_path,
                     bundle_identifier,
                     apple_email,
                     "@keychain:AC_PASSWORD",
                     provider=apple_provider)
except CalledProcessError:
    print("\033[31;1mNotarization request failed. Aborting.\033[0m")
    sys.exit(1)
```

## License

RDT is licensed under the MIT License, which is available in the LICENSE file in the source code repository.
