PSRule-options.schema.json
{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "PSRule options", "description": "A schema for PSRule YAML options files.", "$ref": "#/definitions/options", "definitions": { "configuration": { "type": "object", "title": "Configuration values", "description": "A set of key/ value configuration options for rules.", "markdownDescription": "A set of key/ value configuration options for rules. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#configuration)", "defaultSnippets": [ { "label": "Configuration value", "body": { "${1:Key}": "${2:Value}" } } ] }, "convention-option": { "type": "object", "title": "Convention options", "description": "Options that configure conventions.", "properties": { "include": { "type": "array", "title": "Include conventions", "description": "An ordered list of conventions to include.", "items": { "type": "string" }, "uniqueItems": true } }, "additionalProperties": false }, "binding-option": { "type": "object", "title": "Object binding", "description": "Configure property/ object binding options.", "properties": { "field": { "type": "object", "title": "Field", "description": "Custom fields to bind.", "markdownDescription": "Custom fields to bind. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#bindingfield)", "additionalProperties": { "type": "array", "description": "A custom field to bind.", "markdownDescription": "Custom field to bind. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#bindingfield)", "items": { "type": "string" }, "uniqueItems": true } }, "ignoreCase": { "type": "boolean", "title": "Ignore case", "description": "Determines if custom binding uses ignores case when matching properties. The default is true.", "markdownDescription": "Determines if custom binding uses ignores case when matching properties. The default is `true`. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#bindingignorecase)", "default": true }, "nameSeparator": { "type": "string", "title": "Name separator", "description": "Configures the separator to use for building a qualified name. The default is '/'.", "markdownDescription": "Configures the separator to use for building a qualified name. The default is `/`. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#bindingnameseparator)", "default": "/" }, "preferTargetInfo": { "type": "boolean", "title": "Prefer target info", "description": "Determines if binding prefers target info provided by the object over custom configuration. The default is false.", "markdownDescription": "Determines if binding prefers target info provided by the object over custom configuration. The default is `false`. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#bindingprefertargetinfo)", "default": false }, "targetName": { "type": "array", "title": "Bind TargetName", "description": "Specifies one or more property names to bind TargetName to.", "markdownDescription": "Specifies one or more property names to bind TargetName to. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#bindingtargetname)", "items": { "type": "string" }, "uniqueItems": true }, "targetType": { "type": "array", "title": "Bind TargetType", "description": "Specifies one or more property names to bind TargetType to.", "markdownDescription": "Specifies one or more property names to bind TargetType to. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#bindingtargettype)", "items": { "type": "string" }, "uniqueItems": true }, "useQualifiedName": { "type": "boolean", "title": "Use qualified name", "description": "Determines if a qualified TargetName is used. The default is false.", "markdownDescription": "Determines if a qualified TargetName is used. The default is `false`. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#bindingusequalifiedname)", "default": false } }, "additionalProperties": false }, "execution-option": { "type": "object", "title": "Execution options", "description": "Options that affect rule execution.", "properties": { "languageMode": { "type": "string", "title": "Language mode", "description": "The PowerShell language mode to use for rule execution. The default is FullLanguage.", "markdownDescription": "The PowerShell language mode to use for rule execution. The default is `FullLanguage`. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#executionlanguagemode)", "enum": [ "FullLanguage", "ConstrainedLanguage" ], "default": "FullLanguage" }, "inconclusiveWarning": { "type": "boolean", "title": "Warn on inconclusive rules", "description": "Enable or disable warnings for inconclusive rules. The default is true.", "markdownDescription": "Enable or disable warnings for inconclusive rules. The default is `true`. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#executioninconclusivewarning)", "default": true }, "notProcessedWarning": { "type": "boolean", "title": "Warn on unprocessed objects", "description": "Enable or disable warnings for objects that are not processed by any rule. The default is true.", "markdownDescription": "Enable or disable warnings for objects that are not processed by any rule. The default is `true`. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#executionnotprocessedwarning)", "default": true } }, "additionalProperties": false }, "include-option": { "type": "object", "title": "Include options", "description": "Options that affect source locations imported for execution.", "properties": { "module": { "type": "array", "title": "Include module", "description": "Automatically include rules and resources from the specified modules.", "markdownDescription": "Automatically include rules and resources from the specified modules. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#includemodule)", "items": { "type": "string", "title": "Include module", "description": "Automatically include rules and resources from the specified modules.", "markdownDescription": "Automatically include rules and resources from the specified modules. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#includemodule)" }, "uniqueItems": true }, "path": { "type": "array", "title": "Include path", "description": "Automatically include rules and resources from the specified paths.", "markdownDescription": "Automatically include rules and resources from the specified paths. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#includepath)", "items": { "type": "string", "title": "Include path", "description": "Automatically include rules and resources from the specified paths.", "markdownDescription": "Automatically include rules and resources from the specified paths. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#includepath)" }, "uniqueItems": true } }, "additionalProperties": false }, "input-option": { "type": "object", "title": "Input options", "description": "Options that affect how input types are processed.", "properties": { "format": { "type": "string", "title": "Input format", "description": "The input string format. The default is Detect, which will try to detect the format when the -InputPath parameter is used.", "markdownDescription": "The input string format. The default is `Detect`, which will try to detect the format when the `-InputPath` parameter is used. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#inputformat)", "enum": [ "None", "Yaml", "Json", "Markdown", "PowerShellData", "File", "Detect" ], "default": "Detect" }, "ignoreGitPath": { "type": "boolean", "title": "Ignore .git path", "description": "Determine if files within the .git path are ignored when the -InputPath parameter is used.", "markdownDescription": "Determine if files within the `.git` path are ignored when the `-InputPath` parameter is used. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#inputignoregitpath)", "default": true }, "ignoreRepositoryCommon": { "type": "boolean", "title": "Ignore common files", "description": "Determine if common repository files are ignored when the -InputPath parameter is used.", "markdownDescription": "Determine if common repository files are ignored when the `-InputPath` parameter is used. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#inputignorerepositorycommon)", "default": true }, "objectPath": { "type": "string", "title": "Object path", "description": "The object path to a property to use instead of the pipeline object.", "markdownDescription": "The object path to a property to use instead of the pipeline object. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#inputobjectpath)" }, "pathIgnore": { "type": "array", "title": "Path ignore", "description": "Ignores input files that match the path spec.", "markdownDescription": "Ignores input files that match the path spec. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#inputpathignore)", "items": { "type": "string" }, "uniqueItems": true }, "targetType": { "type": "array", "title": "Target type", "description": "Only process objects that match one of the included types.", "markdownDescription": "Only process objects that match one of the included types. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#inputtargettype)", "items": { "type": "string" }, "uniqueItems": true } }, "additionalProperties": false }, "logging-option": { "type": "object", "title": "Logging options", "description": "Options for configuring information logging.", "properties": { "limitDebug": { "type": "array", "title": "Scopes for debug messages", "description": "Limits debug messages to a list of named debug scopes. No scopes are set by default.", "markdownDescription": "Limits debug messages to a list of named debug scopes. No scopes are set by default. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#logginglimitdebug)", "items": { "type": "string" }, "uniqueItems": true }, "limitVerbose": { "type": "array", "title": "Scopes for verbose messages", "description": "Limits verbose messages to a list of named verbose scopes. No scopes are set by default.", "markdownDescription": "Limits verbose messages to a list of named verbose scopes. No scopes are set by default. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#logginglimitverbose)", "items": { "type": "string" }, "uniqueItems": true }, "ruleFail": { "type": "string", "title": "Report fail to stream", "description": "Log fail outcomes for each rule to a specific informational stream. The default is None.", "markdownDescription": "Log fail outcomes for each rule to a specific informational stream. The default is `None`. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#loggingrulefail)", "enum": [ "None", "Error", "Warning", "Information" ], "default": "None" }, "rulePass": { "type": "string", "title": "Report pass to stream", "description": "Log pass outcomes for each rule to a specific informational stream. The default is None.", "markdownDescription": "Log pass outcomes for each rule to a specific informational stream. The default is `None`. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#loggingrulepass)", "enum": [ "None", "Error", "Warning", "Information" ], "default": "None" } }, "additionalProperties": false }, "suppression-option": { "type": "object", "title": "Suppress rules", "description": "Specifies suppression rules.", "markdownDescription": "Specifies suppression rules. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#suppression)", "uniqueItems": true, "additionalProperties": { "oneOf": [ { "type": "array", "title": "Suppressed rule", "description": "The name of the rule to suppress.", "markdownDescription": "The name of the rule to suppress. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#suppression)", "items": { "type": "string", "title": "Suppress when", "description": "Suppress the rule on TargetNames to suppress.", "markdownDescription": "Suppress the rule on TargetNames to suppress. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#suppression)" }, "uniqueItems": true }, { "type": "object", "title": "Suppressed rule", "description": "The name of the rule to suppress.", "markdownDescription": "The name of the rule to suppress. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#suppression)", "properties": { "targetName": { "type": "array", "title": "Suppress when", "description": "One or more TargetNames to suppress.", "markdownDescription": "One or more TargetNames to suppress. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#suppression)", "items": { "type": "string" }, "uniqueItems": true } }, "additionalProperties": false, "required": [ "targetName" ] } ] } }, "output-option": { "type": "object", "title": "Output options", "description": "Options that affect how output is generated.", "properties": { "as": { "type": "string", "title": "Result type", "description": "Determine if detailed or summary results are generated. The default is Detail.", "markdownDescription": "Determine if detailed or summary results are generated. The default is `Detail`. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#outputas)", "enum": [ "Detail", "Summary" ], "default": "Detail" }, "banner": { "title": "Banner format", "description": "The information displayed for Assert-PSRule banner. The default is Default which includes Title, Source, and SupportLinks.", "markdownDescription": "The information displayed for Assert-PSRule banner. The default is `Default` which includes `Title`, `Source`, and `SupportLinks`. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#outputbanner)", "oneOf": [ { "type": "string", "enum": [ "None", "Title", "Source", "SupportLinks", "Default", "Minimal" ] }, { "type": "integer" } ], "default": "Default" }, "culture": { "type": "array", "title": "Culture", "description": "One or more cultures to use for generating output. When multiple cultures are specified, the first matching culture will be used. By default, the current PowerShell culture is used.", "markdownDescription": "One or more cultures to use for generating output. When multiple cultures are specified, the first matching culture will be used. By default, the current PowerShell culture is used. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#outputculture)", "items": { "type": "string", "description": "A culture for generating output.", "minLength": 2 }, "uniqueItems": true, "defaultSnippets": [ { "label": "en-AU", "bodyText": [ "en-AU" ] }, { "label": "en-US", "bodyText": [ "en-US" ] }, { "label": "en-GB", "bodyText": [ "en-GB" ] } ] }, "encoding": { "type": "string", "title": "Encoding", "description": "The encoding to use when writing results to file. The default is Default, UTF-8 without BOM.", "markdownDescription": "The encoding to use when writing results to file. The default is `Default`, UTF-8 without BOM. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#outputencoding)", "enum": [ "Default", "UTF8", "UTF7", "Unicode", "UTF32", "ASCII" ], "default": "Default" }, "footer": { "title": "Footer format", "description": "The information displayed for Assert-PSRule footer. The default is Default which includes RuleCount, and RunInfo.", "markdownDescription": "The information displayed for Assert-PSRule footer. The default is `Default` which includes `RuleCount`, and `RunInfo`. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#outputfooter)", "oneOf": [ { "type": "string", "enum": [ "None", "RuleCount", "RunInfo", "Default" ] }, { "type": "integer" } ], "default": "Default" }, "format": { "type": "string", "title": "Output format", "description": "The output format to use when returning results. The default is None.", "markdownDescription": "The output format to use when returning results. The default is `None`. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#outputformat)", "enum": [ "None", "Yaml", "Json", "Markdown", "NUnit3", "Csv", "Wide" ], "default": "None" }, "outcome": { "type": "string", "title": "Output outcome", "description": "The outcome of rule results to return. The default is Processed.", "markdownDescription": "The outcome of rule results to return. The default is `Processed`. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#outputoutcome)", "enum": [ "None", "Fail", "Pass", "Error", "Processed", "All" ], "default": "Processed" }, "path": { "type": "string", "title": "Output path", "description": "The file path location to save results.", "markdownDescription": "The file path location to save results. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#outputpath)" }, "style": { "type": "string", "title": "Output Style", "description": "The style that results will be presented in. The default is Detect.", "markdownDescription": "The style that results will be presented in. The default is `Detect`. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#outputstyle)", "enum": [ "Client", "Plain", "AzurePipelines", "GitHubActions", "VisualStudioCode", "Detect" ], "default": "Detect" }, "jsonIndent": { "type": "number", "title": "Output Json Indent", "description": "The indentation level for JSON output. The default is 0.", "markdownDescription": "The indentation level for JSON output. The default is `0`. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#outputjsonindent)", "minimum": 0, "maximum": 4, "default": 0 } }, "additionalProperties": false }, "options": { "properties": { "binding": { "type": "object", "oneOf": [ { "$ref": "#/definitions/binding-option" } ] }, "configuration": { "type": "object", "oneOf": [ { "$ref": "#/definitions/configuration" } ] }, "convention": { "type": "object", "$ref": "#/definitions/convention-option" }, "execution": { "type": "object", "oneOf": [ { "$ref": "#/definitions/execution-option" } ] }, "include": { "type": "object", "$ref": "#/definitions/include-option" }, "input": { "type": "object", "oneOf": [ { "$ref": "#/definitions/input-option" } ] }, "logging": { "type": "object", "oneOf": [ { "$ref": "#/definitions/logging-option" } ] }, "output": { "type": "object", "$ref": "#/definitions/output-option" }, "requires": { "type": "object", "$ref": "#/definitions/requires" }, "rule": { "type": "object", "oneOf": [ { "$ref": "#/definitions/rule-option" } ] }, "suppression": { "type": "object", "oneOf": [ { "$ref": "#/definitions/suppression-option" } ] } }, "additionalProperties": false }, "requires": { "type": "object", "title": "Required modules", "description": "Specifies the required version of a module to use.", "markdownDescription": "Specifies the required version of a module to use. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#requires)", "additionalProperties": { "type": "string", "title": "Version constraint", "description": "Specifies a module to constrain to a specific version.", "markdownDescription": "Specifies a module to constrain to a specific version. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#requires)", "pattern": "^(@pre |@prerelease )?(((?:^|~|\\>=|\\>|=|\\<=|\\<)?v?(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?)(?:\\s|\\s?\\|\\|\\s?)?){1,}$" }, "defaultSnippets": [ { "label": "Version constraint", "body": { "${1:Module}": "${2:'>=1.0.0'}" } } ] }, "rule-option": { "type": "object", "title": "Baseline options", "description": "Options that include/ exclude and configure rules.", "properties": { "include": { "type": "array", "title": "Include rules", "description": "Optionally filter to rules by name.", "markdownDescription": "Optionally filter to rules by name. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#ruleinclude)", "$ref": "#/definitions/rule-names" }, "includeLocal": { "type": "boolean", "title": "Include local", "description": "Automatically include all local rules in the search path unless they have been explicitly excluded.", "markdownDescription": "Automatically include all local rules in the search path unless they have been explicitly excluded. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#ruleincludelocal)", "default": false }, "exclude": { "type": "array", "title": "Exclude rules", "description": "Specifies rules to exclude by name.", "markdownDescription": "Specifies rules to exclude by name. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#ruleexclude)", "$ref": "#/definitions/rule-names" }, "tag": { "type": "object", "title": "Tags", "description": "Require rules to have the following tags.", "markdownDescription": "Require rules to have the following tags. [See help](https://microsoft.github.io/PSRule/concepts/PSRule/en-US/about_PSRule_Options.html#ruletag)", "additionalProperties": { "oneOf": [ { "type": "string", "description": "A required tag." }, { "type": "array", "description": "A required tag.", "items": { "type": "string" }, "uniqueItems": true } ] } } }, "additionalProperties": false }, "rule-names": { "type": "array", "items": { "type": "string", "$ref": "#/definitions/rule-name" }, "uniqueItems": true }, "rule-name": { "type": "string", "minLength": 3 } } } |