From ba5c415942171adcb586babfc9653b1269e96a0c Mon Sep 17 00:00:00 2001 From: Olliver Schinagl Date: Thu, 7 Oct 2021 21:33:00 +0200 Subject: [PATCH] Allow specifying color= in shellcheckrc (closes #2350) Signed-off-by: Olliver Schinagl --- CHANGELOG.md | 1 + shellcheck.1.md | 12 +++++++++++- src/ShellCheck/Parser.hs | 8 ++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f7be1440e..0245b77a1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ ## Git (0.8.0) ### Added +- `color=` directive can be added to .shellceckrc - `disable=all` now conveniently disables all warnings - `external-sources=true` directive can be added to .shellcheckrc to make shellcheck behave as if `-x` was specified. diff --git a/shellcheck.1.md b/shellcheck.1.md index 1103acc86..0b39f2478 100644 --- a/shellcheck.1.md +++ b/shellcheck.1.md @@ -41,7 +41,10 @@ not warn at all, as `ksh` supports decimals in arithmetic contexts. : For TTY output, enable colors *always*, *never* or *auto*. The default is *auto*. **--color** without an argument is equivalent to - **--color=always**. + **--color=auto**. + + This option may also be enabled using `color=` in + `.shellcheckrc`. This flag takes precedence. **-i**\ *CODE1*[,*CODE2*...],\ **--include=***CODE1*[,*CODE2*...] @@ -232,6 +235,10 @@ Here a shell brace group is used to suppress a warning on multiple lines: Valid keys are: +**color** +: Set to `auto`, `never` or `always` in `.shellcheckrc` to automatically + detect, never or always use color output with the `tty` output format. + **disable** : Disables a comma separated list of error codes for the following command. The command can be a simple command like `echo foo`, or a compound command @@ -277,6 +284,9 @@ it will read `key=value` pairs from it and treat them as file-wide directives. Here is an example `.shellcheckrc`: + # Always force color output on the tty output + color=always + # Look for 'source'd files relative to the checked script, # and also look for absolute paths in /mnt/chroot source-path=SCRIPTDIR diff --git a/src/ShellCheck/Parser.hs b/src/ShellCheck/Parser.hs index e269b4d21..7a73652e3 100644 --- a/src/ShellCheck/Parser.hs +++ b/src/ShellCheck/Parser.hs @@ -1005,6 +1005,14 @@ readAnnotationWithoutPrefix sandboxed = do key <- many1 (letter <|> char '-') char '=' <|> fail "Expected '=' after directive key" annotations <- case key of + "color" -> do + color <- many1 $ noneOf " \n" + option <- parseColorOption color + return options { + formatterOptions = (formatterOptions options) { + foColorOption = option + } + } "disable" -> readElement `sepBy` char ',' where readElement = readRange <|> readAll