Difference between revisions of "Manifest.plist"

From Elite Wiki
m (license: Another example)
m (Keys used in dependency dictionaries: reformat)
Line 110: Line 110:
 
     "version" = "0";
 
     "version" = "0";
 
     "maximum_version" = "1.3.4";
 
     "maximum_version" = "1.3.4";
     "description" = "This OXP and Example OXP do the same thing in different ways. If you install both the effects get combined badly. Version 1.3.5 and later of Example OXP has a check for this and will work correctly with it.";
+
     "description" = "This OXP and Example OXP do the same thing in different ways.
 +
          If you install both the effects get combined badly. Version 1.3.5 and later of Example OXP
 +
          has a check for this and will work correctly with it.";
 
   }
 
   }
 
  );
 
  );

Revision as of 16:07, 23 December 2013

Note: this page describes a feature added in Oolite 1.79, that is still subject to potentially significant changes before release.

The manifest.plist file is placed in the root folder of the OXP or OXZ, and is a dictionary with the following required and optional keys. In OXZ-format expansion packs, this file is required and requires.plist may be omitted. In OXP-format expansion packs it is optional and requires.plist must also be included for compatibility.

Required keys

identifier

A unique text string identifying this OXP. This should generally be selected when the OXP is first created and not changed after that.

"identifier" = "oolite.oxp.author-name.oxp-name";

required_oolite_version

A string indicating the minimum Oolite version required to run this OXP. If this OXP is intended to be compatible with Oolite versions prior to 1.79 or is not distributed in OXZ format, then this information must be duplicated in a requires.plist file, as versions prior to 1.79 are not able to process manifest.plist files.

"required_oolite_version" = "1.79";

title

The human-readable title of the OXP. This should generally also be unique to avoid confusion.

"title" = "My OXP";

version

The version of this release of the OXP, in major.minor.release format (fewer or additional dots may be used, but all components should be numeric). Any released change to an OXP, no matter how small, should have a different version number to all previously released versions.

"version" = "1.1.3";

Optional keys

author

A text string describing the author or authors of the OXP.

"author" = "J Smith, OXPWriter19";

category

A string describing the broad category of the OXP. It should contain one of the twelve categories used on the OXP List:

  • Activities
  • Ambience
  • Dockables
  • Equipment
  • HUDs
  • Mechanics
  • Missions
  • Retextures
  • Ships
  • Systems
  • Weapons
  • Misc

used as described on that page.

"category" = "Mechanics";

description

A short description of the OXP, at most 256 characters.

"description" = "Adds a new station near the sun to systems with 'solar activity' in their description";

download_url

This parameter should only be used for OXPs released in OXZ format, and should provide a direct download link to the OXZ file. This parameter must not be used to link to anything other than an OXZ file. The download URL should be changed for each released version.

"download_url" = "http://www.oolite.org/example-1.1.3.oxz";

information_url

The URL of a web page (or a representative one of a set of web pages) where more information on this OXP may be obtained.

"information_url" = "http://wiki.alioth.net/ExampleOXP";

license

A short description of the copyright license the OXP is released under. A text file expanding on this should be included within the OXP: this is solely a summary to allow quick searching.

"license" = "Gnu Public License v2+";
"license" = "CC-BY-NC-SA 3.0 with extra terms";
"license" = "Use but do not modify";

maximum_oolite_version

The maximum version of Oolite this OXP is intended to work with. This should only be specified if future incompatibility is known.

"maximum_oolite_version" = "1.79.999";

tags

A list of (probably short) text strings that might be useful to OXP search applications.

"tags" = ( "station", "equipment" );


Dependency management keys

The following optional keys are used to manage dependencies between OXPs. Each key takes a list of dictionaries, with the same format.

conflict_oxps

A list of OXPs which conflict with this OXP and should not be installed at the same time. If any OXP in this list is detected, then this OXP will not be loaded by Oolite, and the player will be notified through a message on the start up screen.

If OXPs A and B both declare conflicts with each other through a manifest.plist file, then Oolite will load one of the OXPs randomly.

optional_oxps

A description of OXPs which might be considered appropriate to install alongside this one - either because they enhance the functioning of the OXP or because this OXP has been designed to complement them, which are not required for the functioning of this OXP. No action will be taken if an optional OXP is missing.

requires_oxps

A list of OXPs which are required before this OXP can be used. For example, a retexture OXP might depend on the OXP which adds the original models. If any of the OXPs in this list are absent, then this OXP will not be loaded by Oolite, and the player will be notified through a message on the start up screen.

It is safe for OXP A to require OXP B and OXP B to require OXP A.

Keys used in dependency dictionaries

Each dependency dictionary in the above lists must contain an "identifier" and a "version" key. The "identifier" must match the "identifier" of the other OXP as set in its manifest.plist, and the "version" is the minimum version of that OXP required/conflicted with ("0" will match all versions).

Additionally, a "maximum_version" key may be added if the dependency OXP has relevant changes which make the dependency specific to a particular version, and a "description" key may be added to give a more readable description (maximum 256 characters and ideally much shorter) of the problem if the dependency is not met (this is especially important for "requires" dependencies, as the user may not be able to recognise an OXP they have never installed solely from its identifier)

"conflicts_oxp" = (
  {
    "identifier" = "oolite.oxp.an-other.example-oxp";
    "version" = "0";
    "maximum_version" = "1.3.4";
    "description" = "This OXP and Example OXP do the same thing in different ways.
          If you install both the effects get combined badly. Version 1.3.5 and later of Example OXP
          has a check for this and will work correctly with it.";
  }
);
"requires_oxp" = (
  {
    "identifier" = "oolite.oxp.an-other.library-oxp";
    "version" = "1.3";
    "description" = "This OXP requires at least version 1.3 of Library OXP.";
  }
);