Merge pull request #221 from mstruebing/addEditorconfigChecker

Add `editorconfig-checker`
This commit is contained in:
Zack Koppert 2020-07-06 08:50:20 -07:00 committed by GitHub
commit 159a1b5c8c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 117 additions and 0 deletions

View file

@ -0,0 +1,3 @@
[*.ext]
indent_style = space
indent_size = 4

View file

@ -0,0 +1,13 @@
# EDITORCONFIG_CHECKER Test Cases
This folder holds the test cases for **EDITORCONFIG_CHECKER**.
## Additional Docs
No Additional information is needed for this test case.
## Good Test Cases
The test cases denoted: `LANGUAGE_good_FILE.EXTENSION` are all valid, and should pass successfully when linted.
- **Note:** They are linted utilizing the default linter rules.
## Bad Test Cases
The test cases denoted: `LANGUAGE_bad_FILE.EXTENSION` are **NOT** valid, and should trigger errors when linted.
- **Note:** They are linted utilizing the default linter rules.

View file

@ -0,0 +1,3 @@
some line
some line
some line

View file

@ -0,0 +1,3 @@
some line
some line
some line

18
.github/linters/.ecrc vendored Normal file
View file

@ -0,0 +1,18 @@
{
"Verbose": false,
"Debug": false,
"IgnoreDefaults": false,
"SpacesAftertabs": false,
"NoColor": false,
"Exclude": [],
"AllowedContentTypes": [],
"PassedFiles": [],
"Disable": {
"EndOfLine": false,
"Indentation": false,
"InsertFinalNewline": false,
"TrimTrailingWhitespace": false,
"IndentSize": false,
"MaxLineLength": false
}
}

View file

@ -181,6 +181,12 @@ RUN curl -sLO https://github.com/borkdude/clj-kondo/releases/download/v${CLJ_KON
RUN curl -sSLO https://github.com/pinterest/ktlint/releases/latest/download/ktlint && chmod a+x ktlint \ RUN curl -sSLO https://github.com/pinterest/ktlint/releases/latest/download/ktlint && chmod a+x ktlint \
&& mv "ktlint" /usr/bin/ && mv "ktlint" /usr/bin/
################################
# Install editorconfig-checker #
################################
RUN wget -qO- "https://github.com/editorconfig-checker/editorconfig-checker/releases/latest/download/ec-linux-amd64.tar.gz" | tar -xzf - \
&& mv "bin/ec-linux-amd64" /usr/bin/editorconfig-checker
########################################### ###########################################
# Load GitHub Env Vars for GitHub Actions # # Load GitHub Env Vars for GitHub Actions #
########################################### ###########################################
@ -216,6 +222,7 @@ ENV GITHUB_SHA=${GITHUB_SHA} \
VALIDATE_ARM=${VALIDATE_ARM} \ VALIDATE_ARM=${VALIDATE_ARM} \
VALIDATE_OPENAPI=${VALIDATE_OPENAPI} \ VALIDATE_OPENAPI=${VALIDATE_OPENAPI} \
VALIDATE_PROTOBUF=${VALIDATE_PROTOBUF} \ VALIDATE_PROTOBUF=${VALIDATE_PROTOBUF} \
VALIDATE_EDITORCONFIG=${VALIDATE_EDITORCONFIG} \
ANSIBLE_DIRECTORY=${ANSIBLE_DIRECTORY} \ ANSIBLE_DIRECTORY=${ANSIBLE_DIRECTORY} \
RUN_LOCAL=${RUN_LOCAL} \ RUN_LOCAL=${RUN_LOCAL} \
TEST_CASE_RUN=${TEST_CASE_RUN} \ TEST_CASE_RUN=${TEST_CASE_RUN} \

View file

@ -40,6 +40,7 @@ Developers on **GitHub** can call the **GitHub Action** to lint their code base
| **Clojure** | [clj-kondo](https://github.com/borkdude/clj-kondo) | | **Clojure** | [clj-kondo](https://github.com/borkdude/clj-kondo) |
| **CoffeeScript** | [coffeelint](https://coffeelint.github.io/) | | **CoffeeScript** | [coffeelint](https://coffeelint.github.io/) |
| **Dockerfile** | [dockerfilelint](https://github.com/replicatedhq/dockerfilelint.git) | | **Dockerfile** | [dockerfilelint](https://github.com/replicatedhq/dockerfilelint.git) |
| **EDITORCONFIG** | [editorconfig-checker](https://github.com/editorconfig-checker/editorconfig-checker) |
| **ENV** | [dotenv-linter](https://github.com/dotenv-linter/dotenv-linter) | | **ENV** | [dotenv-linter](https://github.com/dotenv-linter/dotenv-linter) |
| **Golang** | [golangci-lint](https://github.com/golangci/golangci-lint) | | **Golang** | [golangci-lint](https://github.com/golangci/golangci-lint) |
| **HTMLHint** | [HTMLHint](https://github.com/htmlhint/HTMLHint) | | **HTMLHint** | [HTMLHint](https://github.com/htmlhint/HTMLHint) |
@ -183,6 +184,7 @@ and won't run anything unexpected.
| **VALIDATE_OPENAPI** | `true` | Flag to enable or disable the linting process of the language. | | **VALIDATE_OPENAPI** | `true` | Flag to enable or disable the linting process of the language. |
| **VALIDATE_CLOUDFORMATION** | `true` | Flag to enable or disable the linting process of the language. | | **VALIDATE_CLOUDFORMATION** | `true` | Flag to enable or disable the linting process of the language. |
| **VALIDATE_PROTOBUF** | `true` | Flag to enable or disable the linting process of the language. | | **VALIDATE_PROTOBUF** | `true` | Flag to enable or disable the linting process of the language. |
| **VALIDATE_EDITORCONFIG** | `true` | Flag to enable or disable the linting process with the editorconfig. |
| **ANSIBLE_DIRECTORY** | `/ansible` | Flag to set the root directory for Ansible file location(s). | | **ANSIBLE_DIRECTORY** | `/ansible` | Flag to set the root directory for Ansible file location(s). |
| **ACTIONS_RUNNER_DEBUG** | `false` | Flag to enable additional information about the linter, versions, and additional output. | | **ACTIONS_RUNNER_DEBUG** | `false` | Flag to enable additional information about the linter, versions, and additional output. |
| **DISABLE_ERRORS** | `false` | Flag to have the linter complete with exit code 0 even if errors were detected. | | **DISABLE_ERRORS** | `false` | Flag to have the linter complete with exit code 0 even if errors were detected. |

View file

@ -36,6 +36,7 @@ For some linters it is also possible to override rules on a case by case level w
- [Kotlin](#kotlin) - [Kotlin](#kotlin)
- [OpenAPI](#openapi) - [OpenAPI](#openapi)
- [Protocol Buffers](#protocol-buffers) - [Protocol Buffers](#protocol-buffers)
- [EDITORCONFIG-CHECKER](#editorconfig-checker)
- [HTML](#html) - [HTML](#html)
<!-- toc --> <!-- toc -->
@ -743,6 +744,38 @@ lint:
### clj-kondo disable entire file ### clj-kondo disable entire file
```clojure ```clojure
{:output {:exclude-files ["path/to/file"]}} {:output {:exclude-files ["path/to/file"]}}
## EDITORCONFIG-CHECKER
- [editorconfig-checker](https://github.com/editorconfig-checker/editorconfig-checker)
--------------------------------------------------------------------------------
### editorconfig-checker Config file
- `.github/linters/.ecrc`
- This linter will also use the [`.editorconfig`](https://editorconfig.org/) of your project
### editorconfig-checker disable single line
-
```js
<LINE> // editorconfig-checker-disable-line
```
### editorconfig-checker disable code block
- There is currently **No** way to disable rules inline of the file(s)
### editorconfig-checker disable entire file
-
```js
// editorconfig-checker-disable-file
```
- You can disable entire files with the `Exclude` property in `.ecrc`
```json
{
"Exclude": [
"path/to/file",
"^regular\\/expression\\.ext$"
]
}
``` ```
## HTML ## HTML

View file

@ -137,6 +137,7 @@ VALIDATE_POWERSHELL="${VALIDATE_POWERSHELL}" # Boolean to vali
VALIDATE_ARM="${VALIDATE_ARM}" # Boolean to validate language VALIDATE_ARM="${VALIDATE_ARM}" # Boolean to validate language
VALIDATE_KOTLIN="${VALIDATE_KOTLIN}" # Boolean to validate language VALIDATE_KOTLIN="${VALIDATE_KOTLIN}" # Boolean to validate language
VALIDATE_OPENAPI="${VALIDATE_OPENAPI}" # Boolean to validate language VALIDATE_OPENAPI="${VALIDATE_OPENAPI}" # Boolean to validate language
VALIDATE_EDITORCONFIG="${VALIDATE_EDITORCONFIG}" # Boolean to validate files with editorconfig
TEST_CASE_RUN="${TEST_CASE_RUN}" # Boolean to validate only test cases TEST_CASE_RUN="${TEST_CASE_RUN}" # Boolean to validate only test cases
DISABLE_ERRORS="${DISABLE_ERRORS}" # Boolean to enable warning-only output without throwing errors DISABLE_ERRORS="${DISABLE_ERRORS}" # Boolean to enable warning-only output without throwing errors
VALIDATE_HTML="${VALIDATE_HTML}" # Boolean to validate language VALIDATE_HTML="${VALIDATE_HTML}" # Boolean to validate language
@ -800,6 +801,7 @@ Footer() {
exit 0 exit 0
fi fi
} }
################################################################################ ################################################################################
############################### MAIN ########################################### ############################### MAIN ###########################################
################################################################################ ################################################################################
@ -1130,6 +1132,18 @@ if [ "$VALIDATE_KOTLIN" == "true" ]; then
LintCodebase "KOTLIN" "ktlint" "ktlint" ".*\.\(kt\|kts\)\$" "${FILE_ARRAY_KOTLIN[@]}" LintCodebase "KOTLIN" "ktlint" "ktlint" ".*\.\(kt\|kts\)\$" "${FILE_ARRAY_KOTLIN[@]}"
fi fi
########################
# EDITORCONFIG LINTING #
########################
echo ed: "$VALIDATE_EDITORCONFIG"
if [ "$VALIDATE_EDITORCONFIG" == "true" ]; then
####################################
# Lint the files with editorconfig #
####################################
# LintCodebase "FILE_TYPE" "LINTER_NAME" "LINTER_CMD" "FILE_TYPES_REGEX" "FILE_ARRAY"
LintCodebase "EDITORCONFIG" "editorconfig-checker" "editorconfig-checker" "^.*$" "${FILE_ARRAY_ENV[@]}"
fi
################## ##################
# DOCKER LINTING # # DOCKER LINTING #
################## ##################

View file

@ -72,6 +72,7 @@ function GetValidationInfo() {
VALIDATE_KOTLIN=$(echo "$VALIDATE_KOTLIN" | awk '{print tolower($0)}') VALIDATE_KOTLIN=$(echo "$VALIDATE_KOTLIN" | awk '{print tolower($0)}')
VALIDATE_PROTOBUF=$(echo "$VALIDATE_PROTOBUF" | awk '{print tolower($0)}') VALIDATE_PROTOBUF=$(echo "$VALIDATE_PROTOBUF" | awk '{print tolower($0)}')
VALIDATE_OPENAPI=$(echo "$VALIDATE_OPENAPI" | awk '{print tolower($0)}') VALIDATE_OPENAPI=$(echo "$VALIDATE_OPENAPI" | awk '{print tolower($0)}')
VALIDATE_EDITORCONFIG=$(echo "$VALIDATE_EDITORCONFIG" | awk '{print tolower($0)}')
VALIDATE_HTML=$(echo "$VALIDATE_HTML" | awk '{print tolower($0)}') VALIDATE_HTML=$(echo "$VALIDATE_HTML" | awk '{print tolower($0)}')
################################################ ################################################
@ -104,6 +105,7 @@ function GetValidationInfo() {
$VALIDATE_PROTOBUF || -n \ $VALIDATE_PROTOBUF || -n \
$VALIDATE_OPENAPI || -n \ $VALIDATE_OPENAPI || -n \
$VALIDATE_KOTLIN || -n \ $VALIDATE_KOTLIN || -n \
$VALIDATE_EDITORCONFIG || -n \
$VALIDATE_HTML ]]; then $VALIDATE_HTML ]]; then
ANY_SET="true" ANY_SET="true"
fi fi
@ -472,6 +474,20 @@ function GetValidationInfo() {
VALIDATE_CLOJURE="true" VALIDATE_CLOJURE="true"
fi fi
############################################
# Validate if we should check editorconfig #
############################################
if [[ $ANY_SET == "true" ]]; then
# Some linter flags were set - only run those set to true
if [[ -z $VALIDATE_EDITORCONFIG ]]; then
# EDITORCONFIG flag was not set - default to false
VALIDATE_EDITORCONFIG="false"
fi
else
# No linter flags were set - default all to true
VALIDATE_EDITORCONFIG="true"
fi
#################################### ####################################
# Validate if we should check HTML # # Validate if we should check HTML #
#################################### ####################################
@ -619,6 +635,11 @@ function GetValidationInfo() {
else else
PRINT_ARRAY+=("- Excluding [PROTOBUF] files in code base...") PRINT_ARRAY+=("- Excluding [PROTOBUF] files in code base...")
fi fi
if [[ $VALIDATE_EDITORCONFIG == "true" ]]; then
PRINT_ARRAY+=("- Validating [EDITORCONFIG] files in code base...")
else
PRINT_ARRAY+=("- Excluding [EDITORCONFIG] files in code base...")
fi
if [[ $VALIDATE_HTML == "true" ]]; then if [[ $VALIDATE_HTML == "true" ]]; then
PRINT_ARRAY+=("- Validating [HTML] files in code base...") PRINT_ARRAY+=("- Validating [HTML] files in code base...")
else else