From 89309d6582cd512acb012c2d1d4b3eb133197f44 Mon Sep 17 00:00:00 2001 From: Lucas Gravley <29484535+admiralAwkbar@users.noreply.github.com> Date: Wed, 23 Oct 2019 10:16:17 -0500 Subject: [PATCH 1/7] fixed code --- .automation/ansible-linter.sh | 2 +- lib/entrypoint.sh | 40 +++++++++++++++++------------------ 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/.automation/ansible-linter.sh b/.automation/ansible-linter.sh index a9c0f506..3621e3f2 100644 --- a/.automation/ansible-linter.sh +++ b/.automation/ansible-linter.sh @@ -84,7 +84,7 @@ LintAnsibleFiles() ################################# # Get list of all files to lint # ################################# - # shellcheck disable=SC2164,SC2010 + # shellcheck disable=SC2164,SC2010,SC2207 LIST_FILES=($(cd "$ANSIBLE_DIR"; ls -I vault.yml -I galaxy.yml | grep ".yml" 2>&1)) ################## diff --git a/lib/entrypoint.sh b/lib/entrypoint.sh index 1fa061d9..1d215cc1 100755 --- a/lib/entrypoint.sh +++ b/lib/entrypoint.sh @@ -265,7 +265,7 @@ LintJsonFiles() # Validate we have yamllint installed # ####################################### # shellcheck disable=SC2230 - VALIDATE_INSTALL_CMD=$(which "$LINTER_NAME" 2>&1) + VALIDATE_INSTALL_CMD=$(command -v "$LINTER_NAME" 2>&1) ####################### # Load the error code # @@ -367,7 +367,7 @@ LintYmlFiles() # Validate we have yamllint installed # ####################################### # shellcheck disable=SC2230 - VALIDATE_INSTALL_CMD=$(which "$LINTER_NAME" 2>&1) + VALIDATE_INSTALL_CMD=$(command -v "$LINTER_NAME" 2>&1) ####################### # Load the error code # @@ -391,8 +391,8 @@ LintYmlFiles() ################################# # Get list of all files to lint # ################################# - # shellcheck disable=SC2207 - LIST_FILES=($(find "$GITHUB_WORKSPACE" -type f \( -name "*.yml" -or -name "*.yaml" \) 2>&1)) + # shellcheck disable=SC2207,SC2164 + LIST_FILES=($(cd "$GITHUB_WORKSPACE"; find . -type f \( -name "*.yml" -or -name "*.yaml" \) 2>&1)) ################## # Lint the files # @@ -469,7 +469,7 @@ LintXmlFiles() # Validate we have yamllint installed # ####################################### # shellcheck disable=SC2230 - VALIDATE_INSTALL_CMD=$(which "$LINTER_NAME" 2>&1) + VALIDATE_INSTALL_CMD=$(command -v "$LINTER_NAME" 2>&1) ####################### # Load the error code # @@ -493,7 +493,7 @@ LintXmlFiles() ################################# # Get list of all files to lint # ################################# - # shellcheck disable=SC2207 + # shellcheck disable=SC2207,SC2164 LIST_FILES=($(cd "$GITHUB_WORKSPACE"; find . -type f -name "*.xml" 2>&1)) ################## @@ -571,7 +571,7 @@ LintMdFiles() # Validate we have yamllint installed # ####################################### # shellcheck disable=SC2230 - VALIDATE_INSTALL_CMD=$(which "$LINTER_NAME" 2>&1) + VALIDATE_INSTALL_CMD=$(command -v "$LINTER_NAME" 2>&1) ####################### # Load the error code # @@ -595,7 +595,7 @@ LintMdFiles() ################################# # Get list of all files to lint # ################################# - # shellcheck disable=SC2207 + # shellcheck disable=SC2207,SC2164 LIST_FILES=($(cd "$GITHUB_WORKSPACE"; find . -type f -name "*.md" 2>&1)) ################## @@ -673,7 +673,7 @@ LintBashFiles() # Validate we have shellcheck installed # ######################################### # shellcheck disable=SC2230 - VALIDATE_INSTALL_CMD=$(which "$LINTER_NAME" 2>&1) + VALIDATE_INSTALL_CMD=$(command -v "$LINTER_NAME" 2>&1) ####################### # Load the error code # @@ -697,7 +697,7 @@ LintBashFiles() ################################# # Get list of all files to lint # ################################# - # shellcheck disable=SC2207 + # shellcheck disable=SC2207,SC2164 LIST_FILES=($(cd "$GITHUB_WORKSPACE"; find . -type f -name "*.sh" 2>&1)) ################## @@ -776,7 +776,7 @@ LintPythonFiles() # Validate we have pylint installed # ##################################### # shellcheck disable=SC2230 - VALIDATE_INSTALL_CMD=$(which "$LINTER_NAME" 2>&1) + VALIDATE_INSTALL_CMD=$(command -v "$LINTER_NAME" 2>&1) ####################### # Load the error code # @@ -800,7 +800,7 @@ LintPythonFiles() ################################# # Get list of all files to lint # ################################# - # shellcheck disable=SC2207 + # shellcheck disable=SC2207,SC2164 LIST_FILES=($(cd "$GITHUB_WORKSPACE"; find . -type f -name "*.py" 2>&1)) ################## @@ -879,7 +879,7 @@ LintPerlFiles() # Validate we have perl installed # ################################### # shellcheck disable=SC2230 - VALIDATE_INSTALL_CMD=$(which "$LINTER_NAME" 2>&1) + VALIDATE_INSTALL_CMD=$(command -v "$LINTER_NAME" 2>&1) ####################### # Load the error code # @@ -903,7 +903,7 @@ LintPerlFiles() ################################# # Get list of all files to lint # ################################# - # shellcheck disable=SC2207 + # shellcheck disable=SC2207,SC2164 LIST_FILES=($(cd "$GITHUB_WORKSPACE"; find . -type f -name "*.pl" 2>&1)) ################## @@ -982,7 +982,7 @@ LintRubyFiles() # Validate we have perl installed # ################################### # shellcheck disable=SC2230 - VALIDATE_INSTALL_CMD=$(which "$LINTER_NAME" 2>&1) + VALIDATE_INSTALL_CMD=$(command -v "$LINTER_NAME" 2>&1) ####################### # Load the error code # @@ -1006,7 +1006,7 @@ LintRubyFiles() ################################# # Get list of all files to lint # ################################# - # shellcheck disable=SC2207 + # shellcheck disable=SC2207,SC2164 LIST_FILES=($(cd "$GITHUB_WORKSPACE"; find . -type f -name "*.rb" 2>&1)) ################## @@ -1085,7 +1085,7 @@ LintCoffeeFiles() # Validate we have pylint installed # ##################################### # shellcheck disable=SC2230 - VALIDATE_INSTALL_CMD=$(which "$LINTER_NAME" 2>&1) + VALIDATE_INSTALL_CMD=$(command -v "$LINTER_NAME" 2>&1) ####################### # Load the error code # @@ -1109,7 +1109,7 @@ LintCoffeeFiles() ################################# # Get list of all files to lint # ################################# - # shellcheck disable=SC2207 + # shellcheck disable=SC2207,SC2164 LIST_FILES=($(cd "$GITHUB_WORKSPACE"; find . -type f -name "*.coffee" 2>&1)) ################## @@ -1271,7 +1271,7 @@ LintAnsibleFiles() # Validate we have ansible-lint installed # ########################################### # shellcheck disable=SC2230 - VALIDATE_INSTALL_CMD=$(which "$LINTER_NAME" 2>&1) + VALIDATE_INSTALL_CMD=$(command -v "$LINTER_NAME" 2>&1) ####################### # Load the error code # @@ -1299,7 +1299,7 @@ LintAnsibleFiles() ################################# # Get list of all files to lint # ################################# - # shellcheck disable=SC2164,SC2010 + # shellcheck disable=SC2164,SC2010,SC2207 LIST_FILES=($(cd "$ANSIBLE_DIR"; ls -I vault.yml -I galaxy.yml | grep ".yml" 2>&1)) ################## From d845528ee6d110c7a4ae18c98eedc0f98071ae4a Mon Sep 17 00:00:00 2001 From: Lucas Gravley <29484535+admiralAwkbar@users.noreply.github.com> Date: Wed, 23 Oct 2019 10:17:46 -0500 Subject: [PATCH 2/7] fixed code --- .github/workflows/stack-linter.yml | 56 +++++++----------------------- 1 file changed, 12 insertions(+), 44 deletions(-) diff --git a/.github/workflows/stack-linter.yml b/.github/workflows/stack-linter.yml index 0cc350c3..68901a28 100644 --- a/.github/workflows/stack-linter.yml +++ b/.github/workflows/stack-linter.yml @@ -1,10 +1,9 @@ --- -############################# -############################# -## CI/CT/CD GitHub Actions ## -############################# -############################# -name: Source Linter +############################ +############################ +## Preflight Stack Linter ## +############################ +############################ # # Documentation: @@ -14,7 +13,7 @@ name: Source Linter ############################# # Start the job on all push # ############################# -on: ['push'] +on: ["push"] ############### # Set the Job # @@ -22,7 +21,7 @@ on: ['push'] jobs: build: # Name the Job - name: Source linter + name: Stack linter # Set the agent to run on runs-on: ubuntu-latest ################## @@ -35,39 +34,8 @@ jobs: - name: Checkout Code uses: actions/checkout@master - ##################### - # Install Ruby Libs # - ##################### - - name: Set up Ruby - uses: actions/setup-ruby@master - with: - ruby-version: 2.6.x - - #################### - # Install NPM Libs # - #################### - - name: Setup NPM - uses: actions/setup-node@master - with: - node-version: 10.x - - ################################# - # Install all base dependancies # - ################################# - - name: Install Dependencies - shell: bash - run: ./.automation/install-deps.sh - - ############################################# - # Run the markup and markdown linter script # - ############################################# - - name: Run Markup and Markdown Linter - shell: bash - run: ./.automation/markup-markdown-linter.sh - - ################################### - # Run the scripting linter script # - ################################### - - name: Run Scripting Linter - shell: bash - run: ./.automation/scripting-linter.sh + ################################ + # Run Linter against code base # + ################################ + - name: Lint Code Base + uses: docker://admiralawkbar/super-linter:latest From 5cfc3ac09caff3819e4219dafcd9739529bfc228 Mon Sep 17 00:00:00 2001 From: Lucas Gravley <29484535+admiralAwkbar@users.noreply.github.com> Date: Wed, 23 Oct 2019 10:19:26 -0500 Subject: [PATCH 3/7] fixed code --- lib/entrypoint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/entrypoint.sh b/lib/entrypoint.sh index 1d215cc1..3b7ed71d 100755 --- a/lib/entrypoint.sh +++ b/lib/entrypoint.sh @@ -289,7 +289,7 @@ LintJsonFiles() ################################# # Get list of all files to lint # ################################# - # shellcheck disable=SC2207 + # shellcheck disable=SC2207,SC2164 LIST_FILES=($(cd "$GITHUB_WORKSPACE"; find . -type f -name "*.json" 2>&1)) ################## From 67ca56bf84aee9e42c9a23d48064fbf401a5634c Mon Sep 17 00:00:00 2001 From: Lucas Gravley <29484535+admiralAwkbar@users.noreply.github.com> Date: Wed, 23 Oct 2019 10:23:16 -0500 Subject: [PATCH 4/7] fixed and cleaned folders --- .automation/README.md | 3 - .automation/ansible-linter.sh | 184 ------ .automation/install-ansible-deps.sh | 347 ------------ .automation/install-deps.sh | 353 ------------ .automation/markup-markdown-linter.sh | 527 ------------------ .automation/scripting-linter.sh | 504 ----------------- .../linters/.ansible-lint.yml | 0 .github/linters/.coffee-lint.json | 135 +++++ .../linters/.markdown-lint.yml | 0 .../pylintrc => .github/linters/.python-lint | 0 .../linters/.ruby-lint.yml | 0 .../linters/.yaml-lint.yml | 0 lib/entrypoint.sh | 24 +- 13 files changed, 147 insertions(+), 1930 deletions(-) delete mode 100644 .automation/README.md delete mode 100644 .automation/ansible-linter.sh delete mode 100644 .automation/install-ansible-deps.sh delete mode 100644 .automation/install-deps.sh delete mode 100644 .automation/markup-markdown-linter.sh delete mode 100644 .automation/scripting-linter.sh rename .automation/.ansible-lint => .github/linters/.ansible-lint.yml (100%) create mode 100644 .github/linters/.coffee-lint.json rename .automation/md-linter-rules.yml => .github/linters/.markdown-lint.yml (100%) rename .automation/pylintrc => .github/linters/.python-lint (100%) rename .automation/.rubocop.yml => .github/linters/.ruby-lint.yml (100%) rename .automation/yaml-linter-rules.yml => .github/linters/.yaml-lint.yml (100%) diff --git a/.automation/README.md b/.automation/README.md deleted file mode 100644 index 1c553dbc..00000000 --- a/.automation/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Automation - -This folder holds all scripting and configuration to run **GitHub Actions** that validate the sanity of the source code in this repository. diff --git a/.automation/ansible-linter.sh b/.automation/ansible-linter.sh deleted file mode 100644 index 3621e3f2..00000000 --- a/.automation/ansible-linter.sh +++ /dev/null @@ -1,184 +0,0 @@ -#!/bin/bash - -################################################################################ -################## Ansible Linter @admiralawkbar ############################### -################################################################################ - -########### -# GLOBALS # -########### -BUILD_DIR=$(pwd 2>&1) # Current Build dir -ANSIBLE_LINTER_FILE=".automation/.ansible-lint" # Name of the Linter file -ANSIBLE_DIR="$BUILD_DIR/ansible" # Ansible directory - -############ -# Counters # -############ -ERRORS_FOUND_ANSIBLE=0 # Count of errors found - -################################################################################ -########################## FUNCTIONS BELOW ##################################### -################################################################################ -################################################################################ -#### Function Header ########################################################### -Header() -{ - echo "" - echo "-----------------------------------" - echo "---------- Ansible Linter ---------" - echo "-----------------------------------" - echo "" -} -################################################################################ -#### Function LintAnsibleFiles ################################################# -LintAnsibleFiles() -{ - ################ - # print header # - ################ - echo "" - echo "--------------------------------" - echo "Linting Ansible files..." - echo "--------------------------------" - echo "" - - ########################################## - # Validate we have the linter rules file # - ########################################## - if [ ! -f "$ANSIBLE_LINTER_FILE" ]; then - # Error - echo "ERROR! Failed to find rules file at:[$ANSIBLE_LINTER_FILE]" - exit 1 - fi - - ###################### - # Name of the linter # - ###################### - LINTER_NAME="ansible-lint" - - ########################################### - # Validate we have ansible-lint installed # - ########################################### - # shellcheck disable=SC2230 - VALIDATE_INSTALL_CMD=$(which "$LINTER_NAME" 2>&1) - - ####################### - # Load the error code # - ####################### - ERROR_CODE=$? - - ############################## - # Check the shell for errors # - ############################## - if [ $ERROR_CODE -ne 0 ]; then - # Failed - echo "ERROR! Failed to find $LINTER_NAME in system!" - echo "ERROR:[$VALIDATE_INSTALL_CMD]" - exit 1 - else - # Success - echo "Successfully found binary in system" - echo "Location:[$VALIDATE_INSTALL_CMD]" - fi - - ################################# - # Get list of all files to lint # - ################################# - # shellcheck disable=SC2164,SC2010,SC2207 - LIST_FILES=($(cd "$ANSIBLE_DIR"; ls -I vault.yml -I galaxy.yml | grep ".yml" 2>&1)) - - ################## - # Lint the files # - ################## - for FILE in "${LIST_FILES[@]}" - do - - ####################################### - # Make sure we dont lint node modules # - ####################################### - # if [[ $FILE == *"node_modules"* ]]; then - # # This is a node modules file - # continue - # fi - - #################### - # Get the filename # - #################### - FILE_NAME=$(basename "$ANSIBLE_DIR/$FILE" 2>&1) - - ############## - # File print # - ############## - echo "---------------------------" - echo "File:[$FILE]" - - ################################ - # Lint the file with the rules # - ################################ - LINT_CMD=$("$LINTER_NAME" -v -c "$ANSIBLE_LINTER_FILE" "$ANSIBLE_DIR/$FILE" 2>&1) - - ####################### - # Load the error code # - ####################### - ERROR_CODE=$? - - ############################## - # Check the shell for errors # - ############################## - if [ $ERROR_CODE -ne 0 ]; then - ######### - # Error # - ######### - echo "ERROR! Found errors in [$LINTER_NAME] linter!" - echo "ERROR:[$LINT_CMD]" - # Increment error count - ((ERRORS_FOUND_ANSIBLE++)) - else - ########### - # Success # - ########### - echo " - File:[$FILE_NAME] was linted with [$LINTER_NAME] successfully" - fi - done -} -################################################################################ -#### Function Footer ########################################################### -Footer() -{ - echo "" - echo "---------------------------" - echo "The script has completed" - echo "---------------------------" - echo "ERRORS FOUND in ANSIBLE:[$ERRORS_FOUND_ANSIBLE]" - echo "" - - ############################### - # Exit with 1 if errors found # - ############################### - if [ $ERRORS_FOUND_ANSIBLE -ne 0 ]; then - # Failed exit - echo "Exiting with errors found!" - exit 1 - else - # Successful exit - exit 0 - fi -} -################################################################################ -############################### MAIN ########################################### -################################################################################ - -########## -# Header # -########## -Header - -########################## -# Lint the Ansible files # -########################## -LintAnsibleFiles - -########## -# Footer # -########## -Footer diff --git a/.automation/install-ansible-deps.sh b/.automation/install-ansible-deps.sh deleted file mode 100644 index 96c0877a..00000000 --- a/.automation/install-ansible-deps.sh +++ /dev/null @@ -1,347 +0,0 @@ -#!/bin/bash - -################################################################################ -################## Scripting Language Linter @admiralawkbar #################### -################################################################################ - -########### -# GLOBALS # -########### -APT_PACKAGE_ARRAY=() # Packages to install using APT -GEM_PACKAGE_ARRAY=() # Packages to install using GEM -NPM_PACKAGE_ARRAY=() # Packages to install using NPM -PIP_PACKAGE_ARRAY=( - "ansible-lint==4.0.1") # Packages to install using PIP - -################################################################################ -########################## FUNCTIONS BELOW ##################################### -################################################################################ -################################################################################ -#### Function Header ########################################################### -Header() -{ - echo "" - echo "------------------------------" - echo "---- Install Dependancies ----" - echo "------------------------------" -} -################################################################################ -#### Function InstallAptPackages ############################################### -InstallAptPackages() -{ - ###################################################### - # Convert Array to string for single pass to install # - ###################################################### - INSTALL_PACKAGE_STRING=$(ConvertArray "${APT_PACKAGE_ARRAY[@]}") - - ############################### - # Check the string for length # - ############################### - LENGTH=${#INSTALL_PACKAGE_STRING} - - ############################# - # Skip loop if no variables # - ############################# - if [ "$LENGTH" -le 1 ]; then - echo "" - echo "------------------------------" - echo "No APT package(s) to install... skipping..." - else - ########### - # Headers # - ########### - echo "" - echo "------------------------------" - echo "Installing APT package(s)" - echo "Packages:[$INSTALL_PACKAGE_STRING]" - echo "This could take several moments..." - - #################################### - # Need to install all APT packages # - #################################### - # shellcheck disable=SC2086 - INSTALL_CMD=$(sudo apt-get install $INSTALL_PACKAGE_STRING -y 2>&1) - - ####################### - # Load the error code # - ####################### - ERROR_CODE=$? - - ############################## - # Check the shell for errors # - ############################## - if [ $ERROR_CODE -ne 0 ]; then - # Error - echo "ERROR! Failed to install APT packages!" - echo "ERROR:[$INSTALL_CMD]" - exit 1 - else - # Success - echo "Successfully installed all APT packages" - fi - fi -} -################################################################################ -#### Function InstallPipPackages ############################################### -InstallPipPackages() -{ - ###################################################### - # Convert Array to string for single pass to install # - ###################################################### - INSTALL_PACKAGE_STRING=$(ConvertArray "${PIP_PACKAGE_ARRAY[@]}") - - ############################### - # Check the string for length # - ############################### - LENGTH=${#INSTALL_PACKAGE_STRING} - - ############################# - # Skip loop if no variables # - ############################# - if [ "$LENGTH" -le 1 ]; then - echo "" - echo "------------------------------" - echo "No PIP package(s) to install... skipping..." - else - ########### - # Headers # - ########### - echo "" - echo "------------------------------" - echo "Installing PIP package(s)" - echo "Packages:[$INSTALL_PACKAGE_STRING]" - echo "This could take several moments..." - - #################################### - # Need to install all APT packages # - #################################### - # shellcheck disable=SC2086 - INSTALL_CMD=$(sudo -H pip install $INSTALL_PACKAGE_STRING 2>&1) - - ####################### - # Load the error code # - ####################### - ERROR_CODE=$? - - ############################## - # Check the shell for errors # - ############################## - if [ $ERROR_CODE -ne 0 ]; then - # Error - echo "ERROR! Failed to install PIP packages!" - echo "ERROR:[$INSTALL_CMD]" - exit 1 - else - # Success - echo "Successfully installed all PIP packages" - fi - fi -} -################################################################################ -#### Function InstallGemPackages ############################################### -InstallGemPackages() -{ - ###################################################### - # Convert Array to string for single pass to install # - ###################################################### - INSTALL_PACKAGE_STRING=$(ConvertArray "${GEM_PACKAGE_ARRAY[@]}") - - ############################### - # Check the string for length # - ############################### - LENGTH=${#INSTALL_PACKAGE_STRING} - - ############################# - # Skip loop if no variables # - ############################# - if [ "$LENGTH" -le 1 ]; then - echo "" - echo "------------------------------" - echo "No GEM package(s) to install... skipping..." - else - ########### - # Headers # - ########### - echo "" - echo "------------------------------" - echo "Installing GEM package(s)" - echo "Packages:[$INSTALL_PACKAGE_STRING]" - echo "This could take several moments..." - - #################################### - # Need to install all APT packages # - #################################### - # shellcheck disable=SC2086 - INSTALL_CMD=$(gem install $INSTALL_PACKAGE_STRING 2>&1) - - ####################### - # Load the error code # - ####################### - ERROR_CODE=$? - - ############################## - # Check the shell for errors # - ############################## - if [ $ERROR_CODE -ne 0 ]; then - # Error - echo "ERROR! Failed to install GEM packages!" - echo "ERROR:[$INSTALL_CMD]" - exit 1 - else - # Success - echo "Successfully installed all GEM packages" - fi - fi -} -################################################################################ -#### Function InstallNPMPackages ############################################### -InstallNPMPackages() -{ - ###################################################### - # Convert Array to string for single pass to install # - ###################################################### - INSTALL_PACKAGE_STRING=$(ConvertArray "${NPM_PACKAGE_ARRAY[@]}") - - ############################### - # Check the string for length # - ############################### - LENGTH=${#INSTALL_PACKAGE_STRING} - - ############################# - # Skip loop if no variables # - ############################# - if [ "$LENGTH" -le 1 ]; then - echo "" - echo "------------------------------" - echo "No NPM package(s) to install... skipping..." - else - ########### - # Headers # - ########### - echo "" - echo "------------------------------" - echo "Installing NPM package(s)" - echo "Packages:[$INSTALL_PACKAGE_STRING]" - echo "This could take several moments..." - - #################################### - # Need to install all APT packages # - #################################### - # shellcheck disable=SC2086 - INSTALL_CMD=$(npm -g install $INSTALL_PACKAGE_STRING 2>&1) - - ####################### - # Load the error code # - ####################### - ERROR_CODE=$? - - ############################## - # Check the shell for errors # - ############################## - if [ $ERROR_CODE -ne 0 ]; then - # Error - echo "ERROR! Failed to install NPM packages!" - echo "ERROR:[$INSTALL_CMD]" - exit 1 - else - # Success - echo "Successfully installed all NPM packages" - fi - fi -} -################################################################################ -#### Function ConvertArray ##################################################### -ConvertArray() -{ - ##################### - # Read in the array # - ##################### - ARRAY=("$@") - - ################################################### - # Convert the array into a space seperated string # - ################################################### - STRING=$(IFS=$' '; echo "${ARRAY[*]}" 2>&1) - - ####################### - # Load the error code # - ####################### - ERROR_CODE=$? - - ############################## - # Check the shell for errors # - ############################## - if [ $ERROR_CODE -ne 0 ]; then - # Error - echo "ERROR! Failed to create string!" - echo "ERROR:[$STRING]" - exit 1 - fi - - ########################################## - # Need to remove whitespace on the edges # - ########################################## - CLEANED_STRING=$(echo "$STRING" | xargs 2>&1) - - ####################### - # Load the error code # - ####################### - ERROR_CODE=$? - - ############################## - # Check the shell for errors # - ############################## - if [ $ERROR_CODE -ne 0 ]; then - # Error - echo "ERROR! Failed to clean string!" - echo "ERROR:[$STRING]" - exit 1 - else - ############################################################ - # Echo the cleaned string back to the master function call # - ############################################################ - echo "$CLEANED_STRING" - fi -} -################################################################################ -#### Function Footer ########################################################### -Footer() -{ - echo "" - echo "---------------------------" - echo "The script has completed" - echo "---------------------------" -} -################################################################################ -############################### MAIN ########################################### -################################################################################ - -########## -# Header # -########## -Header - -######################## -# Install APT packages # -######################## -InstallAptPackages - -######################## -# Install PIP packages # -######################## -InstallPipPackages - -######################## -# Install GEM packages # -######################## -InstallGemPackages - -######################## -# Install NPM packages # -######################## -InstallNPMPackages - -########## -# Footer # -########## -Footer diff --git a/.automation/install-deps.sh b/.automation/install-deps.sh deleted file mode 100644 index a582047a..00000000 --- a/.automation/install-deps.sh +++ /dev/null @@ -1,353 +0,0 @@ -#!/bin/bash - -################################################################################ -################## Scripting Language Linter @admiralawkbar #################### -################################################################################ - -########### -# GLOBALS # -########### -APT_PACKAGE_ARRAY=( - "yamllint" - "shellcheck" - "jsonlint" - "pylint" - "libxml2-utils") # Packages to install using APT -GEM_PACKAGE_ARRAY=( - "rubocop") # Packages to install using GEM -NPM_PACKAGE_ARRAY=( - "markdownlint-cli") # Packages to install using NPM -PIP_PACKAGE_ARRAY=() # Packages to install using PIP - -################################################################################ -########################## FUNCTIONS BELOW ##################################### -################################################################################ -################################################################################ -#### Function Header ########################################################### -Header() -{ - echo "" - echo "------------------------------" - echo "---- Install Dependancies ----" - echo "------------------------------" -} -################################################################################ -#### Function InstallAptPackages ############################################### -InstallAptPackages() -{ - ###################################################### - # Convert Array to string for single pass to install # - ###################################################### - INSTALL_PACKAGE_STRING=$(ConvertArray "${APT_PACKAGE_ARRAY[@]}") - - ############################### - # Check the string for length # - ############################### - LENGTH=${#INSTALL_PACKAGE_STRING} - - ############################# - # Skip loop if no variables # - ############################# - if [ "$LENGTH" -le 1 ]; then - echo "" - echo "------------------------------" - echo "No APT package(s) to install... skipping..." - else - ########### - # Headers # - ########### - echo "" - echo "------------------------------" - echo "Installing APT package(s)" - echo "Packages:[$INSTALL_PACKAGE_STRING]" - echo "This could take several moments..." - - #################################### - # Need to install all APT packages # - #################################### - # shellcheck disable=SC2086 - INSTALL_CMD=$(sudo apt-get install $INSTALL_PACKAGE_STRING -y 2>&1) - - ####################### - # Load the error code # - ####################### - ERROR_CODE=$? - - ############################## - # Check the shell for errors # - ############################## - if [ $ERROR_CODE -ne 0 ]; then - # Error - echo "ERROR! Failed to install APT packages!" - echo "ERROR:[$INSTALL_CMD]" - exit 1 - else - # Success - echo "Successfully installed all APT packages" - fi - fi -} -################################################################################ -#### Function InstallPipPackages ############################################### -InstallPipPackages() -{ - ###################################################### - # Convert Array to string for single pass to install # - ###################################################### - INSTALL_PACKAGE_STRING=$(ConvertArray "${PIP_PACKAGE_ARRAY[@]}") - - ############################### - # Check the string for length # - ############################### - LENGTH=${#INSTALL_PACKAGE_STRING} - - ############################# - # Skip loop if no variables # - ############################# - if [ "$LENGTH" -le 1 ]; then - echo "" - echo "------------------------------" - echo "No PIP package(s) to install... skipping..." - else - ########### - # Headers # - ########### - echo "" - echo "------------------------------" - echo "Installing PIP package(s)" - echo "Packages:[$INSTALL_PACKAGE_STRING]" - echo "This could take several moments..." - - #################################### - # Need to install all APT packages # - #################################### - # shellcheck disable=SC2086 - INSTALL_CMD=$(pip install $INSTALL_PACKAGE_STRING 2>&1) - - ####################### - # Load the error code # - ####################### - ERROR_CODE=$? - - ############################## - # Check the shell for errors # - ############################## - if [ $ERROR_CODE -ne 0 ]; then - # Error - echo "ERROR! Failed to install PIP packages!" - echo "ERROR:[$INSTALL_CMD]" - exit 1 - else - # Success - echo "Successfully installed all PIP packages" - fi - fi -} -################################################################################ -#### Function InstallGemPackages ############################################### -InstallGemPackages() -{ - ###################################################### - # Convert Array to string for single pass to install # - ###################################################### - INSTALL_PACKAGE_STRING=$(ConvertArray "${GEM_PACKAGE_ARRAY[@]}") - - ############################### - # Check the string for length # - ############################### - LENGTH=${#INSTALL_PACKAGE_STRING} - - ############################# - # Skip loop if no variables # - ############################# - if [ "$LENGTH" -le 1 ]; then - echo "" - echo "------------------------------" - echo "No GEM package(s) to install... skipping..." - else - ########### - # Headers # - ########### - echo "" - echo "------------------------------" - echo "Installing GEM package(s)" - echo "Packages:[$INSTALL_PACKAGE_STRING]" - echo "This could take several moments..." - - #################################### - # Need to install all APT packages # - #################################### - # shellcheck disable=SC2086 - INSTALL_CMD=$(gem install $INSTALL_PACKAGE_STRING 2>&1) - - ####################### - # Load the error code # - ####################### - ERROR_CODE=$? - - ############################## - # Check the shell for errors # - ############################## - if [ $ERROR_CODE -ne 0 ]; then - # Error - echo "ERROR! Failed to install GEM packages!" - echo "ERROR:[$INSTALL_CMD]" - exit 1 - else - # Success - echo "Successfully installed all GEM packages" - fi - fi -} -################################################################################ -#### Function InstallNPMPackages ############################################### -InstallNPMPackages() -{ - ###################################################### - # Convert Array to string for single pass to install # - ###################################################### - INSTALL_PACKAGE_STRING=$(ConvertArray "${NPM_PACKAGE_ARRAY[@]}") - - ############################### - # Check the string for length # - ############################### - LENGTH=${#INSTALL_PACKAGE_STRING} - - ############################# - # Skip loop if no variables # - ############################# - if [ "$LENGTH" -le 1 ]; then - echo "" - echo "------------------------------" - echo "No NPM package(s) to install... skipping..." - else - ########### - # Headers # - ########### - echo "" - echo "------------------------------" - echo "Installing NPM package(s)" - echo "Packages:[$INSTALL_PACKAGE_STRING]" - echo "This could take several moments..." - - #################################### - # Need to install all APT packages # - #################################### - # shellcheck disable=SC2086 - INSTALL_CMD=$(npm -g install $INSTALL_PACKAGE_STRING 2>&1) - - ####################### - # Load the error code # - ####################### - ERROR_CODE=$? - - ############################## - # Check the shell for errors # - ############################## - if [ $ERROR_CODE -ne 0 ]; then - # Error - echo "ERROR! Failed to install NPM packages!" - echo "ERROR:[$INSTALL_CMD]" - exit 1 - else - # Success - echo "Successfully installed all NPM packages" - fi - fi -} -################################################################################ -#### Function ConvertArray ##################################################### -ConvertArray() -{ - ##################### - # Read in the array # - ##################### - ARRAY=("$@") - - ################################################### - # Convert the array into a space seperated string # - ################################################### - STRING=$(IFS=$' '; echo "${ARRAY[*]}" 2>&1) - - ####################### - # Load the error code # - ####################### - ERROR_CODE=$? - - ############################## - # Check the shell for errors # - ############################## - if [ $ERROR_CODE -ne 0 ]; then - # Error - echo "ERROR! Failed to create string!" - echo "ERROR:[$STRING]" - exit 1 - fi - - ########################################## - # Need to remove whitespace on the edges # - ########################################## - CLEANED_STRING=$(echo "$STRING" | xargs 2>&1) - - ####################### - # Load the error code # - ####################### - ERROR_CODE=$? - - ############################## - # Check the shell for errors # - ############################## - if [ $ERROR_CODE -ne 0 ]; then - # Error - echo "ERROR! Failed to clean string!" - echo "ERROR:[$STRING]" - exit 1 - else - ############################################################ - # Echo the cleaned string back to the master function call # - ############################################################ - echo "$CLEANED_STRING" - fi -} -################################################################################ -#### Function Footer ########################################################### -Footer() -{ - echo "" - echo "---------------------------" - echo "The script has completed" - echo "---------------------------" -} -################################################################################ -############################### MAIN ########################################### -################################################################################ - -########## -# Header # -########## -Header - -######################## -# Install APT packages # -######################## -InstallAptPackages - -######################## -# Install PIP packages # -######################## -InstallPipPackages - -######################## -# Install GEM packages # -######################## -InstallGemPackages - -######################## -# Install NPM packages # -######################## -InstallNPMPackages - -########## -# Footer # -########## -Footer diff --git a/.automation/markup-markdown-linter.sh b/.automation/markup-markdown-linter.sh deleted file mode 100644 index fbb27cc1..00000000 --- a/.automation/markup-markdown-linter.sh +++ /dev/null @@ -1,527 +0,0 @@ -#!/bin/bash - -################################################################################ -########### Markup and Markdown Language Linter @AdmiralAwkbar ################# -################################################################################ - -########### -# GLOBALS # -########### -YAML_LINTER_RULES='.automation/yaml-linter-rules.yml' # Path to the yaml lint rules -MD_LINTER_RULES='.automation/md-linter-rules.yml' # Path to the markdown lint rules - -############ -# Counters # -############ -ERRORS_FOUND_YML=0 # Count of errors found -ERRORS_FOUND_JSON=0 # Count of errors found -ERRORS_FOUND_XML=0 # Count of errors found -ERRORS_FOUND_MD=0 # Count of errors found - -################################################################################ -########################## FUNCTIONS BELOW ##################################### -################################################################################ -################################################################################ -#### Function Header ########################################################### -Header() -{ - echo "" - echo "---------------------------------------------" - echo "---- Markup and Markdown Language Linter ----" - echo "---------------------------------------------" - echo "" -} -################################################################################ -#### Function GetLinterRules ################################################### -GetLinterRules() -{ - # Need to validate the rules files exist - - ##################################### - # Validate we have the linter rules # - ##################################### - if [ ! -f "$YAML_LINTER_RULES" ]; then - echo "ERROR! Failed to find:[$YAML_LINTER_RULES] in root of code base!" - exit 1 - fi - - ##################################### - # Validate we have the linter rules # - ##################################### - if [ ! -f "$MD_LINTER_RULES" ]; then - echo "ERROR! Failed to find:[$MD_LINTER_RULES] in root of code base!" - exit 1 - fi -} -################################################################################ -#### Function LintJsonFiles #################################################### -LintJsonFiles() -{ - ################ - # print header # - ################ - echo "" - echo "--------------------------------" - echo "Linting JSON files..." - echo "--------------------------------" - echo "" - - ###################### - # Name of the linter # - ###################### - LINTER_NAME="jsonlint-php" - - ####################################### - # Validate we have yamllint installed # - ####################################### - # shellcheck disable=SC2230 - VALIDATE_INSTALL_CMD=$(which "$LINTER_NAME" 2>&1) - - ####################### - # Load the error code # - ####################### - ERROR_CODE=$? - - ############################## - # Check the shell for errors # - ############################## - if [ $ERROR_CODE -ne 0 ]; then - # Failed - echo "ERROR! Failed to find [$LINTER_NAME] in system!" - echo "ERROR:[$VALIDATE_INSTALL_CMD]" - exit 1 - else - # Success - echo "Successfully found binary in system" - echo "Location:[$VALIDATE_INSTALL_CMD]" - fi - - ################################# - # Get list of all files to lint # - ################################# - # shellcheck disable=SC2207 - LIST_FILES=($(find . -type f -name "*.json" 2>&1)) - - ################## - # Lint the files # - ################## - for FILE in "${LIST_FILES[@]}" - do - ##################### - # Get the file name # - ##################### - FILE_NAME=$(basename "$FILE" 2>&1) - - ####################################### - # Make sure we dont lint node modules # - ####################################### - if [[ $FILE == *"node_modules"* ]]; then - # This is a node modules file - continue - fi - - ############## - # File print # - ############## - echo "---------------------------" - echo "File:[$FILE]" - - ################################ - # Lint the file with the rules # - ################################ - LINT_CMD=$("$LINTER_NAME" "$FILE" 2>&1) - - ####################### - # Load the error code # - ####################### - ERROR_CODE=$? - - ############################## - # Check the shell for errors # - ############################## - if [ $ERROR_CODE -ne 0 ]; then - ######### - # Error # - ######### - echo "ERROR! Found errors in [$LINTER_NAME] linter!" - echo "ERROR:[$LINT_CMD]" - # Increment error count - ((ERRORS_FOUND_JSON++)) - else - ########### - # Success # - ########### - echo " - File:[$FILE_NAME] was linted with [$LINTER_NAME] successfully" - fi - done -} -################################################################################ -#### Function LintYmlFiles ##################################################### -LintYmlFiles() -{ - ################ - # print header # - ################ - echo "" - echo "--------------------------------" - echo "Linting YAML files..." - echo "--------------------------------" - echo "" - - ###################### - # Name of the linter # - ###################### - LINTER_NAME="yamllint" - - ####################################### - # Validate we have yamllint installed # - ####################################### - # shellcheck disable=SC2230 - VALIDATE_INSTALL_CMD=$(which "$LINTER_NAME" 2>&1) - - ####################### - # Load the error code # - ####################### - ERROR_CODE=$? - - ############################## - # Check the shell for errors # - ############################## - if [ $ERROR_CODE -ne 0 ]; then - # Failed - echo "ERROR! Failed to find [$LINTER_NAME] in system!" - echo "ERROR:[$VALIDATE_INSTALL_CMD]" - exit 1 - else - # Success - echo "Successfully found binary in system" - echo "Location:[$VALIDATE_INSTALL_CMD]" - fi - - ################################# - # Get list of all files to lint # - ################################# - # shellcheck disable=SC2207 - LIST_FILES=($(find . -type f \( -name "*.yml" -or -name "*.yaml" \) 2>&1)) - - ################## - # Lint the files # - ################## - for FILE in "${LIST_FILES[@]}" - do - ##################### - # Get the file name # - ##################### - FILE_NAME=$(basename "$FILE" 2>&1) - - ####################################### - # Make sure we dont lint node modules # - ####################################### - # if [[ $FILE == *"node_modules"* ]]; then - # # This is a node modules file - # continue - # fi - - ############## - # File print # - ############## - echo "---------------------------" - echo "File:[$FILE]" - - ################################ - # Lint the file with the rules # - ################################ - LINT_CMD=$("$LINTER_NAME" "$YAML_LINTER_RULES" "$FILE" 2>&1) - - ####################### - # Load the error code # - ####################### - ERROR_CODE=$? - - ############################## - # Check the shell for errors # - ############################## - if [ $ERROR_CODE -ne 0 ]; then - ######### - # Error # - ######### - echo "ERROR! Found errors in [$LINTER_NAME] linter!" - echo "ERROR:[$LINT_CMD]" - # Increment error count - ((ERRORS_FOUND_YML++)) - else - ########### - # Success # - ########### - echo " - File:[$FILE_NAME] was linted with [$LINTER_NAME] successfully" - fi - done -} -################################################################################ -#### Function LintXmlFiles ##################################################### -LintXmlFiles() -{ - ################ - # print header # - ################ - echo "" - echo "--------------------------------" - echo "Linting XML files..." - echo "--------------------------------" - echo "" - - ###################### - # Name of the linter # - ###################### - LINTER_NAME="xmllint" - - ####################################### - # Validate we have yamllint installed # - ####################################### - # shellcheck disable=SC2230 - VALIDATE_INSTALL_CMD=$(which "$LINTER_NAME" 2>&1) - - ####################### - # Load the error code # - ####################### - ERROR_CODE=$? - - ############################## - # Check the shell for errors # - ############################## - if [ $ERROR_CODE -ne 0 ]; then - # Failed - echo "ERROR! Failed to find [$LINTER_NAME] in system!" - echo "ERROR:[$VALIDATE_INSTALL_CMD]" - exit 1 - else - # Success - echo "Successfully found binary in system" - echo "Location:[$VALIDATE_INSTALL_CMD]" - fi - - ################################# - # Get list of all files to lint # - ################################# - # shellcheck disable=SC2207 - LIST_FILES=($(find . -type f -name "*.xml" 2>&1)) - - ################## - # Lint the files # - ################## - for FILE in "${LIST_FILES[@]}" - do - ##################### - # Get the file name # - ##################### - FILE_NAME=$(basename "$FILE" 2>&1) - - ####################################### - # Make sure we dont lint node modules # - ####################################### - # if [[ $FILE == *"node_modules"* ]]; then - # # This is a node modules file - # continue - # fi - - ############## - # File print # - ############## - echo "---------------------------" - echo "File:[$FILE]" - - ################################ - # Lint the file with the rules # - ################################ - LINT_CMD=$("$LINTER_NAME" "$FILE" 2>&1) - - ####################### - # Load the error code # - ####################### - ERROR_CODE=$? - - ############################## - # Check the shell for errors # - ############################## - if [ $ERROR_CODE -ne 0 ]; then - ######### - # Error # - ######### - echo "ERROR! Found errors in [$LINTER_NAME] linter!" - echo "ERROR:[$LINT_CMD]" - # Increment error count - ((ERRORS_FOUND_XML++)) - else - ########### - # Success # - ########### - echo " - File:[$FILE_NAME] was linted with [$LINTER_NAME] successfully" - fi - done -} -################################################################################ -#### Function LintMdFiles ###################################################### -LintMdFiles() -{ - ################ - # print header # - ################ - echo "" - echo "--------------------------------" - echo "Linting Markdown files..." - echo "--------------------------------" - echo "" - - ###################### - # Name of the linter # - ###################### - LINTER_NAME="markdownlint" - - ####################################### - # Validate we have yamllint installed # - ####################################### - # shellcheck disable=SC2230 - VALIDATE_INSTALL_CMD=$(which "$LINTER_NAME" 2>&1) - - ####################### - # Load the error code # - ####################### - ERROR_CODE=$? - - ############################## - # Check the shell for errors # - ############################## - if [ $ERROR_CODE -ne 0 ]; then - # Failed - echo "ERROR! Failed to find [$LINTER_NAME] in system!" - echo "ERROR:[$VALIDATE_INSTALL_CMD]" - exit 1 - else - # Success - echo "Successfully found binary in system" - echo "Location:[$VALIDATE_INSTALL_CMD]" - fi - - ################################# - # Get list of all files to lint # - ################################# - # shellcheck disable=SC2207 - LIST_FILES=($(find . -type f -name "*.md" 2>&1)) - - ################## - # Lint the files # - ################## - for FILE in "${LIST_FILES[@]}" - do - ##################### - # Get the file name # - ##################### - FILE_NAME=$(basename "$FILE" 2>&1) - - ####################################### - # Make sure we dont lint node modules # - ####################################### - # if [[ $FILE == *"node_modules"* ]]; then - # # This is a node modules file - # continue - # fi - - ############## - # File print # - ############## - echo "---------------------------" - echo "File:[$FILE]" - - ################################ - # Lint the file with the rules # - ################################ - LINT_CMD=$("$LINTER_NAME" -c "$MD_LINTER_RULES" "$FILE" 2>&1) - - ####################### - # Load the error code # - ####################### - ERROR_CODE=$? - - ############################## - # Check the shell for errors # - ############################## - if [ $ERROR_CODE -ne 0 ]; then - ######### - # Error # - ######### - echo "ERROR! Found errors in [$LINTER_NAME] linter!" - echo "ERROR:[$LINT_CMD]" - # Increment error count - ((ERRORS_FOUND_MD++)) - else - ########### - # Success # - ########### - echo " - File:[$FILE_NAME] was linted with [$LINTER_NAME] successfully" - fi - done -} -################################################################################ -#### Function Footer ########################################################### -Footer() -{ - echo "" - echo "---------------------------" - echo "The script has completed" - echo "---------------------------" - echo "ERRORS FOUND in YAML:[$ERRORS_FOUND_YML]" - echo "ERRORS FOUND in JSON:[$ERRORS_FOUND_JSON]" - echo "ERRORS FOUND in XML:[$ERRORS_FOUND_XML]" - echo "ERRORS FOUND IN MD:[$ERRORS_FOUND_MD]" - echo "" - - ############################### - # Exit with 1 if errors found # - ############################### - if [ $ERRORS_FOUND_YML -ne 0 ] || [ $ERRORS_FOUND_JSON -ne 0 ] || [ $ERRORS_FOUND_XML -ne 0 ] || [ $ERRORS_FOUND_MD -ne 0 ]; then - # Failed exit - echo "Exiting with errors found!" - exit 1 - else - # Successful exit - exit 0 - fi -} -################################################################################ -############################### MAIN ########################################### -################################################################################ - -########## -# Header # -########## -Header - -######################## -# Get the linter rules # -######################## -GetLinterRules - -###################### -# Lint the Yml Files # -###################### -LintYmlFiles - -####################### -# Lint the json files # -####################### -LintJsonFiles - -###################### -# Lint the XML Files # -###################### -LintXmlFiles - -########################### -# Lint the Markdown Files # -########################### -LintMdFiles - -########## -# Footer # -########## -Footer diff --git a/.automation/scripting-linter.sh b/.automation/scripting-linter.sh deleted file mode 100644 index 4f0b50cc..00000000 --- a/.automation/scripting-linter.sh +++ /dev/null @@ -1,504 +0,0 @@ -#!/bin/bash - -################################################################################ -################## Scripting Language Linter @admiralawkbar #################### -################################################################################ - -########### -# GLOBALS # -########### -PYTHON_LINTER_FILE=".automation/pylintrc" # Name of the Linter file -RUBY_LINTER_FILE=".automation/.rubocop.yml" # Name of the Linter file - -############ -# Counters # -############ -ERRORS_FOUND_BASH=0 # Count of errors found -ERRORS_FOUND_PERL=0 # Count of errors found -ERRORS_FOUND_RUBY=0 # Count of errors found -ERRORS_FOUND_PYTHON=0 # Count of errors found - -################################################################################ -########################## FUNCTIONS BELOW ##################################### -################################################################################ -################################################################################ -#### Function Header ########################################################### -Header() -{ - echo "" - echo "-----------------------------------" - echo "---- Scripting Language Linter ----" - echo "-----------------------------------" - echo "" -} -################################################################################ -#### Function LintBashFiles #################################################### -LintBashFiles() -{ - ################ - # print header # - ################ - echo "" - echo "--------------------------------" - echo "Linting Bash files..." - echo "--------------------------------" - echo "" - - ###################### - # Name of the linter # - ###################### - LINTER_NAME="shellcheck" - - ######################################### - # Validate we have shellcheck installed # - ######################################### - # shellcheck disable=SC2230 - VALIDATE_INSTALL_CMD=$(which "$LINTER_NAME" 2>&1) - - ####################### - # Load the error code # - ####################### - ERROR_CODE=$? - - ############################## - # Check the shell for errors # - ############################## - if [ $ERROR_CODE -ne 0 ]; then - # Failed - echo "ERROR! Failed to find $LINTER_NAME in system!" - echo "ERROR:[$VALIDATE_INSTALL_CMD]" - exit 1 - else - # Success - echo "Successfully found binary in system" - echo "Location:[$VALIDATE_INSTALL_CMD]" - fi - - ################################# - # Get list of all files to lint # - ################################# - # shellcheck disable=SC2207 - LIST_FILES=($(find . -type f -name "*.sh" 2>&1)) - - ################## - # Lint the files # - ################## - for FILE in "${LIST_FILES[@]}" - do - - ####################################### - # Make sure we dont lint node modules # - ####################################### - # if [[ $FILE == *"node_modules"* ]]; then - # # This is a node modules file - # continue - # fi - - #################### - # Get the filename # - #################### - FILE_NAME=$(basename "$FILE" 2>&1) - - ############## - # File print # - ############## - echo "---------------------------" - echo "File:[$FILE]" - - ################################ - # Lint the file with the rules # - ################################ - LINT_CMD=$("$LINTER_NAME" "$FILE" 2>&1) - - ####################### - # Load the error code # - ####################### - ERROR_CODE=$? - - ############################## - # Check the shell for errors # - ############################## - if [ $ERROR_CODE -ne 0 ]; then - ######### - # Error # - ######### - echo "ERROR! Found errors in [$LINTER_NAME] linter!" - echo "ERROR:[$LINT_CMD]" - # Increment error count - ((ERRORS_FOUND_BASH++)) - else - ########### - # Success # - ########### - echo " - File:[$FILE_NAME] was linted with [$LINTER_NAME] successfully" - fi - done -} -################################################################################ -#### Function LintPythonFiles ################################################## -LintPythonFiles() -{ - ################ - # print header # - ################ - echo "" - echo "--------------------------------" - echo "Linting Python files..." - echo "--------------------------------" - echo "" - - ###################### - # Name of the linter # - ###################### - LINTER_NAME="pylint" - - ##################################### - # Validate we have pylint installed # - ##################################### - # shellcheck disable=SC2230 - VALIDATE_INSTALL_CMD=$(which "$LINTER_NAME" 2>&1) - - ####################### - # Load the error code # - ####################### - ERROR_CODE=$? - - ############################## - # Check the shell for errors # - ############################## - if [ $ERROR_CODE -ne 0 ]; then - # Failed - echo "ERROR! Failed to find $LINTER_NAME in system!" - echo "ERROR:[$VALIDATE_INSTALL_CMD]" - exit 1 - else - # Success - echo "Successfully found binary in system" - echo "Location:[$VALIDATE_INSTALL_CMD]" - fi - - ################################# - # Get list of all files to lint # - ################################# - # shellcheck disable=SC2207 - LIST_FILES=($(find . -type f -name "*.py" 2>&1)) - - ################## - # Lint the files # - ################## - for FILE in "${LIST_FILES[@]}" - do - - ####################################### - # Make sure we dont lint node modules # - ####################################### - # if [[ $FILE == *"node_modules"* ]]; then - # # This is a node modules file - # continue - # fi - - #################### - # Get the filename # - #################### - FILE_NAME=$(basename "$FILE" 2>&1) - - ############## - # File print # - ############## - echo "---------------------------" - echo "File:[$FILE]" - - ################################ - # Lint the file with the rules # - ################################ - LINT_CMD=$("$LINTER_NAME" --rcfile "$PYTHON_LINTER_FILE" -E "$FILE" 2>&1) - - ####################### - # Load the error code # - ####################### - ERROR_CODE=$? - - ############################## - # Check the shell for errors # - ############################## - if [ $ERROR_CODE -ne 0 ]; then - ######### - # Error # - ######### - echo "ERROR! Found errors in [$LINTER_NAME] linter!" - echo "ERROR:[$LINT_CMD]" - # Increment error count - ((ERRORS_FOUND_PYTHON++)) - else - ########### - # Success # - ########### - echo " - File:[$FILE_NAME] was linted with [$LINTER_NAME] successfully" - fi - done -} -################################################################################ -#### Function LintPerlFiles #################################################### -LintPerlFiles() -{ - ################ - # print header # - ################ - echo "" - echo "--------------------------------" - echo "Linting Perl files..." - echo "--------------------------------" - echo "" - - ###################### - # Name of the linter # - ###################### - LINTER_NAME="perl" - - ################################### - # Validate we have perl installed # - ################################### - # shellcheck disable=SC2230 - VALIDATE_INSTALL_CMD=$(which "$LINTER_NAME" 2>&1) - - ####################### - # Load the error code # - ####################### - ERROR_CODE=$? - - ############################## - # Check the shell for errors # - ############################## - if [ $ERROR_CODE -ne 0 ]; then - # Failed - echo "ERROR! Failed to find $LINTER_NAME in system!" - echo "ERROR:[$VALIDATE_INSTALL_CMD]" - exit 1 - else - # Success - echo "Successfully found binary in system" - echo "Location:[$VALIDATE_INSTALL_CMD]" - fi - - ################################# - # Get list of all files to lint # - ################################# - # shellcheck disable=SC2207 - LIST_FILES=($(find . -type f -name "*.pl" 2>&1)) - - ################## - # Lint the files # - ################## - for FILE in "${LIST_FILES[@]}" - do - - ####################################### - # Make sure we dont lint node modules # - ####################################### - # if [[ $FILE == *"node_modules"* ]]; then - # # This is a node modules file - # continue - # fi - - #################### - # Get the filename # - #################### - FILE_NAME=$(basename "$FILE" 2>&1) - - ############## - # File print # - ############## - echo "---------------------------" - echo "File:[$FILE]" - - ################################ - # Lint the file with the rules # - ################################ - LINT_CMD=$("$LINTER_NAME" -Mstrict -cw "$FILE" 2>&1) - - ####################### - # Load the error code # - ####################### - ERROR_CODE=$? - - ############################## - # Check the shell for errors # - ############################## - if [ $ERROR_CODE -ne 0 ]; then - ######### - # Error # - ######### - echo "ERROR! Found errors in [$LINTER_NAME] linter!" - echo "ERROR:[$LINT_CMD]" - # Increment error count - ((ERRORS_FOUND_PERL++)) - else - ########### - # Success # - ########### - echo " - File:[$FILE_NAME] was linted with [$LINTER_NAME] successfully" - fi - done -} -################################################################################ -#### Function LintRubyFiles #################################################### -LintRubyFiles() -{ - ################ - # print header # - ################ - echo "" - echo "--------------------------------" - echo "Linting Ruby files..." - echo "--------------------------------" - echo "" - - ###################### - # Name of the linter # - ###################### - LINTER_NAME="rubocop" - - ################################### - # Validate we have perl installed # - ################################### - # shellcheck disable=SC2230 - VALIDATE_INSTALL_CMD=$(which "$LINTER_NAME" 2>&1) - - ####################### - # Load the error code # - ####################### - ERROR_CODE=$? - - ############################## - # Check the shell for errors # - ############################## - if [ $ERROR_CODE -ne 0 ]; then - # Failed - echo "ERROR! Failed to find $LINTER_NAME in system!" - echo "ERROR:[$VALIDATE_INSTALL_CMD]" - exit 1 - else - # Success - echo "Successfully found binary in system" - echo "Location:[$VALIDATE_INSTALL_CMD]" - fi - - ################################# - # Get list of all files to lint # - ################################# - # shellcheck disable=SC2207 - LIST_FILES=($(find . -type f -name "*.rb" 2>&1)) - - ################## - # Lint the files # - ################## - for FILE in "${LIST_FILES[@]}" - do - - ####################################### - # Make sure we dont lint node modules # - ####################################### - # if [[ $FILE == *"node_modules"* ]]; then - # # This is a node modules file - # continue - # fi - - #################### - # Get the filename # - #################### - FILE_NAME=$(basename "$FILE" 2>&1) - - ############## - # File print # - ############## - echo "---------------------------" - echo "File:[$FILE]" - - ################################ - # Lint the file with the rules # - ################################ - LINT_CMD=$("$LINTER_NAME" -c "$RUBY_LINTER_FILE" "$FILE" 2>&1) - - ####################### - # Load the error code # - ####################### - ERROR_CODE=$? - - ############################## - # Check the shell for errors # - ############################## - if [ $ERROR_CODE -ne 0 ]; then - ######### - # Error # - ######### - echo "ERROR! Found errors in [$LINTER_NAME] linter!" - echo "ERROR:[$LINT_CMD]" - # Increment error count - ((ERRORS_FOUND_RUBY++)) - else - ########### - # Success # - ########### - echo " - File:[$FILE_NAME] was linted with [$LINTER_NAME] successfully" - fi - done -} -################################################################################ -#### Function Footer ########################################################### -Footer() -{ - echo "" - echo "---------------------------" - echo "The script has completed" - echo "---------------------------" - echo "ERRORS FOUND in BASH:[$ERRORS_FOUND_BASH]" - echo "ERRORS FOUND in PERL:[$ERRORS_FOUND_PERL]" - echo "ERRORS FOUND in PYTHON:[$ERRORS_FOUND_PYTHON]" - echo "ERRORS FOUND in RUBY:[$ERRORS_FOUND_RUBY]" - echo "" - - ############################### - # Exit with 1 if errors found # - ############################### - if [ $ERRORS_FOUND_BASH -ne 0 ] || [ $ERRORS_FOUND_PERL -ne 0 ] || [ $ERRORS_FOUND_PYTHON -ne 0 ] || [ $ERRORS_FOUND_RUBY -ne 0 ]; then - # Failed exit - echo "Exiting with errors found!" - exit 1 - else - # Successful exit - exit 0 - fi -} -################################################################################ -############################### MAIN ########################################### -################################################################################ - -########## -# Header # -########## -Header - -####################### -# Lint the bash files # -####################### -LintBashFiles - -######################### -# Lint the python files # -######################### -LintPythonFiles - -####################### -# Lint the perl files # -####################### -LintPerlFiles - -####################### -# Lint the ruby files # -####################### -LintRubyFiles - -########## -# Footer # -########## -Footer diff --git a/.automation/.ansible-lint b/.github/linters/.ansible-lint.yml similarity index 100% rename from .automation/.ansible-lint rename to .github/linters/.ansible-lint.yml diff --git a/.github/linters/.coffee-lint.json b/.github/linters/.coffee-lint.json new file mode 100644 index 00000000..053b20dc --- /dev/null +++ b/.github/linters/.coffee-lint.json @@ -0,0 +1,135 @@ +{ + "arrow_spacing": { + "level": "ignore" + }, + "braces_spacing": { + "level": "ignore", + "spaces": 0, + "empty_object_spaces": 0 + }, + "camel_case_classes": { + "level": "error" + }, + "coffeescript_error": { + "level": "error" + }, + "colon_assignment_spacing": { + "level": "ignore", + "spacing": { + "left": 0, + "right": 0 + } + }, + "cyclomatic_complexity": { + "level": "ignore", + "value": 10 + }, + "duplicate_key": { + "level": "error" + }, + "empty_constructor_needs_parens": { + "level": "ignore" + }, + "ensure_comprehensions": { + "level": "warn" + }, + "eol_last": { + "level": "ignore" + }, + "indentation": { + "value": 2, + "level": "warn" + }, + "line_endings": { + "level": "ignore", + "value": "unix" + }, + "max_line_length": { + "value": 80, + "level": "ignore", + "limitComments": true + }, + "missing_fat_arrows": { + "level": "ignore", + "is_strict": false + }, + "newlines_after_classes": { + "value": 3, + "level": "ignore" + }, + "no_backticks": { + "level": "error" + }, + "no_debugger": { + "level": "warn", + "console": false + }, + "no_empty_functions": { + "level": "ignore" + }, + "no_empty_param_list": { + "level": "ignore" + }, + "no_implicit_braces": { + "level": "ignore", + "strict": true + }, + "no_implicit_parens": { + "level": "ignore", + "strict": true + }, + "no_interpolation_in_single_quotes": { + "level": "ignore" + }, + "no_nested_string_interpolation": { + "level": "warn" + }, + "no_plusplus": { + "level": "ignore" + }, + "no_private_function_fat_arrows": { + "level": "warn" + }, + "no_stand_alone_at": { + "level": "ignore" + }, + "no_tabs": { + "level": "error" + }, + "no_this": { + "level": "ignore" + }, + "no_throwing_strings": { + "level": "error" + }, + "no_trailing_semicolons": { + "level": "error" + }, + "no_trailing_whitespace": { + "level": "ignore", + "allowed_in_comments": false, + "allowed_in_empty_lines": true + }, + "no_unnecessary_double_quotes": { + "level": "ignore" + }, + "no_unnecessary_fat_arrows": { + "level": "warn" + }, + "non_empty_constructor_needs_parens": { + "level": "ignore" + }, + "prefer_english_operator": { + "level": "ignore", + "doubleNotLevel": "ignore" + }, + "space_operators": { + "level": "ignore" + }, + "spacing_after_comma": { + "level": "ignore" + }, + "transform_messes_up_line_numbers": { + "level": "warn" + } +} diff --git a/.automation/md-linter-rules.yml b/.github/linters/.markdown-lint.yml similarity index 100% rename from .automation/md-linter-rules.yml rename to .github/linters/.markdown-lint.yml diff --git a/.automation/pylintrc b/.github/linters/.python-lint similarity index 100% rename from .automation/pylintrc rename to .github/linters/.python-lint diff --git a/.automation/.rubocop.yml b/.github/linters/.ruby-lint.yml similarity index 100% rename from .automation/.rubocop.yml rename to .github/linters/.ruby-lint.yml diff --git a/.automation/yaml-linter-rules.yml b/.github/linters/.yaml-lint.yml similarity index 100% rename from .automation/yaml-linter-rules.yml rename to .github/linters/.yaml-lint.yml diff --git a/lib/entrypoint.sh b/lib/entrypoint.sh index 3b7ed71d..ae0d2bce 100755 --- a/lib/entrypoint.sh +++ b/lib/entrypoint.sh @@ -78,13 +78,13 @@ GetLinterRules() ##################################### # Validate we have the linter rules # ##################################### - if [ -f "$GITHUB_WORKSPACE/.github/$YAML_FILE_NAME" ]; then + if [ -f "$GITHUB_WORKSPACE/.github/linters/$YAML_FILE_NAME" ]; then echo "User provided file:[$YAML_FILE_NAME], setting rules file..." #################################### # Move users into default location # #################################### - MV_CMD=$(mv "$GITHUB_WORKSPACE/.github/$YAML_FILE_NAME" "$YAML_LINTER_RULES" 2>&1) + MV_CMD=$(mv "$GITHUB_WORKSPACE/.github/linters/$YAML_FILE_NAME" "$YAML_LINTER_RULES" 2>&1) ################### # Load Error code # @@ -106,13 +106,13 @@ GetLinterRules() ##################################### # Validate we have the linter rules # ##################################### - if [ -f "$GITHUB_WORKSPACE/.github/$MD_FILE_NAME" ]; then + if [ -f "$GITHUB_WORKSPACE/.github/linters/$MD_FILE_NAME" ]; then echo "User provided file:[$MD_FILE_NAME], setting rules file..." #################################### # Move users into default location # #################################### - MV_CMD=$(mv "$GITHUB_WORKSPACE/.github/$MD_FILE_NAME" "$MD_LINTER_RULES" 2>&1) + MV_CMD=$(mv "$GITHUB_WORKSPACE/.github/linters/$MD_FILE_NAME" "$MD_LINTER_RULES" 2>&1) ################### # Load Error code # @@ -134,13 +134,13 @@ GetLinterRules() ##################################### # Validate we have the linter rules # ##################################### - if [ -f "$GITHUB_WORKSPACE/.github/$PYTHON_FILE_NAME" ]; then + if [ -f "$GITHUB_WORKSPACE/.github/linters/$PYTHON_FILE_NAME" ]; then echo "User provided file:[$PYTHON_FILE_NAME], setting rules file..." #################################### # Move users into default location # #################################### - MV_CMD=$(mv "$GITHUB_WORKSPACE/.github/$PYTHON_FILE_NAME" "$PYTHON_LINTER_RULES" 2>&1) + MV_CMD=$(mv "$GITHUB_WORKSPACE/.github/linters/$PYTHON_FILE_NAME" "$PYTHON_LINTER_RULES" 2>&1) ################### # Load Error code # @@ -162,13 +162,13 @@ GetLinterRules() ##################################### # Validate we have the linter rules # ##################################### - if [ -f "$GITHUB_WORKSPACE/.github/$RUBY_FILE_NAME" ]; then + if [ -f "$GITHUB_WORKSPACE/.github/linters/$RUBY_FILE_NAME" ]; then echo "User provided file:[$RUBY_FILE_NAME], setting rules file..." #################################### # Move users into default location # #################################### - MV_CMD=$(mv "$GITHUB_WORKSPACE/.github/$RUBY_FILE_NAME" "$RUBY_LINTER_RULES" 2>&1) + MV_CMD=$(mv "$GITHUB_WORKSPACE/.github/linters/$RUBY_FILE_NAME" "$RUBY_LINTER_RULES" 2>&1) ################### # Load Error code # @@ -190,13 +190,13 @@ GetLinterRules() ##################################### # Validate we have the linter rules # ##################################### - if [ -f "$GITHUB_WORKSPACE/.github/$COFFEE_FILE_NAME" ]; then + if [ -f "$GITHUB_WORKSPACE/.github/linters/$COFFEE_FILE_NAME" ]; then echo "User provided file:[$COFFEE_FILE_NAME], setting rules file..." #################################### # Move users into default location # #################################### - MV_CMD=$(mv "$GITHUB_WORKSPACE/.github/$COFFEE_FILE_NAME" "$COFFEE_LINTER_RULES" 2>&1) + MV_CMD=$(mv "$GITHUB_WORKSPACE/.github/linters/$COFFEE_FILE_NAME" "$COFFEE_LINTER_RULES" 2>&1) ################### # Load Error code # @@ -218,13 +218,13 @@ GetLinterRules() ##################################### # Validate we have the linter rules # ##################################### - if [ -f "$GITHUB_WORKSPACE/.github/$ANSIBLE_FILE_NAME" ]; then + if [ -f "$GITHUB_WORKSPACE/.github/linters/$ANSIBLE_FILE_NAME" ]; then echo "User provided file:[$ANSIBLE_FILE_NAME], setting rules file..." #################################### # Move users into default location # #################################### - MV_CMD=$(mv "$GITHUB_WORKSPACE/.github/$ANSIBLE_FILE_NAME" "$ANSIBLE_LINTER_RULES" 2>&1) + MV_CMD=$(mv "$GITHUB_WORKSPACE/.github/linters/$ANSIBLE_FILE_NAME" "$ANSIBLE_LINTER_RULES" 2>&1) ################### # Load Error code # From b2c9c34e782b42ad99dc4ad891b4db9aac9cd3fd Mon Sep 17 00:00:00 2001 From: Lucas Gravley <29484535+admiralAwkbar@users.noreply.github.com> Date: Wed, 23 Oct 2019 10:38:53 -0500 Subject: [PATCH 5/7] cleanup --- lib/entrypoint.sh | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/lib/entrypoint.sh b/lib/entrypoint.sh index ae0d2bce..a7c976f7 100755 --- a/lib/entrypoint.sh +++ b/lib/entrypoint.sh @@ -1,4 +1,4 @@ -#!/bin/bash +cd "$GITHUB_WORKSPACE" || exit;#!/bin/bash ################################################################################ ########### EntryPoint for Super-Linter @AdmiralAwkbar ######################### @@ -289,8 +289,8 @@ LintJsonFiles() ################################# # Get list of all files to lint # ################################# - # shellcheck disable=SC2207,SC2164 - LIST_FILES=($(cd "$GITHUB_WORKSPACE"; find . -type f -name "*.json" 2>&1)) + # shellcheck disable=SC2207 + LIST_FILES=($(cd "$GITHUB_WORKSPACE" || exit; find . -type f -name "*.json" 2>&1)) ################## # Lint the files # @@ -391,8 +391,8 @@ LintYmlFiles() ################################# # Get list of all files to lint # ################################# - # shellcheck disable=SC2207,SC2164 - LIST_FILES=($(cd "$GITHUB_WORKSPACE"; find . -type f \( -name "*.yml" -or -name "*.yaml" \) 2>&1)) + # shellcheck disable=SC2207 + LIST_FILES=($(cd "$GITHUB_WORKSPACE" || exit; find . -type f \( -name "*.yml" -or -name "*.yaml" \) 2>&1)) ################## # Lint the files # @@ -493,8 +493,8 @@ LintXmlFiles() ################################# # Get list of all files to lint # ################################# - # shellcheck disable=SC2207,SC2164 - LIST_FILES=($(cd "$GITHUB_WORKSPACE"; find . -type f -name "*.xml" 2>&1)) + # shellcheck disable=SC2207 + LIST_FILES=($(cd "$GITHUB_WORKSPACE" || exit; find . -type f -name "*.xml" 2>&1)) ################## # Lint the files # @@ -595,8 +595,8 @@ LintMdFiles() ################################# # Get list of all files to lint # ################################# - # shellcheck disable=SC2207,SC2164 - LIST_FILES=($(cd "$GITHUB_WORKSPACE"; find . -type f -name "*.md" 2>&1)) + # shellcheck disable=SC2207 + LIST_FILES=($(cd "$GITHUB_WORKSPACE" || exit; find . -type f -name "*.md" 2>&1)) ################## # Lint the files # @@ -697,8 +697,8 @@ LintBashFiles() ################################# # Get list of all files to lint # ################################# - # shellcheck disable=SC2207,SC2164 - LIST_FILES=($(cd "$GITHUB_WORKSPACE"; find . -type f -name "*.sh" 2>&1)) + # shellcheck disable=SC2207 + LIST_FILES=($(cd "$GITHUB_WORKSPACE" || exit; find . -type f -name "*.sh" 2>&1)) ################## # Lint the files # @@ -800,8 +800,8 @@ LintPythonFiles() ################################# # Get list of all files to lint # ################################# - # shellcheck disable=SC2207,SC2164 - LIST_FILES=($(cd "$GITHUB_WORKSPACE"; find . -type f -name "*.py" 2>&1)) + # shellcheck disable=SC2207 + LIST_FILES=($(cd "$GITHUB_WORKSPACE" || exit; find . -type f -name "*.py" 2>&1)) ################## # Lint the files # @@ -903,8 +903,8 @@ LintPerlFiles() ################################# # Get list of all files to lint # ################################# - # shellcheck disable=SC2207,SC2164 - LIST_FILES=($(cd "$GITHUB_WORKSPACE"; find . -type f -name "*.pl" 2>&1)) + # shellcheck disable=SC2207 + LIST_FILES=($(cd "$GITHUB_WORKSPACE" || exit; find . -type f -name "*.pl" 2>&1)) ################## # Lint the files # @@ -1006,8 +1006,8 @@ LintRubyFiles() ################################# # Get list of all files to lint # ################################# - # shellcheck disable=SC2207,SC2164 - LIST_FILES=($(cd "$GITHUB_WORKSPACE"; find . -type f -name "*.rb" 2>&1)) + # shellcheck disable=SC2207 + LIST_FILES=($(cd "$GITHUB_WORKSPACE" || exit; find . -type f -name "*.rb" 2>&1)) ################## # Lint the files # @@ -1109,8 +1109,8 @@ LintCoffeeFiles() ################################# # Get list of all files to lint # ################################# - # shellcheck disable=SC2207,SC2164 - LIST_FILES=($(cd "$GITHUB_WORKSPACE"; find . -type f -name "*.coffee" 2>&1)) + # shellcheck disable=SC2207 + LIST_FILES=($(cd "$GITHUB_WORKSPACE" || exit; find . -type f -name "*.coffee" 2>&1)) ################## # Lint the files # From 2b02eeff7207873ef6a85a8fb585cad90ce38179 Mon Sep 17 00:00:00 2001 From: Lucas Gravley <29484535+admiralAwkbar@users.noreply.github.com> Date: Wed, 23 Oct 2019 10:42:28 -0500 Subject: [PATCH 6/7] cleanup --- lib/entrypoint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/entrypoint.sh b/lib/entrypoint.sh index a7c976f7..abda330f 100755 --- a/lib/entrypoint.sh +++ b/lib/entrypoint.sh @@ -1,4 +1,4 @@ -cd "$GITHUB_WORKSPACE" || exit;#!/bin/bash +#!/bin/bash ################################################################################ ########### EntryPoint for Super-Linter @AdmiralAwkbar ######################### From 1796ac633c115e64fbace99c9d61a40d6a7ab074 Mon Sep 17 00:00:00 2001 From: Lucas Gravley <29484535+admiralAwkbar@users.noreply.github.com> Date: Wed, 23 Oct 2019 12:23:46 -0500 Subject: [PATCH 7/7] added --- README.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 0a8dcd8d..bf8cb9f4 100644 --- a/README.md +++ b/README.md @@ -17,15 +17,14 @@ Developers on **GitHub** can call this Action to lint their code base with the f ## How to use To use this **GitHub** Action you will need to complete the following: -- Copy **any** or **all** template rules files `TEMPLATES/` to your repository in the location: `.github/` - - If your repository does not have rules files, they will fall back to defaults -- Validate all variables are correct and allow for proper permissions on **AWS** +- Copy **any** or **all** template rules files from `TEMPLATES/` into your repository in the location: `.github/linters/` + - If your repository does not have rules files, they will fall back to defaults in this repositories `TEMPLATE` folder - Add the **Github** Action: **Super-Linter** to your current **Github** Actions workflow - Enjoy your more stable, and cleaner code base -### Example GitHub Action Workflow +### Example connecting GitHub Action Workflow -In your repository you should have a `workflows` folder similar to below: +In your repository you should have a `workflows` folder with **GitHub** Action similar to below: - `.github/workflows/linter.yml`