{ "$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" }