Development - TheAppgineer/roon-extension-manager GitHub Wiki

Join the Extension Development Community

This page gives information about the inclusion of extensions in the repository and describes some features that might help in the development of extensions.

The Repository Layout

The main elements of the repository are described in the README.md file of the roon-extension-repository. Extension developers can apply their extensions for inclusion by creating a pull request.

The total extension repository that gets loaded by the Extension Manager can be constructed out of multiple repository files.

Integration in 3th Party Devices

Using local repository files (≥ v0.7.0)

Those who want to integrate the Extension Manager into a Roon server or Roon endpoint device (aka integrators) might have a need to add some device specific extensions to the repository. Extension developers might have a need to test their extensions within the Extension Manager before releasing it to the public. These requirements can be met by using local repository files.

Local repository files should conform to the repository format as described above and should have the .json extension. These files should be placed in a repos/ subdirectory that has to be created in the NPM_CONFIG_PREFIX directory (besides the node_modules directory; on Linux systems there is probably a lib/ directory between the two). The repository files are loaded at the startup (or restart) of the Extension Manager and they can add extensions to already existing categories or they can add all new categories.

Disabling Features (≥ v0.8.0)

There are two features that can be turned off by integrators in order to make the Extension Manager a better fit for certain devices.

  1. Auto Update: If a device already has an auto update system in place it might not make much sense that the Extension Manager has one as well.

  2. Logging: For devices with limited storage space the logging features might just fill up the device too quickly to make it a sensible feature.

Features are configured in the features.json file. This file should be placed in the NPM_CONFIG_PREFIX directory (besides the node_modules directory; on Linux systems there is probably a lib/ directory between the two). The features are named auto_update and log_mode and can be switched off by specifying an "off" string, any other string activates the feature.

Example

{
    "auto_update": "off",
    "log_mode": "off"
}

@ Roon Labs Community

https://community.roonlabs.com/t/lets-develop-a-platform-for-extension-distribution/25371

⚠️ **GitHub.com Fallback** ⚠️