File

This structure can be used to hold file paths. It has two forms: a key-value string map and a scalar string.

Map Form

name

Required. An exact (ie. not regex) file path or name.

display

A CommonMark string, to be displayed instead of the file path in any generated messages, eg. the name of the mod the file belongs to.

detail

string or localised content list

if this file causes an error message to be displayed (e.g. because it’s a missing requirement), this detail message content will be appended to that error message. If a string is provided, it will be interpreted as CommonMark. If a localised content list is provided, one of the structures must be for English. If undefined, defaults to an empty string.

condition

A condition string that is evaluated to determine whether this file data should be used: if it evaluates to true, the data is used, otherwise it is ignored. See Condition Strings for details.

constraint

A condition string that must also evaluate to true for the file’s existence to be recognised. See Condition Strings for details.

When a constraint is set, it’s best to also set a display value that describes the constraint so that it is visible to users if a message is displayed for the file.

Scalar Form

The scalar form is simply the value of the map form’s name key. Using the scalar form is equivalent to using the map form with undefined display, detail, condition and constraint keys.

Equality

Two file data structures are equal if all their fields are equal. name field equality is case-insensitive, the other fields use case-sensitive equality.

Examples

Scalar form:

'../obse_loader.exe'

Map form:

name: '../obse_loader.exe'
condition: 'version("../obse_loader.exe", >=, "0.0.18.0")'
display: 'OBSE v18+'