2739 lines
78 KiB
Text
2739 lines
78 KiB
Text
{
|
|
"$id": "https://static.trunk.io/pub/trunk-yaml-schema.json",
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"definitions": {
|
|
"filetype_list": {
|
|
"description": "List of filetypes\nTo refer to all filetypes, use [ALL]",
|
|
"items": {
|
|
"examples": [
|
|
"ALL",
|
|
"bazel-build",
|
|
"bazel-workspace",
|
|
"c",
|
|
"c#",
|
|
"c++",
|
|
"c++-header",
|
|
"c++-source",
|
|
"c-header",
|
|
"c-source",
|
|
"c/c++",
|
|
"c/c++-source",
|
|
"css",
|
|
"cue",
|
|
"docker",
|
|
"dotenv",
|
|
"gemspec",
|
|
"go",
|
|
"graphql",
|
|
"haml",
|
|
"html",
|
|
"java",
|
|
"javascript",
|
|
"json",
|
|
"kotlin",
|
|
"latex",
|
|
"markdown",
|
|
"php",
|
|
"prettier_supported_configs",
|
|
"proto",
|
|
"python",
|
|
"ruby",
|
|
"rust",
|
|
"sass",
|
|
"scala",
|
|
"shell",
|
|
"sql",
|
|
"starlark",
|
|
"svg",
|
|
"terraform",
|
|
"toml",
|
|
"typescript",
|
|
"yaml",
|
|
"zsh"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"linter_list": {
|
|
"description": "List of linter IDs\nTo refer to all linters, use [ALL]",
|
|
"items": {
|
|
"examples": [
|
|
"ALL",
|
|
"actionlint",
|
|
"ansible-lint",
|
|
"autopep8",
|
|
"bandit",
|
|
"black",
|
|
"black-py",
|
|
"brakeman",
|
|
"buf-breaking",
|
|
"buf-format",
|
|
"buf-lint",
|
|
"buildifier",
|
|
"cfnlint",
|
|
"clang-format",
|
|
"clang-tidy",
|
|
"clippy",
|
|
"cue-fmt",
|
|
"detekt",
|
|
"detekt-explicit",
|
|
"detekt-gradle",
|
|
"dotenv-linter",
|
|
"eslint",
|
|
"flake8",
|
|
"git-diff-check",
|
|
"gitleaks",
|
|
"gofmt",
|
|
"goimports",
|
|
"golangci-lint",
|
|
"hadolint",
|
|
"haml-lint",
|
|
"include-what-you-use",
|
|
"isort",
|
|
"ktlint",
|
|
"markdownlint",
|
|
"mypy",
|
|
"prettier",
|
|
"pylint",
|
|
"rubocop",
|
|
"rubocop-fmt",
|
|
"rufo",
|
|
"rustfmt",
|
|
"scalafmt",
|
|
"semgrep",
|
|
"shellcheck",
|
|
"shfmt",
|
|
"sql-formatter",
|
|
"standardrb",
|
|
"stylelint",
|
|
"stylelint-fmt",
|
|
"svgo",
|
|
"taplo",
|
|
"taplo-fmt",
|
|
"terraform",
|
|
"terraform-fmt",
|
|
"terraform-validate",
|
|
"tflint",
|
|
"yamllint",
|
|
"yapf"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"template_string": {
|
|
"description": "String where \"${key1} ${key2}\" will be expanded into \"value1 value2\"",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"description": "The last linter you'll ever need",
|
|
"properties": {
|
|
"actions": {
|
|
"properties": {
|
|
"definitions": {
|
|
"items": {
|
|
"properties": {
|
|
"description": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"display_name": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"id": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"interactive": {
|
|
"type": "boolean"
|
|
},
|
|
"notify_on_error": {
|
|
"type": "boolean"
|
|
},
|
|
"output_type": {
|
|
"examples": [
|
|
"notification_v1"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"packages_file": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"run": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"run_from": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"runtime": {
|
|
"examples": [
|
|
"go",
|
|
"java",
|
|
"node",
|
|
"python",
|
|
"ruby",
|
|
"rust"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"triggers": {
|
|
"items": {
|
|
"properties": {
|
|
"files": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"git_hooks": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"schedule": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"type": "array"
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"disabled": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"enabled": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"api": {
|
|
"properties": {
|
|
"address": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"cli": {
|
|
"properties": {
|
|
"check_for_upgrades": {
|
|
"type": "boolean"
|
|
},
|
|
"options": {
|
|
"items": {
|
|
"properties": {
|
|
"args": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"commands": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"sha256": {
|
|
"properties": {
|
|
"darwin_arm64": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"darwin_x86_64": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"linux_x86_64": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"version": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"daemon": {
|
|
"properties": {
|
|
"check_for_upgrades": {
|
|
"type": "boolean"
|
|
},
|
|
"log_level": {
|
|
"examples": [
|
|
"critical",
|
|
"debug",
|
|
"error",
|
|
"info",
|
|
"off",
|
|
"trace",
|
|
"warn"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"monitor_repository": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"downloads": {
|
|
"items": {
|
|
"properties": {
|
|
"args": {
|
|
"additionalProperties": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "object"
|
|
},
|
|
"downloads": {
|
|
"items": {
|
|
"properties": {
|
|
"cpu": {
|
|
"additionalProperties": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "object"
|
|
},
|
|
"os": {
|
|
"additionalProperties": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "object"
|
|
},
|
|
"sha256": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"strip_components": {
|
|
"type": "integer"
|
|
},
|
|
"url": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"version": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"executable": {
|
|
"type": "boolean"
|
|
},
|
|
"name": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"version": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"environments": {
|
|
"items": {
|
|
"properties": {
|
|
"environment": {
|
|
"items": {
|
|
"properties": {
|
|
"list": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"name": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"optional": {
|
|
"type": "boolean"
|
|
},
|
|
"value": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"name": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"lint": {
|
|
"properties": {
|
|
"allow": {
|
|
"items": {
|
|
"properties": {
|
|
"linters": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"paths": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"bazel": {
|
|
"properties": {
|
|
"all_targets_query": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"compiler_override_paths": {
|
|
"items": {
|
|
"properties": {
|
|
"cpu": {
|
|
"examples": [
|
|
"arm_64",
|
|
"x86_64"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"os": {
|
|
"examples": [
|
|
"linux",
|
|
"macos"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"paths": {
|
|
"properties": {
|
|
"system": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"workspace": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
}
|
|
},
|
|
"type": "object"
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"comment_formats": {
|
|
"items": {
|
|
"properties": {
|
|
"leading_delimiter": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"name": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"trailing_delimiter": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"compile_commands": {
|
|
"examples": [
|
|
"bazel",
|
|
"json"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"default_max_file_size": {
|
|
"type": "integer"
|
|
},
|
|
"definitions": {
|
|
"items": {
|
|
"dependencies": {
|
|
"download": {
|
|
"not": {
|
|
"required": [
|
|
"package"
|
|
]
|
|
}
|
|
},
|
|
"package": {
|
|
"allOf": [
|
|
{
|
|
"required": [
|
|
"runtime"
|
|
]
|
|
},
|
|
{
|
|
"not": {
|
|
"required": [
|
|
"download"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"properties": {
|
|
"affects_cache": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"allow_empty_files": {
|
|
"description": "Whether or not this will be run on empty files",
|
|
"type": "boolean"
|
|
},
|
|
"batch": {
|
|
"description": "Whether linter invocations for multiple targets should be batched; used to cut down on per-invocation overhead\n\nCauses every token containing ${target} to be expanded multiple times, e.g. 'my_linter target=${target}' would be expanded into 'my_linter target=target1 target=target2 ... target=targetN'",
|
|
"type": "boolean"
|
|
},
|
|
"cache_results": {
|
|
"description": "Whether Trunk can cache results for this linter",
|
|
"type": "boolean"
|
|
},
|
|
"command": {
|
|
"description": "argv of the command to invoke the linter with",
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"commands": {
|
|
"items": {
|
|
"properties": {
|
|
"allow_empty_files": {
|
|
"description": "Whether or not this will be run on empty files",
|
|
"type": "boolean"
|
|
},
|
|
"batch": {
|
|
"description": "Whether linter invocations for multiple targets should be batched; used to cut down on per-invocation overhead\n\nCauses every token containing ${target} to be expanded multiple times, e.g. 'my_linter target=${target}' would be expanded into 'my_linter target=target1 target=target2 ... target=targetN'",
|
|
"type": "boolean"
|
|
},
|
|
"cache_results": {
|
|
"description": "Whether Trunk can cache results for this linter",
|
|
"type": "boolean"
|
|
},
|
|
"disable_upstream": {
|
|
"description": "Whether or not we support linting the upstream version of a target",
|
|
"type": "boolean"
|
|
},
|
|
"enabled": {
|
|
"description": "Whether the command is enabled to run when the linter is run. Allows some commands of a linter to be run by default without others.",
|
|
"type": "boolean"
|
|
},
|
|
"error_codes": {
|
|
"description": "Exit codes implying the linter experienced an internal error",
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"formatter": {
|
|
"description": "Whether or not this linter will be run by 'trunk fmt'; default: false",
|
|
"type": "boolean"
|
|
},
|
|
"in_place": {
|
|
"description": "Whether the linter modifies ${target} files in-place.",
|
|
"type": "boolean"
|
|
},
|
|
"max_file_size": {
|
|
"type": "integer"
|
|
},
|
|
"name": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"output": {
|
|
"description": "Output type of this linter; controls how `trunk` parses its output",
|
|
"examples": [
|
|
"actionlint",
|
|
"ansible_lint",
|
|
"arcanist",
|
|
"bandit",
|
|
"brakeman",
|
|
"buf",
|
|
"buildifier",
|
|
"cfnlint",
|
|
"clippy",
|
|
"detekt_gradle",
|
|
"diff",
|
|
"eslint",
|
|
"gitleaks",
|
|
"golangci_lint",
|
|
"hadolint",
|
|
"haml_lint",
|
|
"iwyu",
|
|
"llvm",
|
|
"lsp_json",
|
|
"markdownlint",
|
|
"mypy",
|
|
"pass_fail",
|
|
"pylint",
|
|
"regex",
|
|
"rewrite",
|
|
"rubocop",
|
|
"sarif",
|
|
"semgrep",
|
|
"shellcheck",
|
|
"shfmt",
|
|
"stylelint",
|
|
"taplo",
|
|
"terraform_validate"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"parse_regex": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"parser": {
|
|
"properties": {
|
|
"run": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"runtime": {
|
|
"examples": [
|
|
"go",
|
|
"java",
|
|
"node",
|
|
"python",
|
|
"ruby",
|
|
"rust"
|
|
],
|
|
"type": "string"
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"prepare_run": {
|
|
"description": "Command to initialize the linter with",
|
|
"examples": [
|
|
"tflint --init"
|
|
],
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"read_output_from": {
|
|
"description": "Tell parser where to expect output from for reading (if 'tmpfile', then the linter should write its output to ${tmpfile})\n\nNOTE: this field is only respected for type=sarif linters currently",
|
|
"examples": [
|
|
"stderr",
|
|
"stdout",
|
|
"tmp_file"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"run": {
|
|
"$ref": "#/definitions/template_string",
|
|
"description": "Command to invoke the linter with (write as if you were typing into your shell)",
|
|
"examples": [
|
|
"\"${path}\" will expand to $PATH",
|
|
"\"${home}\" will expand to $HOME",
|
|
"\"${linter}\" will expand to the directory a linter is installed into, e.g. \"${linter}/node_modules/.bin\" is appended to the `PATH` of any linter with `runtime: node`",
|
|
"\"${runtime}\" will expand to the directory a runtime is installed into, e.g. with `runtime: node`, \"${runtime}/bin/npm\" will yield the path to the installed NPM binary",
|
|
"\"${linter}\" will expand to the directory a linter is installed into, e.g. \"${linter}/node_modules/.bin\" is appended to the `PATH` of any linter with `runtime: node`",
|
|
"\"${runtime}\" will expand to the directory a runtime is installed into, e.g. with `runtime: node`, \"${runtime}/bin/npm\" will yield the path to the installed NPM binary",
|
|
"stylelint --fix ${target}"
|
|
]
|
|
},
|
|
"run_from_root_target": {
|
|
"description": "The nearest target to search for when 'run_linter_from' is 'root_file' or 'root_directory'",
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"run_linter_from": {
|
|
"description": "What to use as the current working directory:\n * workspace - the root of the repository\n * parent_directory - the directory containing the linter target\n * directory - the linter target itself, with the condition that the linter target is a directory itself\n * root_file - the nearest directory containing 'run_from_root_target', e.g. the nearest directory containing a go.mod file\n * root_directory - the nearest directory matching 'run_from_root_target', e.g. the nearest src/ directory\n",
|
|
"examples": [
|
|
"compile_command",
|
|
"directory",
|
|
"parent_directory",
|
|
"root_directory",
|
|
"root_file",
|
|
"workspace"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"run_when": {
|
|
"items": {
|
|
"examples": [
|
|
"ci",
|
|
"cli",
|
|
"lsp",
|
|
"monitor"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"stdin": {
|
|
"description": "Whether or not this linter takes its input from stdin",
|
|
"type": "boolean"
|
|
},
|
|
"success_codes": {
|
|
"description": "Exit codes corresponding to no issues found or issues found",
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"supports_sandbox": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"deprecated": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"direct_configs": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"disable_upstream": {
|
|
"description": "Whether or not we support linting the upstream version of a target",
|
|
"type": "boolean"
|
|
},
|
|
"disabled": {
|
|
"type": "boolean"
|
|
},
|
|
"download": {
|
|
"description": "The download containing this linter (i.e. the `name` of an entry in `downloads`)",
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"enabled": {
|
|
"description": "Whether the command is enabled to run when the linter is run. Allows some commands of a linter to be run by default without others.",
|
|
"type": "boolean"
|
|
},
|
|
"environment": {
|
|
"description": "Environment variables set when `trunk` runs the linter",
|
|
"items": {
|
|
"oneOf": [
|
|
{
|
|
"required": [
|
|
"name",
|
|
"value"
|
|
]
|
|
},
|
|
{
|
|
"required": [
|
|
"name",
|
|
"list"
|
|
]
|
|
}
|
|
],
|
|
"properties": {
|
|
"list": {
|
|
"description": "The envvar will be set to the `:`-joined list",
|
|
"items": {
|
|
"$ref": "#/definitions/template_string",
|
|
"examples": [
|
|
"\"${path}\" will expand to $PATH",
|
|
"\"${home}\" will expand to $HOME",
|
|
"\"${linter}\" will expand to the directory a linter is installed into, e.g. \"${linter}/node_modules/.bin\" is appended to the `PATH` of any linter with `runtime: node`",
|
|
"\"${runtime}\" will expand to the directory a runtime is installed into, e.g. with `runtime: node`, \"${runtime}/bin/npm\" will yield the path to the installed NPM binary"
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"name": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"optional": {
|
|
"type": "boolean"
|
|
},
|
|
"value": {
|
|
"$ref": "#/definitions/template_string",
|
|
"examples": [
|
|
"\"${path}\" will expand to $PATH",
|
|
"\"${home}\" will expand to $HOME",
|
|
"\"${linter}\" will expand to the directory a linter is installed into, e.g. \"${linter}/node_modules/.bin\" is appended to the `PATH` of any linter with `runtime: node`",
|
|
"\"${runtime}\" will expand to the directory a runtime is installed into, e.g. with `runtime: node`, \"${runtime}/bin/npm\" will yield the path to the installed NPM binary"
|
|
]
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"error_codes": {
|
|
"description": "Exit codes implying the linter experienced an internal error",
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"extra_packages": {
|
|
"description": "Extra packages needed to run this linter; also installed using the runtime's package manager",
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"files": {
|
|
"$ref": "#/definitions/filetype_list",
|
|
"description": "Filetypes to run this linter on"
|
|
},
|
|
"formatter": {
|
|
"description": "Whether or not this linter will be run by 'trunk fmt'; default: false",
|
|
"type": "boolean"
|
|
},
|
|
"good_without_config": {
|
|
"type": "boolean"
|
|
},
|
|
"hold_the_line": {
|
|
"type": "boolean"
|
|
},
|
|
"in_place": {
|
|
"description": "Whether the linter modifies ${target} files in-place.",
|
|
"type": "boolean"
|
|
},
|
|
"include_lfs": {
|
|
"description": "Whether or not this linter can handle LFS files; default: false",
|
|
"type": "boolean"
|
|
},
|
|
"include_scanner_type": {
|
|
"examples": [
|
|
"compile_command",
|
|
"none"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"is_manual": {
|
|
"type": "boolean"
|
|
},
|
|
"is_recommended": {
|
|
"type": "boolean"
|
|
},
|
|
"issue_url_format": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"known_bad_versions": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"known_good_version": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"name": {
|
|
"description": "Linter ID; use this in fields like `enabled` to reference this linter",
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"package": {
|
|
"description": "The package containing this linter; installed using the runtime's package manager",
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"plugin_url": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"prepare_command": {
|
|
"description": "argv of the command to initialize the linter with",
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"query_compile_commands": {
|
|
"type": "boolean"
|
|
},
|
|
"read_output_from": {
|
|
"description": "Tell parser where to expect output from for reading (if 'tmpfile', then the linter should write its output to ${tmpfile})\n\nNOTE: this field is only respected for type=sarif linters currently",
|
|
"examples": [
|
|
"stderr",
|
|
"stdout",
|
|
"tmp_file"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"run_from_root_file": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"run_from_root_target": {
|
|
"description": "The nearest target to search for when 'run_linter_from' is 'root_file' or 'root_directory'",
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"run_linter_from": {
|
|
"description": "What to use as the current working directory:\n * workspace - the root of the repository\n * parent_directory - the directory containing the linter target\n * directory - the linter target itself, with the condition that the linter target is a directory itself\n * root_file - the nearest directory containing 'run_from_root_target', e.g. the nearest directory containing a go.mod file\n * root_directory - the nearest directory matching 'run_from_root_target', e.g. the nearest src/ directory\n",
|
|
"examples": [
|
|
"compile_command",
|
|
"directory",
|
|
"parent_directory",
|
|
"root_directory",
|
|
"root_file",
|
|
"workspace"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"run_timeout": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"run_when": {
|
|
"items": {
|
|
"examples": [
|
|
"ci",
|
|
"cli",
|
|
"lsp",
|
|
"monitor"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"runtime": {
|
|
"description": "The runtime, toolchain, and package manager used to run and install a linter",
|
|
"examples": [
|
|
"go",
|
|
"java",
|
|
"node",
|
|
"python",
|
|
"ruby",
|
|
"rust"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"stdin": {
|
|
"description": "Whether or not this linter takes its input from stdin",
|
|
"type": "boolean"
|
|
},
|
|
"success_codes": {
|
|
"description": "Exit codes corresponding to no issues found or issues found",
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"symlinks": {
|
|
"items": {
|
|
"properties": {
|
|
"from": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"to": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"type": {
|
|
"description": "Output type of this linter; controls how `trunk` parses its output",
|
|
"examples": [
|
|
"pass_fail",
|
|
"lsp_json",
|
|
"rewrite",
|
|
"arcanist",
|
|
"sarif"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"version": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"version_command": {
|
|
"properties": {
|
|
"parse_regex": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"run": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
}
|
|
},
|
|
"type": "object"
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"disabled": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"do_not_recommend_linters": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"downloads": {
|
|
"items": {
|
|
"properties": {
|
|
"args": {
|
|
"additionalProperties": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "object"
|
|
},
|
|
"downloads": {
|
|
"items": {
|
|
"properties": {
|
|
"cpu": {
|
|
"additionalProperties": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "object"
|
|
},
|
|
"os": {
|
|
"additionalProperties": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "object"
|
|
},
|
|
"sha256": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"strip_components": {
|
|
"type": "integer"
|
|
},
|
|
"url": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"version": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"executable": {
|
|
"type": "boolean"
|
|
},
|
|
"name": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"version": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"enabled": {
|
|
"items": {
|
|
"oneOf": [
|
|
{
|
|
"description": "linter@envOrVersion, where envOrVersion is either the name of an environment, the version of the main `package` if `runtime` is set, or the verson of the `download`",
|
|
"examples": [
|
|
"gofmt@1.16.7",
|
|
"shellcheck@0.7.2"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"additionalProperties": {
|
|
"properties": {
|
|
"commands": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"name": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"packages": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"examples": [
|
|
"flake8@4.0.1 { packages [ 'flake8-bugbear@21.9.2', 'flake8-docstring@1.6.0' ] }"
|
|
],
|
|
"type": "object"
|
|
}
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"environments": {
|
|
"items": {
|
|
"properties": {
|
|
"environment": {
|
|
"items": {
|
|
"properties": {
|
|
"list": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"name": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"optional": {
|
|
"type": "boolean"
|
|
},
|
|
"value": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"name": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"files": {
|
|
"items": {
|
|
"properties": {
|
|
"comments": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"extensions": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"filenames": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"inherit": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"name": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"regexes": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"shebangs": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"ignore": {
|
|
"items": {
|
|
"properties": {
|
|
"linters": {
|
|
"$ref": "#/definitions/linter_list"
|
|
},
|
|
"paths": {
|
|
"description": "Paths to exclude from linting",
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"landing_mode": {
|
|
"items": {
|
|
"properties": {
|
|
"landing_mode": {
|
|
"examples": [
|
|
"burn_down",
|
|
"clean",
|
|
"hold_the_line"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"linters": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"linters": {
|
|
"items": {
|
|
"properties": {
|
|
"affects_cache": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"allow_empty_files": {
|
|
"type": "boolean"
|
|
},
|
|
"batch": {
|
|
"type": "boolean"
|
|
},
|
|
"cache_results": {
|
|
"type": "boolean"
|
|
},
|
|
"command": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"commands": {
|
|
"items": {
|
|
"properties": {
|
|
"allow_empty_files": {
|
|
"type": "boolean"
|
|
},
|
|
"batch": {
|
|
"type": "boolean"
|
|
},
|
|
"cache_results": {
|
|
"type": "boolean"
|
|
},
|
|
"disable_upstream": {
|
|
"type": "boolean"
|
|
},
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"error_codes": {
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"formatter": {
|
|
"type": "boolean"
|
|
},
|
|
"in_place": {
|
|
"type": "boolean"
|
|
},
|
|
"max_file_size": {
|
|
"type": "integer"
|
|
},
|
|
"name": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"output": {
|
|
"examples": [
|
|
"actionlint",
|
|
"ansible_lint",
|
|
"arcanist",
|
|
"bandit",
|
|
"brakeman",
|
|
"buf",
|
|
"buildifier",
|
|
"cfnlint",
|
|
"clippy",
|
|
"detekt_gradle",
|
|
"diff",
|
|
"eslint",
|
|
"gitleaks",
|
|
"golangci_lint",
|
|
"hadolint",
|
|
"haml_lint",
|
|
"iwyu",
|
|
"llvm",
|
|
"lsp_json",
|
|
"markdownlint",
|
|
"mypy",
|
|
"pass_fail",
|
|
"pylint",
|
|
"regex",
|
|
"rewrite",
|
|
"rubocop",
|
|
"sarif",
|
|
"semgrep",
|
|
"shellcheck",
|
|
"shfmt",
|
|
"stylelint",
|
|
"taplo",
|
|
"terraform_validate"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"parse_regex": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"parser": {
|
|
"properties": {
|
|
"run": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"runtime": {
|
|
"examples": [
|
|
"go",
|
|
"java",
|
|
"node",
|
|
"python",
|
|
"ruby",
|
|
"rust"
|
|
],
|
|
"type": "string"
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"prepare_run": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"read_output_from": {
|
|
"examples": [
|
|
"stderr",
|
|
"stdout",
|
|
"tmp_file"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"run": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"run_from_root_target": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"run_linter_from": {
|
|
"examples": [
|
|
"compile_command",
|
|
"directory",
|
|
"parent_directory",
|
|
"root_directory",
|
|
"root_file",
|
|
"workspace"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"run_when": {
|
|
"items": {
|
|
"examples": [
|
|
"ci",
|
|
"cli",
|
|
"lsp",
|
|
"monitor"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"stdin": {
|
|
"type": "boolean"
|
|
},
|
|
"success_codes": {
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"supports_sandbox": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"deprecated": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"direct_configs": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"disable_upstream": {
|
|
"type": "boolean"
|
|
},
|
|
"disabled": {
|
|
"type": "boolean"
|
|
},
|
|
"download": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"environment": {
|
|
"items": {
|
|
"properties": {
|
|
"list": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"name": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"optional": {
|
|
"type": "boolean"
|
|
},
|
|
"value": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"error_codes": {
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"extra_packages": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"files": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"formatter": {
|
|
"type": "boolean"
|
|
},
|
|
"good_without_config": {
|
|
"type": "boolean"
|
|
},
|
|
"hold_the_line": {
|
|
"type": "boolean"
|
|
},
|
|
"in_place": {
|
|
"type": "boolean"
|
|
},
|
|
"include_lfs": {
|
|
"type": "boolean"
|
|
},
|
|
"include_scanner_type": {
|
|
"examples": [
|
|
"compile_command",
|
|
"none"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"is_manual": {
|
|
"type": "boolean"
|
|
},
|
|
"is_recommended": {
|
|
"type": "boolean"
|
|
},
|
|
"issue_url_format": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"known_bad_versions": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"known_good_version": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"name": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"package": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"plugin_url": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"prepare_command": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"query_compile_commands": {
|
|
"type": "boolean"
|
|
},
|
|
"read_output_from": {
|
|
"examples": [
|
|
"stderr",
|
|
"stdout",
|
|
"tmp_file"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"run_from_root_file": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"run_from_root_target": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"run_linter_from": {
|
|
"examples": [
|
|
"compile_command",
|
|
"directory",
|
|
"parent_directory",
|
|
"root_directory",
|
|
"root_file",
|
|
"workspace"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"run_timeout": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"run_when": {
|
|
"items": {
|
|
"examples": [
|
|
"ci",
|
|
"cli",
|
|
"lsp",
|
|
"monitor"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"runtime": {
|
|
"examples": [
|
|
"go",
|
|
"java",
|
|
"node",
|
|
"python",
|
|
"ruby",
|
|
"rust"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"stdin": {
|
|
"type": "boolean"
|
|
},
|
|
"success_codes": {
|
|
"items": {
|
|
"type": "integer"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"symlinks": {
|
|
"items": {
|
|
"properties": {
|
|
"from": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"to": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"type": {
|
|
"examples": [
|
|
"actionlint",
|
|
"ansible_lint",
|
|
"arcanist",
|
|
"bandit",
|
|
"brakeman",
|
|
"buf",
|
|
"buildifier",
|
|
"cfnlint",
|
|
"clippy",
|
|
"detekt_gradle",
|
|
"diff",
|
|
"eslint",
|
|
"gitleaks",
|
|
"golangci_lint",
|
|
"hadolint",
|
|
"haml_lint",
|
|
"iwyu",
|
|
"llvm",
|
|
"lsp_json",
|
|
"markdownlint",
|
|
"mypy",
|
|
"pass_fail",
|
|
"pylint",
|
|
"regex",
|
|
"rewrite",
|
|
"rubocop",
|
|
"sarif",
|
|
"semgrep",
|
|
"shellcheck",
|
|
"shfmt",
|
|
"stylelint",
|
|
"taplo",
|
|
"terraform_validate"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"version": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"version_command": {
|
|
"properties": {
|
|
"parse_regex": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"run": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
}
|
|
},
|
|
"type": "object"
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"runtimes": {
|
|
"items": {
|
|
"properties": {
|
|
"download": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"known_good_version": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"linter_environment": {
|
|
"items": {
|
|
"properties": {
|
|
"list": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"name": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"optional": {
|
|
"type": "boolean"
|
|
},
|
|
"value": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"runtime_environment": {
|
|
"items": {
|
|
"properties": {
|
|
"list": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"name": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"optional": {
|
|
"type": "boolean"
|
|
},
|
|
"value": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"system_version": {
|
|
"examples": [
|
|
"allowed",
|
|
"ignored",
|
|
"required"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"examples": [
|
|
"go",
|
|
"java",
|
|
"node",
|
|
"python",
|
|
"ruby",
|
|
"rust"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"version": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"version_commands": {
|
|
"items": {
|
|
"properties": {
|
|
"parse_regex": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"run": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"type": "array"
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"shared_configs": {
|
|
"items": {
|
|
"properties": {
|
|
"file": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"regex": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"threshold": {
|
|
"items": {
|
|
"properties": {
|
|
"level": {
|
|
"examples": [
|
|
"high",
|
|
"low",
|
|
"medium",
|
|
"none"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"linters": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"triggers": {
|
|
"items": {
|
|
"properties": {
|
|
"files": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"linters": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"paths": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"regexes": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"targets": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"type": "array"
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"merge": {
|
|
"properties": {
|
|
"required_statuses": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"statuses": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"notifications": {
|
|
"properties": {
|
|
"sleep": {
|
|
"additionalProperties": {
|
|
"properties": {
|
|
"priority": {
|
|
"additionalProperties": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "object"
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"type": "object"
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"plugin_url": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"plugins": {
|
|
"properties": {
|
|
"sources": {
|
|
"items": {
|
|
"properties": {
|
|
"id": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"import_to_global": {
|
|
"type": "boolean"
|
|
},
|
|
"local": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"ref": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"uri": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"type": "array"
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"repo": {
|
|
"properties": {
|
|
"git": {
|
|
"properties": {
|
|
"allowed_user_email_domains": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"branch_name_format": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"new_files_warning_threshold_kb": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"repo": {
|
|
"properties": {
|
|
"host": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"name": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"owner": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"trunk_branch": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"trunk_primary_remote": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"use_branch_upstream": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"required_trunk_version": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"runtimes": {
|
|
"properties": {
|
|
"definitions": {
|
|
"items": {
|
|
"properties": {
|
|
"download": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"known_good_version": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"linter_environment": {
|
|
"items": {
|
|
"properties": {
|
|
"list": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"name": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"optional": {
|
|
"type": "boolean"
|
|
},
|
|
"value": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"runtime_environment": {
|
|
"items": {
|
|
"properties": {
|
|
"list": {
|
|
"items": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"type": "array"
|
|
},
|
|
"name": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"optional": {
|
|
"type": "boolean"
|
|
},
|
|
"value": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"system_version": {
|
|
"examples": [
|
|
"allowed",
|
|
"ignored",
|
|
"required"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"examples": [
|
|
"go",
|
|
"java",
|
|
"node",
|
|
"python",
|
|
"ruby",
|
|
"rust"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"version": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"version_commands": {
|
|
"items": {
|
|
"properties": {
|
|
"parse_regex": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
},
|
|
"run": {
|
|
"type": [
|
|
"string",
|
|
"number",
|
|
"boolean"
|
|
]
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"type": "array"
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"enabled": {
|
|
"items": {
|
|
"description": "See https://docs.trunk.io",
|
|
"examples": [
|
|
"ruby@>=2.7.1",
|
|
"python@3.9.1"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"version": {
|
|
"description": "The trunk config version being parsed. The only possible value is 0.1.",
|
|
"enum": [
|
|
"0.1",
|
|
0.1
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"version"
|
|
],
|
|
"title": "Configuration schema for trunk, a powerful linter runner - https://docs.trunk.io",
|
|
"type": "object"
|
|
}
|