id = "vale" name = "Vale" homepage = "https://vale.sh" description = "A markup-aware linter for prose built with speed and extensibility in mind." # The site's own apple-touch-icon, 180x180. icon = "https://vale.sh/apple-touch-icon.png" executables = ["vale"] [dotfiles] # https://docs.vale.sh/topics/.vale.ini (the "Search" section) — Vale looks for # a configuration file in this order: the --config option, then # VALE_CONFIG_PATH, then ".vale.ini", # "_vale.ini", "vale.ini", ".vale" or "_vale" from the working directory # upwards "then in the home directory". On top of whichever it finds, "the # user-level configuration in the operating system's config directory is read # too". The same page tabulates that directory: # # Windows | %LOCALAPPDATA%\vale\.vale.ini # macOS | $HOME/Library/Application Support/vale/.vale.ini # Linux | $XDG_CONFIG_HOME/vale/.vale.ini # # which is internal/core/config.go's DefaultConfig() — xdg.ConfigFile( # "vale/.vale.ini"), and adrg/xdg puts ConfigHome at ~/Library/Application # Support on macOS and %LOCALAPPDATA% on Windows. # # Only the ".vale.ini" spelling is listed: the source calls the other four # "leftover from the early days of Vale; we have now standardized on # `.vale.ini`". paths = [ "~/.vale.ini", "~/.config/vale/.vale.ini", "~/Library/Application Support/vale/.vale.ini", "%LOCALAPPDATA%/vale/.vale.ini", ] # The styles `vale sync` downloads land under the XDG *data* directory # (…/vale/styles, DefaultStylesPath()), not beside the config file, so there is # nothing inside the paths above to carve out. exclude = [] # A .vale.ini is linter settings — StylesPath, MinAlertLevel, format # associations, which styles to switch on. Nothing in it authenticates # anything; `vale sync` fetches packages over plain HTTPS. secret = [] # Read once per run by a process that then exits. side_effect = false # No machine_lines. StylesPath is the one path-valued key, and in a user-level # file it is usually the relative `styles` directory beside it, which travels # fine. A prefix rule on it would strand that as often as it caught an absolute # path. [commands] format = 1 label = "Lint prose" description = "Lint files or directories with Vale. Config path, minimum alert level and output style are supported." quality = "ai-draft" base = "fig:vale" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false } [[commands.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/vale.ts" license = "MIT" [[commands.field]] id = "files" label = "Files or directories" type = "string" position = 0 multiple = true sources = ["fig"] [[commands.field]] id = "config" label = "Config file" type = "path" option = ["--config"] path = { kind = "file", role = "input" } sources = ["fig"] [[commands.field]] id = "min_level" label = "Minimum alert level" type = "enum" option = ["--minAlertLevel"] choices = [{ value = "suggestion", label = "suggestion" }, { value = "warning", label = "warning" }, { value = "error", label = "error" }] sources = ["fig"] [[commands.field]] id = "output" label = "Output style" type = "enum" option = ["--output"] choices = [{ value = "line", label = "line" }, { value = "JSON", label = "JSON" }] sources = ["fig"] [[commands.field]] id = "glob" label = "Glob" type = "string" option = ["--glob"] sources = ["fig"] [[commands.field]] id = "ignore_syntax" label = "Ignore syntax" type = "boolean" option = ["--ignore-syntax"] sources = ["fig"] [[commands.field]] id = "no_exit" label = "Never fail" type = "boolean" option = ["--no-exit"] sources = ["fig"] [[commands.field]] id = "no_wrap" label = "No wrap" type = "boolean" option = ["--no-wrap"] sources = ["fig"] [[commands.field]] id = "ext" label = "Stdin extension" type = "string" option = ["--ext"] suggestions = [{ value = ".md", label = ".md" }, { value = ".rst", label = ".rst" }, { value = ".adoc", label = ".adoc" }, { value = ".html", label = ".html" }] sources = ["fig"] [[commands.task]] id = "lint" label = "Lint files" fields = ["files", "config", "min_level"] required = ["files"] [[commands.task]] id = "lint-json" label = "Lint as JSON" set = { output = ["JSON"] } fields = ["files", "config", "output"] required = ["files"] [[commands.group]] id = "basic" label = "Basic" fields = ["files", "config", "min_level", "output"] [[commands.group]] id = "advanced" label = "Advanced" fields = ["glob", "ignore_syntax", "no_exit", "no_wrap", "ext"]