rctpm

OpenRCT2 Plugin Manager

rctpm

The OpenRCT2 plugin manager.

rctpm is a package manager for OpenRCT2 plugins hosted on NPM. It uses Yarn under the hood to obtain the most up-to-date versions of each plugin, and copies the specified "main" output file to your OpenRCT2 plugins directory. Because it can leverage Yarn's lockfile system, rctpm can be used to rehydrate a plugins directory from any state, enabling fast upgrades and installs.

rctpm takes over your plugin directory and will remove any existing plugins that it doesn't manage.

Installation

You'll need Yarn installed to use rctpm. If you don't already have it installed, run:

npm install -g yarn

To install the rctpm CLI, run;

yarn global add rctpm

Usage

rctpm can be used both as a CLI as well as a library.

Basic Usage

Install a new plugin from NPM:

rctpm add openrct2-benchwarmer

Or, from GitHub:

rctpm add https://github.com/mgovea/openrct2-ride-price-manager

Or, from your local filesystem: (NOTE: All paths must be absolute)

rctpm add ~/my-plugin

List all plugins:

rctpm list

Uninstall a plugin:

rctpm remove openrct2-benchwarmer

Upgrade all plugins:

rctpm upgrade

For more info, run:

rctpm --help

Configuration

You can configure the CLI by way of environment variables:

  • $RCTPM_CONFIG_PATH is the path to your package config for rctpm. This is typically ~/.config/rctpm.
  • $RCTPM_OPENRCT2_PATH is the path to your OpenRCT2 installation. This differs per platorm, and rctpm will try and detect the OS you're using in order to automatically discover this value.
  • The CLI also respects the $DEBUG "standard" of using a string in this variable value to denote whether the user wants debug log messages. Add rctpm:* to this value to get debug logs in the CLI.

Programmatic Usage

To use rctpm within your own [NodeJS][] program, add it to your project's dependencies and import it like so:

import rctpm from "rctpm";

rctpm.add("some-package");

The API is very similar to that of the CLI. By default, it uses the same environment variable configuration. You can override this by configuring the Manifest object from the module:

import rctpm from "rctpm";

rctpm.base = "path/to/rctpm/config";
rctpm.artifact = "path/to/openrct2/data";

rctpm.install();