Configuration

Overview of settings and options.

Plugify uses three main configuration files to manage its behavior, plugins, and language modules: plugify.pconfig, *.pplugin, and *.pmodule. Below is a detailed explanation of each file and its configuration options.

Config Manifest

The plugify.pconfig file is required for the plug testing app to locate the res directory and configure its behavior. It should be placed in the root directory and contain the following fields:

plugify.pconfig
{
    "$schema": "https://raw.githubusercontent.com/untrustedmodders/plugify/refs/heads/main/schemas/config.schema.json",
    "baseDir": "res",
    "logSeverity": "debug",
    "preferOwnSymbols": false
}

Configuration Options:

  • baseDir: Specifies the directory where plugins and language modules are located (default: res).
  • logSeverity: Controls the logging level (e.g., debug, info, error).
  • preferOwnSymbols: Determines whether Plugify should prefer its own symbols over those provided by plugins (set to false for most use cases).

Plugin Manifest

The .pplugin file defines the configuration for a specific plugin. Below is an example:

*.pplugin
{
  "version": "1.0.0",
  "name": "sample_plugin",
  "description": "This is a sample plugin.",
  "author": "untrustedmodders",
  "website": "https://github.com/untrustedmodders/",
  "license": "MIT",
  "entry": "bin/sample_plugin",
  "platforms": [],
  "language": "cpp",
  "dependencies": [],
  "methods": []
}

Configuration Options:

  • version: The semantic version of the plugin.
  • name: An alias name for the plugin.
  • description: A brief description or overview of the plugin.
  • author: The creator or author of the plugin.
  • website: The URL linking to the creator's profile or information.
  • license: The license for the plugin.
  • entry: The entry point or main executable for the plugin, specified as bin/sample_plugin. (Depends on the language module.)
  • platforms: An array listing the platforms supported by the plugin. (Currently empty in this example.)
  • language: Information about the programming language module used. In this case, it's specified as "cpp" (C++).
  • dependencies: A list of plugin references specifying the dependencies required for the plugin. This field is crucial for topological sorting to load plugins in the correct order of initialization.
  • methods: An array describing functions/methods exposed by the plugin.

Module Manifest

The .pmodule file defines the configuration for a language module. Below is an example:

*.pmodule
{
    "version": "1.0.0",
    "name": "cpp_module",
    "language": "cpp",
    "description": "Adds support for C++ plugins",
    "author": "untrustedmodders",
    "website": "https://github.com/untrustedmodders/",
    "license": "MIT",
    "platforms": []
}

Configuration Options:

  • version: The semantic version of the language module.
  • name: An alias name for the language module.
  • language: The programming language supported by this module (e.g., "cpp" for C++).
  • description: A brief description or overview of the language module.
  • author: The creator or author of the language module.
  • website: The URL linking to the creator's profile or information.
  • license: The license for the language module.
  • platforms: An array listing the platforms supported by the language module.

Notes:

  • Ensure all configuration files are valid JSON and adhere to the schema provided by Plugify.
  • Use the $schema field to validate your configuration files against the official schema.