Skip to content

Tools to make Ren'Py distributions more seamless programmatically

License

Notifications You must be signed in to change notification settings

UnscriptedVN/rdt

Repository files navigation

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 Python PyPI version

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 ›

Example Usage: Notarizing a macOS build

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.