Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow specifying color= in shellcheckrc (closes #2350) #2352

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
12 changes: 11 additions & 1 deletion shellcheck.1.md
Original file line number Diff line number Diff line change
Expand Up @@ -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*...]

Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
8 changes: 8 additions & 0 deletions src/ShellCheck/Parser.hs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down