Merge branch 'master' into OpenAPI

This commit is contained in:
Lukas Gravley 2020-06-26 08:19:10 -05:00 committed by GitHub
commit 625841f40f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
38 changed files with 619 additions and 39 deletions

View file

@ -8,7 +8,7 @@
# Its based on being built from a GitHub Action, but could be easily updated
# To be ran in a different medium.
#
# PRE-Reqs:
# PRE-Requirements:
# - Dockerfile
# - System with Docker installed
# - Global variables met

View file

@ -35,7 +35,7 @@ CheckGHEPid()
################################################
if [ ! -f "$GHE_CONFIG_PID" ]; then
# File not found
echo "Were good to move forward, no .pid file found at:[$GHE_CONFIG_PID]"
echo "We're good to move forward, no .pid file found at:[$GHE_CONFIG_PID]"
else
# Found the pid running, need to sleep
echo "Current PID found, sleeping $SLEEP_SECONDS seconds before next check..."
@ -189,10 +189,10 @@ CheckGHEProcess
####################
RunConfigApply
##########################################
# Were going to run it again after a nap #
# to make sure there is no crazy actions #
##########################################
###########################################
# We're going to run it again after a nap #
# to make sure there is no crazy actions #
###########################################
sleep 300s
######################

View file

@ -0,0 +1,13 @@
# Clojure Test Cases
This folder holds the test cases for **Clojure**.
## 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,64 @@
(ns foo
(:require
[clojure.string :as str]
;; We're never using this namespace. Also, the namespaces aren't sorted.
[clojure.set :as set]))
;; Here we made a typo, so the symbol is unresolved:
(but-last [1 2 3])
;; Clj-kondo knows about arities of clojure namespaces, but you can also teach
;; it about your libraries or own namespaces
(str/join)
;; foo has an arity of 2, but we're not actually using y
(defn foo-fn [x y]
;; this do is redundant:
(do
;; this is handy for debugging, but please remove it before pushing your code:
(def tmp_x x)
(let [y (fn [] (inc x))]
;; the next let can be squashed together with the previous:
(let [z y]
;; whoopsy, calling a local function with an incorrect number of args:
(y x)
;; also wrong:
(recur)))))
(letfn
[(f [] (h 1))
(h [] (f 1))])
(defn- private-fn [])
;; redefining it...
(defn- private-fn [])
(defn foo [] :foo)
;; Type error, because foo doesn't return a number!
(inc (foo))
;; I'm tired now, let's sleep...
;; Oops, not happening because of wrong amount of args:
(Thread/sleep 1000 1 2)
;; Here we switch to another namespace and require the previous:
(ns bar (:require [foo :as f]))
;; Wrong arity when calling a function from the previous namespace:
(f/foo-fn)
;; private:
(f/private-fn)
;; this won't pass the reader:
{:a 1 :a 2}
;; and neither will this:
#{1 1}
;; nor this:
{:a 1 :b}
(ns bar-test (:require [clojure.test :as t]))
(t/deftest my-tests
;; you're not actually testing something here:
(odd? (inc 1)))

View file

@ -0,0 +1,34 @@
(ns foo
(:require
[clojure.string :as str]))
(butlast [1 2 3])
(str/join "" "")
(defn foo-fn [x]
(let [y (fn [] (inc x))]
(y)))
(letfn
[(f [g] (h g))
(h [i] (f i))])
(defn foo [] 1)
(inc (foo))
(Thread/sleep 1000 1)
;; Here we switch to another namespace and require the previous:
(ns bar (:require [foo :as f]))
(f/foo-fn 1)
{:a 1 :b 2}
#{1 2}
{:a 1 :b 2}
(ns bar-test (:require [clojure.test :as t]))
(t/deftest my-tests
(t/is (odd? (inc 1))))

View file

@ -6,7 +6,7 @@
# `mona echo *` - repeats what you say
#
# Author:
# admiralAwkbar@github.com
# admiralawkbar@github.com
###############################
# Drop Hammer array of images #

View file

@ -6,7 +6,7 @@
# `mona echo *` - repeats what you say
#
# Author:
# admiralAwkbar@github.com
# admiralawkbar@github.com
###############################
# Drop Hammer array of images #

View file

@ -1,5 +1,5 @@
/* Bad */
/* Multiline */
/* Multi-line */
/* Comment */
.selector-3[type="text"] {
background: linear-gradient(#FFFFFF, rgba(0, 0, 0, 0.8));

View file

@ -16,5 +16,5 @@ ls -la
# Walk away
Were all done **here**.
We're all done **here**.
- [Link Action]https://github.com

View file

@ -16,5 +16,5 @@ ls -la
### Walk away
Were all done **here**.
We're all done **here**.
- [Link Action](https://github.com)

View file

@ -1,7 +1,7 @@
#!/usr/bin/perl
################################################################################
################################################################################
######### Script action @admiralAwkbar #########################################
######### Script action @admiralawkbar #########################################
################################################################################
#############

View file

@ -1,7 +1,7 @@
#!/usr/bin/perl
################################################################################
################################################################################
######### Script action @admiralAwkbar #########################################
######### Script action @admiralawkbar #########################################
################################################################################
#############

View file

@ -9,7 +9,7 @@
# Its based on being built from a GitHub Action, but could be easily updated
# To be ran in a different medium.
#
# PRE-Reqs:
# PRE-Requirements:
# - Dockerfile
# - System with Docker installed
# - Global variables met

View file

@ -0,0 +1,7 @@
musl
nvq
rdoc
setuptools
uninstall
wget
WORKDIR

View file

@ -0,0 +1 @@
alnum

View file

@ -0,0 +1,3 @@
noqa
toc
todo

View file

@ -0,0 +1,48 @@
abcd
bangbang
bento
bullettrain
busstop
cn
couplekiss
dango
dvd
facepunch
feelsgood
finnadie
fuelpump
gb
goberserk
godmode
gua
hankey
heartpulse
hocho
hurtrealbad
icecream
inbox
iphone
izakaya
jp
keycap
mega
minidisc
moyai
neckbeard
octocat
oden
ramen
ru
scorpius
shipit
snowboarder
tada
tanabata
thumbsdown
thumbsup
tophat
trollface
tshirt
uk
vhs
zzz

View file

@ -0,0 +1,2 @@
configcheck
nohup

View file

@ -0,0 +1,2 @@
args
pid

View file

@ -0,0 +1 @@
initialconfig

View file

@ -0,0 +1,2 @@
ldapconfig
openldap

View file

@ -0,0 +1,8 @@
cov
eslintcache
jscoverage
jspm
nyc
tgz
typings
wscript

View file

@ -0,0 +1,7 @@
cw
Mstrict
printenv
rcfile
tf
tolower
whoami

View file

@ -0,0 +1,8 @@
Autobots
basemap
cas
cn
crt
rsa
tlsv
tmp

View file

@ -0,0 +1,4 @@
dotcom
identicons
oauth
timezone

158
.github/actions/spelling/allow/words.txt vendored Normal file
View file

@ -0,0 +1,158 @@
admiralawkbar
ansible
api
apk
aws
baz
beardofedu
certs
changeset
codebase
CODEOWNERS
coffeelint
coffeescript
collectd
concat
config
configs
css
dest
devops
dirname
dockerfile
dockerfilelint
dockerfilelintrc
dotenv
elif
emails
entrypoint
Errorf
eslint
eslintrc
filetype
func
gcc
getenv
ghe
GHES
ghl
github
globals
golang
golangci
Google
gpg
gql
Grafana
graphql
grep
homepage
hookshot
hostname
hostvars
http
https
hubot
idp
ip
Jani
javascript
jq
json
jsonlint
jwiebalk
JWT
ldap
len
lfs
libxml
linted
linting
loadbalancer
localhost
loglevel
markdownlint
millis
mkdir
nodejs
NONINFRINGEMENT
noproxy
noreply
npm
ntp
opensource
opensourcefriday
perl
plugin
posix
pprint
Prego
prettyjson
Println
probot
px
py
pylint
rb
readlines
README
regex
regexp
resqued
rgba
rien
Rubo
rubocop
saml
screenshots
shellcheck
signup
smtp
snmp
socio
splunk
src
ssh
ssl
sso
stackoverflow
stacktraces
standardjs
stringify
stylelint
stylelintrc
subdomain
subfolders
sudo
sys
syslog
taz
terraform
tflint
tileserver
tls
typeof
ubuntu
udp
uid
undef
uniq
uri
url
urlencode
username
usr
utils
Vape
vnd
webhook
wiki
wildcards
workflow
xml
xmllint
yaml
yamllint
yml
yq
zkoppert

2
.github/actions/spelling/excludes.txt vendored Normal file
View file

@ -0,0 +1,2 @@
^\.github/linters/
^TEMPLATES/\.\S*

39
.github/actions/spelling/expect.txt vendored Normal file
View file

@ -0,0 +1,39 @@
cdxml
changelog
chmod
Dockerhub
EOL
GPR
IAm
icu
jre
kotlin
krb
ktlint
libgcc
libintl
libssl
libstdc
linux
lttng
microsoft
ncurses
nq
openjdk
php
powershell
println
psd
psm
psrc
pssc
psscriptanalyzer
pwsh
rcu
rhc
ry
terminfo
tzdata
userspace
xargs
zlib

7
.github/actions/spelling/patterns.txt vendored Normal file
View file

@ -0,0 +1,7 @@
https?:\S*
# ignore long runs of a single character:
([A-Za-z])\1{3,}
# Any CLI args (-xzf -aef)
\ -\w+\b
# Hex colors (dummy group to not be treated as comment)
(?:#)([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})

2
.github/linters/.clj-kondo/config.edn vendored Normal file
View file

@ -0,0 +1,2 @@
{:linters {:unresolved-symbol {:exclude [(compojure.api.sweet/defroutes)]}
:refer-all {:exclude [clj-time.jdbc]}}}

48
.github/workflows/check-spelling.yml vendored Normal file
View file

@ -0,0 +1,48 @@
---
####################
## Check spelling ##
####################
#
# Documentation:
# https://help.github.com/en/articles/workflow-syntax-for-github-actions
#
name: Spell checking
#############################
# Start the job on all push #
#############################
on:
push:
branches-ignore:
- 'master'
###############
# Set the Job #
###############
jobs:
build:
# Name the Job
name: Spell checking
# Set the agent to run on
runs-on: ubuntu-latest
##################
# Load all steps #
##################
steps:
##########################
# Checkout the code base #
##########################
- name: Checkout Code
uses: actions/checkout@v2
#############################
# Run check spelling action #
#############################
- name: Check spelling
uses: check-spelling/check-spelling@0.0.16-alpha
with:
bucket: .github/actions
project: spelling
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View file

@ -0,0 +1,13 @@
name: Greetings
on: [pull_request, issues]
jobs:
greeting:
runs-on: ubuntu-latest
steps:
- uses: actions/first-interaction@v1
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
issue-message: 'Thanks for opening your first issue in the **super-linter** repo! :tada:'
pr-message: 'Thanks for opening your first pr in the **super-linter** repo! :tada: This project is built on contributions just like this.'

5
.gitignore vendored
View file

@ -29,7 +29,7 @@ bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
# Compiled binary add-ons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
@ -59,3 +59,6 @@ typings/
# next.js build output
.next
# clj-kondo cache
.cache

View file

@ -132,6 +132,15 @@ RUN curl -Ls "$(curl -Ls https://api.github.com/repos/terraform-linters/tflint/r
RUN wget "https://github.com/dotenv-linter/dotenv-linter/releases/latest/download/dotenv-linter-alpine-x86_64.tar.gz" -O - -q | tar -xzf - \
&& mv "dotenv-linter" /usr/bin
#####################
# Install clj-kondo #
#####################
ARG CLJ_KONDO_VERSION='2020.06.12'
RUN curl -sLO https://github.com/borkdude/clj-kondo/releases/download/v${CLJ_KONDO_VERSION}/clj-kondo-${CLJ_KONDO_VERSION}-linux-static-amd64.zip \
&& unzip clj-kondo-${CLJ_KONDO_VERSION}-linux-static-amd64.zip \
&& rm clj-kondo-${CLJ_KONDO_VERSION}-linux-static-amd64.zip \
&& mv clj-kondo /usr/bin/
##################
# Install ktlint #
##################
@ -167,6 +176,7 @@ ENV GITHUB_SHA=${GITHUB_SHA} \
VALIDATE_TERRAFORM=${VALIDATE_TERRAFORM} \
VALIDATE_CSS=${VALIDATE_CSS} \
VALIDATE_ENV=${VALIDATE_ENV} \
VALIDATE_CLOJURE=${VALIDATE_CLOJURE} \
VALIDATE_KOTLIN=${VALIDATE_KOTLIN} \
VALIDATE_POWERSHELL=${VALIDATE_POWERSHELL} \
VALIDATE_OPENAPI=${VALIDATE_OPENAPI} \

View file

@ -8,10 +8,26 @@ The end goal of this tool:
- Build guidelines for code layout and format
- Automate the process to help streamline code reviews
## Table of Contents
- [How it works](#how-it-works)
- [Supported linters](#supported-linters)
- [Usage](#how-to-use)
- [Environment variables](#environment-variables)
- [Disable rules](#disabling-rules)
- [Docker Hub](#docker-hub)
- [Run Super-Linter locally](#running-super-linter-locally-troubleshootingdebuggingenhancements)
- [CI / CT/ CD](#cictcd)
- [Limitations](#limitations)
- [Contributing](#how-to-contribute)
## How it Works
The super-linter finds issues and reports them to the console output. Fixes are suggested in the console output but not automatically fixed, and a status check will show up as failed on the pull request.
The design of the **Super-Linter** is currently to allow linting to occur in **GitHub Actions** as a part of continuous integration occurring on pull requests as the commits get pushed. It works best when commits are being pushed early and often to a branch with an open or draft pull request. There is some desire to move this closer to local development for faster feedback on linting errors but this is not yet supported.
## Supported Linters
Developers on **GitHub** can call the **GitHub Action** to lint their code base with the following list of linters:
@ -20,6 +36,7 @@ Developers on **GitHub** can call the **GitHub Action** to lint their code base
| --- | --- |
| **Ansible** | [ansible-lint](https://github.com/ansible/ansible-lint) |
| **CSS** | [stylelint](https://stylelint.io/) |
| **Clojure** | [clj-kondo](https://github.com/borkdude/clj-kondo) |
| **CoffeeScript** | [coffeelint](https://coffeelint.github.io/) |
| **Dockerfile** | [dockerfilelint](https://github.com/replicatedhq/dockerfilelint.git) |
| **Golang** | [golangci-lint](https://github.com/golangci/golangci-lint) |
@ -144,6 +161,7 @@ and won't run anything unexpected.
| **VALIDATE_TERRAFORM** | `true` | Flag to enable or disable the linting process of the language. |
| **VALIDATE_CSS** | `true` | Flag to enable or disable the linting process of the language. |
| **VALIDATE_ENV** | `true` | Flag to enable or disable the linting process of the language. |
| **VALIDATE_CLOJURE** | `true` | Flag to enable or disable the linting process of the language. |
| **VALIDATE_KOTLIN** | `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. |
| **ANSIBLE_DIRECTORY** | `/ansible` | Flag to set the root directory for Ansible file location(s). |
@ -165,6 +183,8 @@ The **Docker** container that is built from this repository is located at `https
## Running Super-Linter locally (troubleshooting/debugging/enhancements)
If you find that you need to run super-linter locally, you can follow the documentation at [Running super-linter locally](https://github.com/github/super-linter/blob/master/docs/run-linter-locally.md)
Check out the [note](#how-it-works) in **How it Works** to understand more about the **Super-Linter** linting locally versus via continuous integration.
### CI/CT/CD
The **Super-Linter** has *CI/CT/CD* configured utilizing **GitHub** Actions.
- When a branch is created and code is pushed, a **GitHub** Action is triggered for building the new **Docker** container with the new codebase

View file

@ -0,0 +1,2 @@
{:linters {:unresolved-symbol {:exclude [(compojure.api.sweet/defroutes)]}
:refer-all {:exclude [clj-time.jdbc]}}}

View file

@ -157,9 +157,9 @@ This line is waaaaaaaaaay too long # yamllint disable-line
### Yamllint disable code block
```yml
# yamllint disable rule:colons
- Lorem : ipsum
dolor : sit amet,
consectetur : adipiscing elit
- Key : value
dolor : sit,
foo : bar
# yamllint enable
```
@ -223,9 +223,9 @@ class Foo(object):
def meth3(self):
"""test one line disabling"""
# no error
print(self.bla) # pylint: disable=no-member
print(self.baz) # pylint: disable=no-member
# error
print(self.blop)
print(self.baz)
```
### Pylint disable entire file
@ -629,3 +629,23 @@ import package.b.*
### OpenAPI disable entire file
- There is currently **No** way to disable rules inline of the file(s)
- However, you can make [rule exceptions](https://stoplight.io/p/docs/gh/stoplightio/spectral/docs/guides/6-exceptions.md?srn=gh/stoplightio/spectral/docs/guides/6-exceptions.md) in the config for individual file(s).
--------------------------------------------------------------------------------
## Clojure
- [clj-kondo](https://github.com/borkdude/clj-kondo)
- Since clj-kondo approaches static analysis in a very Clojure way, it is advised to read the [configuration docs](https://github.com/borkdude/clj-kondo/blob/master/doc/config.md)
### clj-kondo standard Config file
- `.github/linters/.clj-kondo/config.edn`
### clj-kondo disable single line
- There is currently **No** way to disable rules in a single line
### clj-kondo disable code block
- There is currently **No** way to disable rules in a code block
### clj-kondo disable entire file
```clojure
{:output {:exclude-files ["path/to/file"]}}
```

View file

@ -3,7 +3,7 @@
################################################################################
################################################################################
########### Super-Linter (Lint all the code) @AdmiralAwkbar ####################
########### Super-Linter (Lint all the code) @admiralawkbar ####################
################################################################################
################################################################################
@ -27,7 +27,7 @@ RUBY_FILE_NAME='.ruby-lint.yml' # Name of th
RUBY_LINTER_RULES="$DEFAULT_RULES_LOCATION/$RUBY_FILE_NAME" # Path to the ruby lint rules
# Coffee Vars
COFFEE_FILE_NAME='.coffee-lint.json' # Name of the file
COFFEESCRIPT_LINTER_RULES="$DEFAULT_RULES_LOCATION/$COFFEE_FILE_NAME" # Path to the coffescript lint rules
COFFEESCRIPT_LINTER_RULES="$DEFAULT_RULES_LOCATION/$COFFEE_FILE_NAME" # Path to the coffeescript lint rules
# Javascript Vars
JAVASCRIPT_FILE_NAME='.eslintrc.yml' # Name of the file
JAVASCRIPT_LINTER_RULES="$DEFAULT_RULES_LOCATION/$JAVASCRIPT_FILE_NAME" # Path to the Javascript lint rules
@ -57,6 +57,9 @@ CSS_LINTER_RULES="$DEFAULT_RULES_LOCATION/$CSS_FILE_NAME" # Path to th
# OpenAPI Vars
OPENAPI_FILE_NAME='.openapirc.yml' # Name of the file
OPENAPI_LINTER_RULES="$DEFAULT_RULES_LOCATION/$OPENAPI_FILE_NAME" # Path to the OpenAPI lint rules
# Clojure Vars
CLOJURE_FILE_NAME='.clj-kondo/config.edn'
CLOJURE_LINTER_RULES="$DEFAULT_RULES_LOCATION/$CLOJURE_FILE_NAME"
#######################################
# Linter array for information prints #
@ -64,7 +67,7 @@ OPENAPI_LINTER_RULES="$DEFAULT_RULES_LOCATION/$OPENAPI_FILE_NAME" # Path to th
LINTER_ARRAY=("jsonlint" "yamllint" "xmllint" "markdownlint" "shellcheck"
"pylint" "perl" "rubocop" "coffeelint" "eslint" "standard"
"ansible-lint" "/dockerfilelint/bin/dockerfilelint" "golangci-lint" "tflint"
"stylelint" "dotenv-linter" "powershell" "ktlint" "spectral")
"stylelint" "dotenv-linter" "powershell" "ktlint" "clj-kondo" "spectral")
#############################
# Language array for prints #
@ -72,7 +75,7 @@ LINTER_ARRAY=("jsonlint" "yamllint" "xmllint" "markdownlint" "shellcheck"
LANGUAGE_ARRAY=('YML' 'JSON' 'XML' 'MARKDOWN' 'BASH' 'PERL' 'PHP' 'RUBY' 'PYTHON'
'COFFEESCRIPT' 'ANSIBLE' 'JAVASCRIPT_STANDARD' 'JAVASCRIPT_ES'
'TYPESCRIPT_STANDARD' 'TYPESCRIPT_ES' 'DOCKER' 'GO' 'TERRAFORM'
'ENV' 'POWERSHELL' 'KOTLIN' 'OPENAPI')
'CSS' 'ENV' 'POWERSHELL' 'KOTLIN' 'CLOJURE' 'OPENAPI')
###################
# GitHub ENV Vars #
@ -102,6 +105,7 @@ VALIDATE_DOCKER="${VALIDATE_DOCKER}" # Boolean to validate lang
VALIDATE_GO="${VALIDATE_GO}" # Boolean to validate language
VALIDATE_CSS="${VALIDATE_CSS}" # Boolean to validate language
VALIDATE_ENV="${VALIDATE_ENV}" # Boolean to validate language
VALIDATE_CLOJURE="${VALIDATE_CLOJURE}" # Boolean to validate language
VALIDATE_TERRAFORM="${VALIDATE_TERRAFORM}" # Boolean to validate language
VALIDATE_POWERSHELL="${VALIDATE_POWERSHELL}" # Boolean to validate language
VALIDATE_KOTLIN="${VALIDATE_KOTLIN}" # Boolean to validate language
@ -118,16 +122,16 @@ ACTIONS_RUNNER_DEBUG="${ACTIONS_RUNNER_DEBUG}" # Boolean to see even more info
################
# Default Vars #
################
DEFAULT_VALIDATE_ALL_CODEBASE='true' # Default value for validate all files
DEFAULT_WORKSPACE="${DEFAULT_WORKSPACE:-/tmp/lint}" # Default workspace if running locally
DEFAULT_ANSIBLE_DIRECTORY="$GITHUB_WORKSPACE/ansible" # Default Ansible Directory
DEFAULT_RUN_LOCAL='false' # Default value for debugging locally
DEFAULT_TEST_CASE_RUN='false' # Flag to tell code to run only test cases
DEFAULT_ACTIONS_RUNNER_DEBUG='false' # Default value for debugging output
RAW_FILE_ARRAY=() # Array of all files that were changed
READ_ONLY_CHANGE_FLAG=0 # Flag set to 1 if files changed are not txt or md
TEST_CASE_FOLDER='.automation/test' # Folder for test cases we should always ignore
DEFAULT_DISABLE_ERRORS='false' # Default to enabling errors
DEFAULT_VALIDATE_ALL_CODEBASE='true' # Default value for validate all files
DEFAULT_WORKSPACE="${DEFAULT_WORKSPACE:-/tmp/lint}" # Default workspace if running locally
DEFAULT_ANSIBLE_DIRECTORY="$GITHUB_WORKSPACE/ansible" # Default Ansible Directory
DEFAULT_RUN_LOCAL='false' # Default value for debugging locally
DEFAULT_TEST_CASE_RUN='false' # Flag to tell code to run only test cases
DEFAULT_ACTIONS_RUNNER_DEBUG='false' # Default value for debugging output
RAW_FILE_ARRAY=() # Array of all files that were changed
READ_ONLY_CHANGE_FLAG=0 # Flag set to 1 if files changed are not txt or md
TEST_CASE_FOLDER='.automation/test' # Folder for test cases we should always ignore
DEFAULT_DISABLE_ERRORS='false' # Default to enabling errors
##########################
# Array of changed files #
@ -152,6 +156,7 @@ FILE_ARRAY_TERRAFORM=() # Array of files to check
FILE_ARRAY_POWERSHELL=() # Array of files to check
FILE_ARRAY_CSS=() # Array of files to check
FILE_ARRAY_ENV=() # Array of files to check
FILE_ARRAY_CLOJURE=() # Array of files to check
FILE_ARRAY_KOTLIN=() # Array of files to check
FILE_ARRAY_OPENAPI=() # Array of files to check
@ -179,6 +184,7 @@ ERRORS_FOUND_TERRAFORM=0 # Count of errors found
ERRORS_FOUND_POWERSHELL=0 # Count of errors found
ERRORS_FOUND_CSS=0 # Count of errors found
ERRORS_FOUND_ENV=0 # Count of errors found
ERRORS_FOUND_CLOJURE=0 # Count of errors found
ERRORS_FOUND_KOTLIN=0 # Count of errors found
ERRORS_FOUND_OPENAPI=0 # Count of errors found
@ -774,6 +780,7 @@ GetValidationInfo()
VALIDATE_POWERSHELL=$(echo "$VALIDATE_POWERSHELL" | awk '{print tolower($0)}')
VALIDATE_CSS=$(echo "$VALIDATE_CSS" | awk '{print tolower($0)}')
VALIDATE_ENV=$(echo "$VALIDATE_ENV" | awk '{print tolower($0)}')
VALIDATE_CLOJURE=$(echo "$VALIDATE_CLOJURE" | awk '{print tolower($0)')
VALIDATE_KOTLIN=$(echo "$VALIDATE_KOTLIN" | awk '{print tolower($0)}')
VALIDATE_OPENAPI=$(echo "$VALIDATE_OPENAPI" | awk '{print tolower($0)}')
@ -802,8 +809,9 @@ GetValidationInfo()
-n "$VALIDATE_POWERSHELL" || \
-n "$VALIDATE_CSS" || \
-n "$VALIDATE_ENV" || \
-n "$VALIDATE_KOTLIN" || \
-n "$VALIDATE_OPENAPI" ]]; then
-n "$VALIDATE_CLOJURE" || \
-n "$VALIDATE_OPENAPI" ]] \
-n "$VALIDATE_KOTLIN" ]]; then
ANY_SET="true"
fi
@ -1129,6 +1137,20 @@ GetValidationInfo()
VALIDATE_OPENAPI="true"
fi
#######################################
# Validate if we should check Clojure #
#######################################
if [[ "$ANY_SET" == "true" ]]; then
# Some linter flags were set - only run those set to true
if [[ -z "$VALIDATE_CLOJURE" ]]; then
# Clojure flag was not set - default to false
VALIDATE_CLOJURE="false"
fi
else
# No linter flags were set - default all to true
VALIDATE_CLOJURE="true"
fi
#######################################
# Print which linters we are enabling #
#######################################
@ -1232,6 +1254,11 @@ GetValidationInfo()
else
PRINT_ARRAY+=("- Excluding [CSS] files in code base...")
fi
if [[ "$VALIDATE_CLOJURE" == "true" ]]; then
PRINT_ARRAY+=("- Validating [CLOJURE] files in code base...")
else
PRINT_ARRAY+=("- Excluding [CLOJURE] files in code base...")
fi
if [[ "$VALIDATE_ENV" == "true" ]]; then
PRINT_ARRAY+=("- Validating [ENV] files in code base...")
else
@ -1644,6 +1671,15 @@ BuildFileList()
# Set the READ_ONLY_CHANGE_FLAG since this could be exec #
##########################################################
READ_ONLY_CHANGE_FLAG=1
elif [ "$FILE" == "clj" ] || [ "$FILE" == "cljs" ] || [ "$FILE" == "cljc" ] || [ "$FILE" == "edn" ]; then
################################
# Append the file to the array #
################################
FILE_ARRAY_CLOJURE+=("$FILE")
##########################################################
# Set the READ_ONLY_CHANGE_FLAG since this could be exec #
##########################################################
READ_ONLY_CHANGE_FLAG=1
else
##############################################
# Use file to see if we can parse what it is #
@ -1873,7 +1909,7 @@ LintCodebase()
# Lint the file with the rules #
################################
# Need to append "'" to make the pwsh call syntax correct, also exit with exit code from inner subshell
LINT_CMD=$(cd "$GITHUB_WORKSPACE/$TEST_CASE_FOLDER" || exit; $LINTER_COMMAND "$FILE"; exit $? 2>&1)
LINT_CMD=$(cd "$GITHUB_WORKSPACE" || exit; $LINTER_COMMAND "$FILE"; exit $? 2>&1)
else
################################
# Lint the file with the rules #
@ -2173,8 +2209,9 @@ Footer()
[ "$ERRORS_FOUND_RUBY" -ne 0 ] || \
[ "$ERRORS_FOUND_CSS" -ne 0 ] || \
[ "$ERRORS_FOUND_ENV" -ne 0 ] || \
[ "$ERRORS_FOUND_KOTLIN" -ne 0 ] || \
[ "$ERRORS_FOUND_OPENAPI" -ne 0 ]; then
[ "$ERRORS_FOUND_OPENAPI" -ne 0 ] \
[ "$ERRORS_FOUND_CLOJURE" -ne 0 ] || \
[ "$ERRORS_FOUND_KOTLIN" -ne 0 ]; then
# Failed exit
echo "Exiting with errors found!"
exit 1
@ -2235,6 +2272,7 @@ RunTestCases()
TestCodebase "POWERSHELL" "pwsh" "pwsh -c Invoke-ScriptAnalyzer -EnableExit -Settings $POWERSHELL_LINTER_RULES -Path" ".*\.\(ps1\|psm1\|psd1\|ps1xml\|pssc\|psrc\|cdxml\)\$"
TestCodebase "CSS" "stylelint" "stylelint --config $CSS_LINTER_RULES" ".*\.\(css\)\$"
TestCodebase "ENV" "dotenv-linter" "dotenv-linter" ".*\.\(env\)\$"
TestCodebase "CLOJURE" "clj-kondo" "clj-kondo --config $CLOJURE_LINTER_RULES --lint" ".*\.\(clj\|cljs\|cljc\|edn\)\$"
TestCodebase "KOTLIN" "ktlint" "ktlint" ".*\.\(kt\|kts\)\$"
TestCodebase "OPENAPI" "spectral" "spectral lint -r $OPENAPI_LINTER_RULES" ".*\.\(ymlopenapi\|jsonopenapi\)\$"
@ -2568,6 +2606,20 @@ if [ "$VALIDATE_DOCKER" == "true" ]; then
LintCodebase "DOCKER" "/dockerfilelint/bin/dockerfilelint" "/dockerfilelint/bin/dockerfilelint" ".*\(Dockerfile\)\$" "${FILE_ARRAY_DOCKER[@]}"
fi
###################
# CLOJURE LINTING #
###################
if [ "$VALIDATE_CLOJURE" == "true" ]; then
#################################
# Get Clojure standard rules #
#################################
GetStandardRules "clj-kondo"
#########################
# Lint the Clojure files #
#########################
LintCodebase "CLOJURE" "clj-kondo" "clj-kondo --config $CLOJURE_LINTER_RULES --lint" ".*\.\(clj\|cljs\|cljc\|edn\)\$" "${FILE_ARRAY_CLOJURE[@]}"
fi
######################
# POWERSHELL LINTING #
######################