Skip to content

Index Format

Christian Fillion edited this page Nov 1, 2024 · 76 revisions

A ReaPack repository consists of a XML document (referred to as the repository index) describing its current content. See also reapack-index, a tool for generating an index from a git repository.

<?xml version="1.0" encoding="utf-8"?>
<index version="1" name="My Repository">
  <category name="Example">
    <reapack name="Hello World.lua" type="script" desc="Print Hello World">
      <version name="1.0" author="cfillion" time="2016-06-10T21:17:24Z">
         <source main="midi_editor">http://example.com/dl/1.0/Hello%20World.lua</source>
         <source file="Hello World.jsfx" platform="windows" type="effect">http://example.com/dl/1.0/Hello%20World.jsfx</source>
         <changelog><![CDATA[Initial Release]]></changelog>
      </version>
      <version name="1.0.1" author="cfillion" time="2016-12-25T00:00:00Z">
         <source main="midi_editor">http://example.com/dl/1.0.1/Hello%20World.lua</source>
         <source file="Hello World.jsfx" platform="windows" type="effect">http://example.com/dl/1.0.1/Hello%20World.jsfx</source>
         <changelog><![CDATA[Fixed a small UI glitch when the window is resized]]></changelog>
      </version>
      <metadata>
        <link rel="website">http://example.com</link>
        <link rel="donation" href="http://example.com">Optional Label</link>
        <link rel="screenshot" href="http://example.com/a.png">First Feature</link>
        <link rel="screenshot" href="http://example.com/b.png">Second Feature</link>
        <description><![CDATA[{\rtf1 {\fonttbl {\f0 Helvetica;}} \f0\fs60 Documentation for this package!}]]></description>
      </metadata>
    </reapack>
  </category>
  <metadata>
    <link rel="website">http://example.com</link>
    <link rel="donation" href="http://example.com">Label</link>
    <link rel="screenshot">http://example.com</link>
    <description><![CDATA[{\rtf1 {\fonttbl {\f0 Helvetica;}} \f0\fs60 Description of the repository!}]]></description>
  </metadata>
</index>

index element

This is the root element of any ReaPack index file.

Attribute Required Description
version Yes Must be "1"
name For import Display name of the repository (must contain filename-friendly characters only)

Child elements:

category element

Used both for organization in the package list and for specifying subdirectories of script and effect packages. The target directory can also be changed using the file attribute of the source element.

Attribute Required Description
name Yes Path divided with slashes

Child element:

reapack element

Represents a single package, made of multiple versions, each consisting of one or more files.

Packages meeting any of these conditions are silently discarded:

  • The package type is invalid/unsupported
  • The package contains no version
  • None of the versions have files (source elements) compatible with the current platform
Attribute Required Description
name Yes Default filename of the package
type Yes Possible values are script, effect, extension, data, theme, langpack, webinterface, projectpl, tracktpl, midinotenames and autoitem
desc No (Added in v1.1) Display name of the package (the value of name is used if omitted)

Child elements:

version element

Attribute Required Description
name Yes Syntax is described in Version Names
author No Author(s) of the release (no specific format)
time No Release datetime in ISO 8601 format (UTC timezone)

Child elements:

changelog element

Sets the plain text changelog of the version containing this element.

source element

This element represent a single file in a version. The content of this node must be the download URL. Use a version-specific URL and keep previous version available when possible. Files marked as win64 are installed on windows-arm64ec if there are no files marked windows-arm64ec in the version.

Attribute Required Description
file No File name/path (relative to the category name). Defaults to the package name.
platform No Possible values are all (default), darwin, darwin32, darwin64, darwin-arm64 (v1.2.3.1+), linux, linux32, linux64, linux-armv7l (v1.2.3+), linux-aarch64 (v1.2.3+), windows, win32, win64 and windows-arm64ec (v1.2.5+)
type No Overrides the package type
main No List of Action List sections separated by spaces. Only effective on script files. Possible values are main, midi_editor, midi_inlineeditor, midi_eventlisteditor and mediaexplorer. (For compatibility with v1.0, a special value true is also supported. This uses the category name to determine the section.)
hash No Multihash checksum of the file in hexadecimal form (added in v1.2.2). Supports SHA-256 (1220 prefix).

metadata element

Fills the about dialog of the repository or of a package.

Child elements:

description element

Description (documentation) of the repository or package in RTF format.

link element

If the href argument is present, the content of the element becomes the display name of the link.

Attribute Required Description
rel No Possible values: website, donation and screenshot (added in v1.1). Default/fallback is website
href No Must start with http:// or https://. If omitted, the content of the element becomes the URL.

Version Names

ReaPack treats versions names as segments of whole numbers and letters optionally separated by one or more non-alphanumeric character (such as dots). A valid version must start with a digit. Individual number segments must fit in an unsigned 16-bit integer (0 to 65535). A version is treated as a pre-release if it contains one or more letters. Versions are handled as if they end by an infinity of 0 segments (1 = 1.0 = 1.0.0 etc).

See also this note about the handling of decimal versioning schemes in ReaPack.