{
"$defs": {
"ConfigEntry": {
"additionalProperties": false,
"properties": {
"exclude": {
"default": [],
"description": "glob patterns for files to exclude from configuration entry",
"items": {
"type": "string"
},
"type": "array"
},
"include": {
"default": [],
"description": "glob patterns for files to apply configuration entry",
"items": {
"type": "string"
},
"type": "array"
},
"rules": {
"additionalProperties": false,
"description": "rules to apply to matching files",
"properties": {
"exif-has-capture-datetime": {
"additionalProperties": false,
"description": "guards presence and validity of capture date and time",
"properties": {
"date": {
"description": "require capture date",
"type": ["boolean", "null"]
},
"level": {
"default": "warn",
"description": "severity level (default: warn)",
"enum": ["off", "warn", "error"],
"type": "string"
},
"min_year": {
"description": "minimum allowed year for capture date",
"format": "uint16",
"maximum": 65535,
"minimum": 0,
"type": ["integer", "null"]
},
"reject_future": {
"description": "reject capture dates later than the current date",
"type": ["boolean", "null"]
},
"time": {
"description": "require capture time",
"type": ["boolean", "null"]
}
},
"required": [],
"type": "object"
},
"exif-has-coords": {
"additionalProperties": false,
"description": "guards presence of gps coordinates",
"properties": {
"latitude": {
"description": "require gps latitude",
"type": ["boolean", "null"]
},
"level": {
"default": "warn",
"description": "severity level (default: warn)",
"enum": ["off", "warn", "error"],
"type": "string"
},
"longitude": {
"description": "require gps longitude",
"type": ["boolean", "null"]
}
},
"required": [],
"type": "object"
},
"fs-broken-symlink": {
"additionalProperties": false,
"description": "guards that symbolic links resolve to existing targets",
"properties": {
"level": {
"default": "warn",
"description": "severity level (default: warn)",
"enum": ["off", "warn", "error"],
"type": "string"
}
},
"required": [],
"type": "object"
},
"fs-file-empty": {
"additionalProperties": false,
"description": "detects empty files",
"properties": {
"level": {
"default": "warn",
"description": "severity level (default: warn)",
"enum": ["off", "warn", "error"],
"type": "string"
}
},
"required": [],
"type": "object"
},
"fs-file-no-exec": {
"additionalProperties": false,
"description": "detects files without execute permission",
"properties": {
"level": {
"default": "warn",
"description": "severity level (default: warn)",
"enum": ["off", "warn", "error"],
"type": "string"
},
"scope": {
"default": "user",
"description": "scope to check (default: user)",
"enum": ["user", "group", "others", "anyone"],
"type": "string"
}
},
"required": [],
"type": "object"
},
"fs-file-no-read": {
"additionalProperties": false,
"description": "detects files without read permission",
"properties": {
"level": {
"default": "warn",
"description": "severity level (default: warn)",
"enum": ["off", "warn", "error"],
"type": "string"
},
"scope": {
"default": "user",
"description": "scope to check (default: user)",
"enum": ["user", "group", "others", "anyone"],
"type": "string"
}
},
"required": [],
"type": "object"
},
"fs-file-no-write": {
"additionalProperties": false,
"description": "detects files without write permission",
"properties": {
"level": {
"default": "warn",
"description": "severity level (default: warn)",
"enum": ["off", "warn", "error"],
"type": "string"
},
"scope": {
"default": "user",
"description": "scope to check (default: user)",
"enum": ["user", "group", "others", "anyone"],
"type": "string"
}
},
"required": [],
"type": "object"
},
"fs-file-size": {
"additionalProperties": false,
"description": "guards file size within range",
"properties": {
"level": {
"default": "warn",
"description": "severity level (default: warn)",
"enum": ["off", "warn", "error"],
"type": "string"
},
"max_size": {
"description": "maximum allowed size in bytes",
"format": "uint64",
"minimum": 0,
"type": ["integer", "null"]
},
"min_size": {
"description": "minimum allowed size in bytes",
"format": "uint64",
"minimum": 0,
"type": ["integer", "null"]
}
},
"required": [],
"type": "object"
},
"fs-permission": {
"additionalProperties": false,
"description": "guards file permission mode, owner, and group",
"properties": {
"group": {
"description": "enforce specific group",
"type": ["string", "null"]
},
"level": {
"default": "warn",
"description": "severity level (default: warn)",
"enum": ["off", "warn", "error"],
"type": "string"
},
"mode": {
"description": "enforce mode (octal or symbolic, e.g. \"0644'\" or \"rw-r--r--\")",
"type": ["string", "null"]
},
"owner": {
"description": "enforce specific owner",
"type": ["string", "null"]
}
},
"required": [],
"type": "object"
}
},
"type": "object"
}
},
"required": ["rules"],
"type": "object"
}
},
"$id": "https://www.schemastore.org/fslint.json",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"description": "see https://crates.io/crates/fslint",
"properties": {
"$schema": {
"default": null,
"description": "json schema uri for tooling and editor integration",
"type": ["string", "null"]
},
"entries": {
"default": [],
"description": "array of configuration entries with their associated rules",
"items": {
"$ref": "#/$defs/ConfigEntry"
},
"type": "array"
}
},
"title": "fslint configuration file schema",
"type": "object"
}