mirror of
https://github.com/super-linter/super-linter.git
synced 2024-11-22 06:01:05 -05:00
Merge branch 'master' into Groovy
This commit is contained in:
commit
135b01cf51
21 changed files with 386 additions and 1427 deletions
|
@ -1,22 +0,0 @@
|
|||
TAP version 13
|
||||
1..8
|
||||
not ok 1 - cfn_bad_1.json
|
||||
---
|
||||
message: E3001 Invalid or unsupported Type AWS Route53 HostedZonee for resource DNS in us-east-1\n/tmp/lint/.automation/test/cfn/cfn_bad_1.json 6 10\n
|
||||
...
|
||||
not ok 2 - cfn_bad_2.yaml
|
||||
---
|
||||
message: E3001 Invalid or unsupported Type AWS Route53 HostedZonee for resource DNS in us-east-1\n/tmp/lint/.automation/test/cfn/cfn_bad_2.yaml 5 5\n
|
||||
...
|
||||
not ok 3 - cfn_bad_3.json
|
||||
---
|
||||
message: E3002 Invalid Property Resources/myDNSRecord/Properties/Ttl\n/tmp/lint/.automation/test/cfn/cfn_bad_3.json 11 13\n
|
||||
...
|
||||
not ok 4 - cfn_bad_4.yaml
|
||||
---
|
||||
message: E3002 Invalid Property Resources/myDNSRecord/Properties/Ttl\n/tmp/lint/.automation/test/cfn/cfn_bad_4.yaml 9 7\n
|
||||
...
|
||||
ok 5 - cfn_good_1.json
|
||||
ok 6 - cfn_good_2.yaml
|
||||
ok 7 - cfn_good_3.json
|
||||
ok 8 - cfn_good_4.yaml
|
|
@ -0,0 +1,22 @@
|
|||
TAP version 13
|
||||
1..8
|
||||
not ok 1 - cloudformation_bad_1.json
|
||||
---
|
||||
message: E3001 Invalid or unsupported Type AWS Route53 HostedZonee for resource DNS in us-east-1\n/tmp/lint/.automation/test/cloudformation/cloudformation_bad_1.json 6 10\n
|
||||
...
|
||||
not ok 2 - cloudformation_bad_2.yaml
|
||||
---
|
||||
message: E3001 Invalid or unsupported Type AWS Route53 HostedZonee for resource DNS in us-east-1\n/tmp/lint/.automation/test/cloudformation/cloudformation_bad_2.yaml 5 5\n
|
||||
...
|
||||
not ok 3 - cloudformation_bad_3.json
|
||||
---
|
||||
message: E3002 Invalid Property Resources/myDNSRecord/Properties/Ttl\n/tmp/lint/.automation/test/cloudformation/cloudformation_bad_3.json 11 13\n
|
||||
...
|
||||
not ok 4 - cloudformation_bad_4.yaml
|
||||
---
|
||||
message: E3002 Invalid Property Resources/myDNSRecord/Properties/Ttl\n/tmp/lint/.automation/test/cloudformation/cloudformation_bad_4.yaml 9 7\n
|
||||
...
|
||||
ok 5 - cloudformation_good_1.json
|
||||
ok 6 - cloudformation_good_2.yaml
|
||||
ok 7 - cloudformation_good_3.json
|
||||
ok 8 - cloudformation_good_4.yaml
|
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -4,6 +4,7 @@ logs
|
|||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
/package-lock.json
|
||||
|
||||
# Runtime data
|
||||
pids
|
||||
|
|
|
@ -174,7 +174,7 @@ RUN curl -sSLO https://github.com/pinterest/ktlint/releases/latest/download/ktli
|
|||
####################
|
||||
RUN wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub
|
||||
RUN wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_VERSION}/glibc-${GLIBC_VERSION}.apk
|
||||
RUN apk add --no-cache glibc-${GLIBC_VERSION}.apk
|
||||
RUN apk add --no-cache glibc-${GLIBC_VERSION}.apk && rm glibc-${GLIBC_VERSION}.apk
|
||||
RUN wget https://storage.googleapis.com/dart-archive/channels/stable/release/${DART_VERSION}/sdk/dartsdk-linux-x64-release.zip -O - -q | unzip -q - \
|
||||
&& chmod +x dart-sdk/bin/dart* \
|
||||
&& mv dart-sdk/bin/* /usr/bin/ && mv dart-sdk/lib/* /usr/lib/ && mv dart-sdk/include/* /usr/include/ \
|
||||
|
@ -209,6 +209,7 @@ ENV ACTIONS_RUNNER_DEBUG=${ACTIONS_RUNNER_DEBUG} \
|
|||
VALIDATE_ARM=${VALIDATE_ARM} \
|
||||
VALIDATE_BASH=${VALIDATE_BASH} \
|
||||
VALIDATE_CLOJURE=${VALIDATE_CLOJURE} \
|
||||
VALIDATE_CLOUDFORMATION=${VALIDATE_CLOUDFORMATION} \
|
||||
VALIDATE_COFFEE=${VALIDATE_COFFEE} \
|
||||
VALIDATE_CSS=${VALIDATE_CSS} \
|
||||
VALIDATE_DART=${VALIDATE_DART} \
|
||||
|
|
57
TEMPLATES/analysis_options.yaml
Normal file
57
TEMPLATES/analysis_options.yaml
Normal file
|
@ -0,0 +1,57 @@
|
|||
---
|
||||
##########################
|
||||
##########################
|
||||
## Dart Linter rules ##
|
||||
##########################
|
||||
##########################
|
||||
|
||||
# Pedantic Rules
|
||||
# https://github.com/dart-lang/pedantic
|
||||
|
||||
linter:
|
||||
rules:
|
||||
- always_declare_return_types
|
||||
- always_require_non_null_named_parameters
|
||||
- annotate_overrides
|
||||
- avoid_empty_else
|
||||
- avoid_init_to_null
|
||||
- avoid_null_checks_in_equality_operators
|
||||
- avoid_relative_lib_imports
|
||||
- avoid_return_types_on_setters
|
||||
- avoid_shadowing_type_parameters
|
||||
- avoid_types_as_parameter_names
|
||||
- camel_case_extensions
|
||||
- curly_braces_in_flow_control_structures
|
||||
- empty_catches
|
||||
- empty_constructor_bodies
|
||||
- library_names
|
||||
- library_prefixes
|
||||
- no_duplicate_case_values
|
||||
- null_closures
|
||||
- omit_local_variable_types
|
||||
- prefer_adjacent_string_concatenation
|
||||
- prefer_collection_literals
|
||||
- prefer_conditional_assignment
|
||||
- prefer_contains
|
||||
- prefer_equal_for_default_values
|
||||
- prefer_final_fields
|
||||
- prefer_for_elements_to_map_fromIterable
|
||||
- prefer_generic_function_type_aliases
|
||||
- prefer_if_null_operators
|
||||
- prefer_is_empty
|
||||
- prefer_is_not_empty
|
||||
- prefer_iterable_whereType
|
||||
- prefer_single_quotes
|
||||
- prefer_spread_collections
|
||||
- recursive_getters
|
||||
- slash_for_doc_comments
|
||||
- type_init_formals
|
||||
- unawaited_futures
|
||||
- unnecessary_const
|
||||
- unnecessary_new
|
||||
- unnecessary_null_in_if_null_operators
|
||||
- unnecessary_this
|
||||
- unrelated_type_equality_checks
|
||||
- use_function_type_syntax_for_parameters
|
||||
- use_rethrow_when_possible
|
||||
- valid_regexps
|
|
@ -18,7 +18,7 @@ For some linters it is also possible to override rules on a case by case level w
|
|||
- [Shell](#shell)
|
||||
- [Ansible](#ansible)
|
||||
- [YAML](#yaml)
|
||||
- [AWS CloudFormation templates](#cfn)
|
||||
- [AWS CloudFormation templates](#aws-cloud-formation)
|
||||
- [Python](#python3)
|
||||
- [JSON](#json)
|
||||
- [Markdown](#markdown)
|
||||
|
@ -36,6 +36,7 @@ For some linters it is also possible to override rules on a case by case level w
|
|||
- [Dockerfile](#dockerfile)
|
||||
- [Terraform](#terraform)
|
||||
- [CSS](#css)
|
||||
- [DART](#dart)
|
||||
- [ENV](#dotenv-linter)
|
||||
- [Kotlin](#kotlin)
|
||||
- [OpenAPI](#openapi)
|
||||
|
@ -865,7 +866,7 @@ import package.b.*
|
|||
|
||||
- `.github/linters/.dart-lint.yml`
|
||||
- You can pass multiple rules and overwrite default rules
|
||||
- File should be located at: `.github/linters/.dart-lint.yml`
|
||||
- File should be located at: `.github/linters/anaylsis_options.yaml`
|
||||
|
||||
### dartanalyzer disable single line
|
||||
|
||||
|
@ -883,7 +884,7 @@ int x = ''; // ignore: invalid_assignment
|
|||
|
||||
### dartanalyzer disable entire file
|
||||
|
||||
- You can disable entire files with the `analyzer.exclude` property in `.dart-lint.yml`
|
||||
- You can disable entire files with the `analyzer.exclude` property in `anaylsis_options.yaml`
|
||||
|
||||
```dart
|
||||
analyzer:
|
||||
|
|
|
@ -84,9 +84,10 @@ function BuildFileList() {
|
|||
###########################
|
||||
# Get the files extension #
|
||||
###########################
|
||||
# Extract just the file and extension, reverse it, cut off extension,
|
||||
# reverse it back, substitute to lowercase
|
||||
FILE_TYPE=$(basename "${FILE}" | rev | cut -f1 -d'.' | rev | awk '{print tolower($0)}')
|
||||
# Extract just the file extension
|
||||
FILE_TYPE=${FILE##*.}
|
||||
# To lowercase
|
||||
FILE_TYPE=${FILE_TYPE,,}
|
||||
|
||||
##############
|
||||
# Print file #
|
||||
|
@ -98,9 +99,9 @@ function BuildFileList() {
|
|||
#########
|
||||
#echo "FILE_TYPE:[${FILE_TYPE}]"
|
||||
|
||||
#####################
|
||||
# Get the CFN files #
|
||||
#####################
|
||||
################################
|
||||
# Get the CLOUDFORMATION files #
|
||||
################################
|
||||
if [ "${FILE_TYPE}" == "yml" ] || [ "${FILE_TYPE}" == "yaml" ]; then
|
||||
################################
|
||||
# Append the file to the array #
|
||||
|
@ -118,7 +119,7 @@ function BuildFileList() {
|
|||
################################
|
||||
# Append the file to the array #
|
||||
################################
|
||||
FILE_ARRAY_CFN+=("${FILE}")
|
||||
FILE_ARRAY_CLOUDFORMATION+=("${FILE}")
|
||||
|
||||
##########################################################
|
||||
# Set the READ_ONLY_CHANGE_FLAG since this could be exec #
|
||||
|
@ -158,7 +159,7 @@ function BuildFileList() {
|
|||
################################
|
||||
# Append the file to the array #
|
||||
################################
|
||||
FILE_ARRAY_CFN+=("${FILE}")
|
||||
FILE_ARRAY_CLOUDFORMATION+=("${FILE}")
|
||||
fi
|
||||
############################################
|
||||
# Check if the file is AWS States Language #
|
||||
|
|
406
lib/linter.sh
406
lib/linter.sh
|
@ -22,74 +22,74 @@ source /action/lib/worker.sh # Source the function script(s)
|
|||
# GLOBALS #
|
||||
###########
|
||||
# Default Vars
|
||||
DEFAULT_RULES_LOCATION='/action/lib/.automation' # Default rules files location
|
||||
DEFAULT_RULES_LOCATION='/action/lib/.automation' # Default rules files location
|
||||
# Ansible Vars
|
||||
ANSIBLE_FILE_NAME='.ansible-lint.yml' # Name of the file
|
||||
ANSIBLE_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${ANSIBLE_FILE_NAME}" # Path to the Ansible lint rules
|
||||
ANSIBLE_FILE_NAME='.ansible-lint.yml' # Name of the file
|
||||
ANSIBLE_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${ANSIBLE_FILE_NAME}" # Path to the Ansible lint rules
|
||||
# Azure Resource Manager Vars
|
||||
ARM_FILE_NAME='.arm-ttk.psd1' # Name of the file
|
||||
ARM_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${ARM_FILE_NAME}" # Path to the ARM lint rules
|
||||
ARM_FILE_NAME='.arm-ttk.psd1' # Name of the file
|
||||
ARM_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${ARM_FILE_NAME}" # Path to the ARM lint rules
|
||||
# Cloudformation Vars
|
||||
CFN_FILE_NAME='.cfnlintrc.yml' # Name of the file
|
||||
CFN_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${CFN_FILE_NAME}" # Path to the cloudformation lint rules
|
||||
CLOUDFORMATION_FILE_NAME='.cfnlintrc.yml' # Name of the file
|
||||
CLOUDFORMATION_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${CLOUDFORMATION_FILE_NAME}" # Path to the cloudformation lint rules
|
||||
# Clojure Vars
|
||||
CLOJURE_FILE_NAME='.clj-kondo/config.edn' # Name of the file
|
||||
CLOJURE_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${CLOJURE_FILE_NAME}" # Path to the Clojure lint rules
|
||||
CLOJURE_FILE_NAME='.clj-kondo/config.edn' # Name of the file
|
||||
CLOJURE_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${CLOJURE_FILE_NAME}" # Path to the Clojure 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 coffeescript lint rules
|
||||
COFFEE_FILE_NAME='.coffee-lint.json' # Name of the file
|
||||
COFFEESCRIPT_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${COFFEE_FILE_NAME}" # Path to the coffeescript lint rules
|
||||
# CSS Vars
|
||||
CSS_FILE_NAME='.stylelintrc.json' # Name of the file
|
||||
CSS_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${CSS_FILE_NAME}" # Path to the CSS lint rules
|
||||
CSS_FILE_NAME='.stylelintrc.json' # Name of the file
|
||||
CSS_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${CSS_FILE_NAME}" # Path to the CSS lint rules
|
||||
# Dart Vars
|
||||
DART_FILE_NAME='analysis_options.yaml' # Name of the file
|
||||
DART_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${DART_FILE_NAME}" # Path to the DART lint rules
|
||||
DART_FILE_NAME='analysis_options.yaml' # Name of the file
|
||||
DART_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${DART_FILE_NAME}" # Path to the DART lint rules
|
||||
# Docker Vars
|
||||
DOCKER_FILE_NAME='.dockerfilelintrc' # Name of the file
|
||||
DOCKER_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${DOCKER_FILE_NAME}" # Path to the Docker lint rules
|
||||
DOCKER_FILE_NAME='.dockerfilelintrc' # Name of the file
|
||||
DOCKER_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${DOCKER_FILE_NAME}" # Path to the Docker lint rules
|
||||
# Golang Vars
|
||||
GO_FILE_NAME='.golangci.yml' # Name of the file
|
||||
GO_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${GO_FILE_NAME}" # Path to the Go lint rules
|
||||
GO_FILE_NAME='.golangci.yml' # Name of the file
|
||||
GO_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${GO_FILE_NAME}" # Path to the Go lint rules
|
||||
# Groovy Vars
|
||||
GROOVY_FILE_NAME='.groovylintrc.json' # Name of the file
|
||||
GROOVY_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${GROOVY_FILE_NAME}" # Path to the Groovy lint rules
|
||||
GROOVY_FILE_NAME='.groovylintrc.json' # Name of the file
|
||||
GROOVY_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${GROOVY_FILE_NAME}" # Path to the Groovy lint rules
|
||||
# HTML Vars
|
||||
HTML_FILE_NAME='.htmlhintrc' # Name of the file
|
||||
HTML_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${HTML_FILE_NAME}" # Path to the CSS lint rules
|
||||
HTML_FILE_NAME='.htmlhintrc' # Name of the file
|
||||
HTML_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${HTML_FILE_NAME}" # Path to the CSS lint rules
|
||||
# Javascript Vars
|
||||
JAVASCRIPT_FILE_NAME="${JAVASCRIPT_ES_CONFIG_FILE:-.eslintrc.yml}" # Name of the file
|
||||
JAVASCRIPT_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${JAVASCRIPT_FILE_NAME}" # Path to the Javascript lint rules
|
||||
JAVASCRIPT_STANDARD_LINTER_RULES='' # ENV string to pass when running js standard
|
||||
JAVASCRIPT_FILE_NAME="${JAVASCRIPT_ES_CONFIG_FILE:-.eslintrc.yml}" # Name of the file
|
||||
JAVASCRIPT_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${JAVASCRIPT_FILE_NAME}" # Path to the Javascript lint rules
|
||||
JAVASCRIPT_STANDARD_LINTER_RULES='' # ENV string to pass when running js standard
|
||||
# Default linter path
|
||||
LINTER_RULES_PATH="${LINTER_RULES_PATH:-.github/linters}" # Linter Path Directory
|
||||
LINTER_RULES_PATH="${LINTER_RULES_PATH:-.github/linters}" # Linter Path Directory
|
||||
# MD Vars
|
||||
MARKDOWN_FILE_NAME='.markdown-lint.yml' # Name of the file
|
||||
MARKDOWN_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${MARKDOWN_FILE_NAME}" # Path to the markdown lint rules
|
||||
MARKDOWN_FILE_NAME='.markdown-lint.yml' # Name of the file
|
||||
MARKDOWN_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${MARKDOWN_FILE_NAME}" # Path to the markdown lint rules
|
||||
# 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
|
||||
OPENAPI_FILE_NAME='.openapirc.yml' # Name of the file
|
||||
OPENAPI_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${OPENAPI_FILE_NAME}" # Path to the OpenAPI lint rules
|
||||
# Powershell Vars
|
||||
POWERSHELL_FILE_NAME='.powershell-psscriptanalyzer.psd1' # Name of the file
|
||||
POWERSHELL_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${POWERSHELL_FILE_NAME}" # Path to the Powershell lint rules
|
||||
POWERSHELL_FILE_NAME='.powershell-psscriptanalyzer.psd1' # Name of the file
|
||||
POWERSHELL_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${POWERSHELL_FILE_NAME}" # Path to the Powershell lint rules
|
||||
# Protocol Buffers Vars
|
||||
PROTOBUF_FILE_NAME='.protolintrc.yml' # Name of the file
|
||||
PROTOBUF_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${PROTOBUF_FILE_NAME}" # Path to the Protocol Buffers lint rules
|
||||
PROTOBUF_FILE_NAME='.protolintrc.yml' # Name of the file
|
||||
PROTOBUF_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${PROTOBUF_FILE_NAME}" # Path to the Protocol Buffers lint rules
|
||||
# Python Vars
|
||||
PYTHON_FILE_NAME='.python-lint' # Name of the file
|
||||
PYTHON_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${PYTHON_FILE_NAME}" # Path to the python lint rules
|
||||
PYTHON_FILE_NAME='.python-lint' # Name of the file
|
||||
PYTHON_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${PYTHON_FILE_NAME}" # Path to the python lint rules
|
||||
# Ruby Vars
|
||||
RUBY_FILE_NAME="${RUBY_CONFIG_FILE:-.ruby-lint.yml}" # Name of the file
|
||||
RUBY_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${RUBY_FILE_NAME}" # Path to the ruby lint rules
|
||||
RUBY_FILE_NAME="${RUBY_CONFIG_FILE:-.ruby-lint.yml}" # Name of the file
|
||||
RUBY_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${RUBY_FILE_NAME}" # Path to the ruby lint rules
|
||||
# Terraform Vars
|
||||
TERRAFORM_FILE_NAME='.tflint.hcl' # Name of the file
|
||||
TERRAFORM_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${TERRAFORM_FILE_NAME}" # Path to the Terraform lint rules
|
||||
TERRAFORM_FILE_NAME='.tflint.hcl' # Name of the file
|
||||
TERRAFORM_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${TERRAFORM_FILE_NAME}" # Path to the Terraform lint rules
|
||||
# Typescript Vars
|
||||
TYPESCRIPT_FILE_NAME="${TYPESCRIPT_ES_CONFIG_FILE:-.eslintrc.yml}" # Name of the file
|
||||
TYPESCRIPT_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${TYPESCRIPT_FILE_NAME}" # Path to the Typescript lint rules
|
||||
TYPESCRIPT_STANDARD_LINTER_RULES='' # ENV string to pass when running js standard
|
||||
TYPESCRIPT_FILE_NAME="${TYPESCRIPT_ES_CONFIG_FILE:-.eslintrc.yml}" # Name of the file
|
||||
TYPESCRIPT_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${TYPESCRIPT_FILE_NAME}" # Path to the Typescript lint rules
|
||||
TYPESCRIPT_STANDARD_LINTER_RULES='' # ENV string to pass when running js standard
|
||||
# YAML Vars
|
||||
YAML_FILE_NAME='.yaml-lint.yml' # Name of the file
|
||||
YAML_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${YAML_FILE_NAME}" # Path to the yaml lint rules
|
||||
YAML_FILE_NAME='.yaml-lint.yml' # Name of the file
|
||||
YAML_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${YAML_FILE_NAME}" # Path to the yaml lint rules
|
||||
|
||||
#######################################
|
||||
# Linter array for information prints #
|
||||
|
@ -104,7 +104,7 @@ LINTER_ARRAY=('ansible-lint' 'arm-ttk' 'asl-validator' 'cfn-lint' 'clj-kondo'
|
|||
#############################
|
||||
# Language array for prints #
|
||||
#############################
|
||||
LANGUAGE_ARRAY=('ANSIBLE' 'ARM' 'BASH' 'CFN' 'CLOJURE' 'COFFEESCRIPT'
|
||||
LANGUAGE_ARRAY=('ANSIBLE' 'ARM' 'BASH' 'CLOUDFORMATION' 'CLOJURE' 'COFFEESCRIPT'
|
||||
'CSS' 'DART' 'DOCKER' 'ENV' 'GO' 'GROOVY' 'HTML' 'JAVASCRIPT_ES'
|
||||
'JAVASCRIPT_STANDARD' 'JSON' 'JSX' 'KOTLIN' 'MARKDOWN' 'OPENAPI'
|
||||
'PERL' 'PHP' 'POWERSHELL' 'PROTOBUF' 'PYTHON'
|
||||
|
@ -135,7 +135,7 @@ VALIDATE_ALL_CODEBASE="${VALIDATE_ALL_CODEBASE}" # Boolean to vali
|
|||
VALIDATE_ANSIBLE="${VALIDATE_ANSIBLE}" # Boolean to validate language
|
||||
VALIDATE_ARM="${VALIDATE_ARM}" # Boolean to validate language
|
||||
VALIDATE_BASH="${VALIDATE_BASH}" # Boolean to validate language
|
||||
VALIDATE_CFN="${VALIDATE_CLOUDFORMATION}" # Boolean to validate language
|
||||
VALIDATE_CLOUDFORMATION="${VALIDATE_CLOUDFORMATION}" # Boolean to validate language
|
||||
VALIDATE_CLOJURE="${VALIDATE_CLOJURE}" # Boolean to validate language
|
||||
VALIDATE_COFFEE="${VALIDATE_COFFEE}" # Boolean to validate language
|
||||
VALIDATE_CSS="${VALIDATE_CSS}" # Boolean to validate language
|
||||
|
@ -211,7 +211,7 @@ REPORT_OUTPUT_FOLDER="${DEFAULT_WORKSPACE}/${OUTPUT_FOLDER}" # Location for the
|
|||
##########################
|
||||
FILE_ARRAY_ARM=() # Array of files to check
|
||||
FILE_ARRAY_BASH=() # Array of files to check
|
||||
FILE_ARRAY_CFN=() # Array of files to check
|
||||
FILE_ARRAY_CLOUDFORMATION=() # Array of files to check
|
||||
FILE_ARRAY_CLOJURE=() # Array of files to check
|
||||
FILE_ARRAY_COFFEESCRIPT=() # Array of files to check
|
||||
FILE_ARRAY_CSS=() # Array of files to check
|
||||
|
@ -246,40 +246,74 @@ FILE_ARRAY_YML=() # Array of files to check
|
|||
############
|
||||
# Counters #
|
||||
############
|
||||
ERRORS_FOUND_ANSIBLE=0 # Count of errors found
|
||||
ERRORS_FOUND_ARM=0 # Count of errors found
|
||||
ERRORS_FOUND_BASH=0 # Count of errors found
|
||||
ERRORS_FOUND_CFN=0 # Count of errors found
|
||||
ERRORS_FOUND_CLOJURE=0 # Count of errors found
|
||||
ERRORS_FOUND_CSS=0 # Count of errors found
|
||||
ERRORS_FOUND_COFFEESCRIPT=0 # Count of errors found
|
||||
ERRORS_FOUND_DART=0 # Count of errors found
|
||||
ERRORS_FOUND_DOCKER=0 # Count of errors found
|
||||
ERRORS_FOUND_ENV=0 # Count of errors found
|
||||
ERRORS_FOUND_GO=0 # Count of errors found
|
||||
ERRORS_FOUND_GROOVY=0 # Count of errors found
|
||||
ERRORS_FOUND_HTML=0 # Count of errors found
|
||||
ERRORS_FOUND_JAVASCRIPT_STANDARD=0 # Count of errors found
|
||||
ERRORS_FOUND_JAVASCRIPT_ES=0 # Count of errors found
|
||||
ERRORS_FOUND_JSON=0 # Count of errors found
|
||||
ERRORS_FOUND_JSX=0 # Count of errors found
|
||||
ERRORS_FOUND_KOTLIN=0 # Count of errors found
|
||||
ERRORS_FOUND_MARKDOWN=0 # Count of errors found
|
||||
ERRORS_FOUND_OPENAPI=0 # Count of errors found
|
||||
ERRORS_FOUND_PERL=0 # Count of errors found
|
||||
ERRORS_FOUND_PHP=0 # Count of errors found
|
||||
ERRORS_FOUND_POWERSHELL=0 # Count of errors found
|
||||
ERRORS_FOUND_PROTOBUF=0 # Count of errors found
|
||||
ERRORS_FOUND_PYTHON=0 # Count of errors found
|
||||
ERRORS_FOUND_RAKU=0 # Count of errors found
|
||||
ERRORS_FOUND_RUBY=0 # Count of errors found
|
||||
ERRORS_FOUND_STATES=0 # Count of errors found
|
||||
ERRORS_FOUND_TERRAFORM=0 # Count of errors found
|
||||
ERRORS_FOUND_TSX=0 # Count of errors found
|
||||
ERRORS_FOUND_TYPESCRIPT_STANDARD=0 # Count of errors found
|
||||
ERRORS_FOUND_TYPESCRIPT_ES=0 # Count of errors found
|
||||
ERRORS_FOUND_XML=0 # Count of errors found
|
||||
ERRORS_FOUND_YML=0 # Count of errors found
|
||||
ERRORS_FOUND_ANSIBLE=0 # Count of errors found
|
||||
export ERRORS_FOUND_ANSIBLE # Workaround SC2034
|
||||
ERRORS_FOUND_ARM=0 # Count of errors found
|
||||
export ERRORS_FOUND_ARM # Workaround SC2034
|
||||
ERRORS_FOUND_BASH=0 # Count of errors found
|
||||
export ERRORS_FOUND_BASH # Workaround SC2034
|
||||
ERRORS_FOUND_CLOUDFORMATION=0 # Count of errors found
|
||||
export ERRORS_FOUND_CLOUDFORMATION # Workaround SC2034
|
||||
ERRORS_FOUND_CLOJURE=0 # Count of errors found
|
||||
export ERRORS_FOUND_CLOJURE # Workaround SC2034
|
||||
ERRORS_FOUND_CSS=0 # Count of errors found
|
||||
export ERRORS_FOUND_CSS # Workaround SC2034
|
||||
ERRORS_FOUND_COFFEESCRIPT=0 # Count of errors found
|
||||
export ERRORS_FOUND_COFFEESCRIPT # Workaround SC2034
|
||||
ERRORS_FOUND_DART=0 # Count of errors found
|
||||
export ERRORS_FOUND_DART # Workaround SC2034
|
||||
ERRORS_FOUND_DOCKER=0 # Count of errors found
|
||||
export ERRORS_FOUND_DOCKER # Workaround SC2034
|
||||
ERRORS_FOUND_ENV=0 # Count of errors found
|
||||
export ERRORS_FOUND_ENV # Workaround SC2034
|
||||
ERRORS_FOUND_GO=0 # Count of errors found
|
||||
export ERRORS_FOUND_GO # Workaround SC2034
|
||||
ERRORS_FOUND_GROOVY=0 # Count of errors found
|
||||
export ERRORS_FOUND_GROOVY # Workaround SC2034
|
||||
ERRORS_FOUND_HTML=0 # Count of errors found
|
||||
export ERRORS_FOUND_HTML # Workaround SC2034
|
||||
ERRORS_FOUND_JAVASCRIPT_STANDARD=0 # Count of errors found
|
||||
export ERRORS_FOUND_JAVASCRIPT_STANDARD # Workaround SC2034
|
||||
ERRORS_FOUND_JAVASCRIPT_ES=0 # Count of errors found
|
||||
export ERRORS_FOUND_JAVASCRIPT_ES # Workaround SC2034
|
||||
ERRORS_FOUND_JSON=0 # Count of errors found
|
||||
export ERRORS_FOUND_JSON # Workaround SC2034
|
||||
ERRORS_FOUND_JSX=0 # Count of errors found
|
||||
export ERRORS_FOUND_JSX # Workaround SC2034
|
||||
ERRORS_FOUND_KOTLIN=0 # Count of errors found
|
||||
export ERRORS_FOUND_KOTLIN # Workaround SC2034
|
||||
ERRORS_FOUND_MARKDOWN=0 # Count of errors found
|
||||
export ERRORS_FOUND_MARKDOWN # Workaround SC2034
|
||||
ERRORS_FOUND_OPENAPI=0 # Count of errors found
|
||||
export ERRORS_FOUND_OPENAPI # Workaround SC2034
|
||||
ERRORS_FOUND_PERL=0 # Count of errors found
|
||||
export ERRORS_FOUND_PERL # Workaround SC2034
|
||||
ERRORS_FOUND_PHP=0 # Count of errors found
|
||||
export ERRORS_FOUND_PHP # Workaround SC2034
|
||||
ERRORS_FOUND_POWERSHELL=0 # Count of errors found
|
||||
export ERRORS_FOUND_POWERSHELL # Workaround SC2034
|
||||
ERRORS_FOUND_PROTOBUF=0 # Count of errors found
|
||||
export ERRORS_FOUND_PROTOBUF # Workaround SC2034
|
||||
ERRORS_FOUND_PYTHON=0 # Count of errors found
|
||||
export ERRORS_FOUND_PYTHON # Workaround SC2034
|
||||
ERRORS_FOUND_RAKU=0 # Count of errors found
|
||||
export ERRORS_FOUND_RAKU # Workaround SC2034
|
||||
ERRORS_FOUND_RUBY=0 # Count of errors found
|
||||
export ERRORS_FOUND_RUBY # Workaround SC2034
|
||||
ERRORS_FOUND_STATES=0 # Count of errors found
|
||||
export ERRORS_FOUND_STATES # Workaround SC2034
|
||||
ERRORS_FOUND_TERRAFORM=0 # Count of errors found
|
||||
export ERRORS_FOUND_TERRAFORM # Workaround SC2034
|
||||
ERRORS_FOUND_TSX=0 # Count of errors found
|
||||
export ERRORS_FOUND_TSX # Workaround SC2034
|
||||
ERRORS_FOUND_TYPESCRIPT_STANDARD=0 # Count of errors found
|
||||
export ERRORS_FOUND_TYPESCRIPT_STANDARD # Workaround SC2034
|
||||
ERRORS_FOUND_TYPESCRIPT_ES=0 # Count of errors found
|
||||
export ERRORS_FOUND_TYPESCRIPT_ES # Workaround SC2034
|
||||
ERRORS_FOUND_XML=0 # Count of errors found
|
||||
export ERRORS_FOUND_XML # Workaround SC2034
|
||||
ERRORS_FOUND_YML=0 # Count of errors found
|
||||
export ERRORS_FOUND_YML # Workaround SC2034
|
||||
|
||||
################################################################################
|
||||
########################## FUNCTIONS BELOW #####################################
|
||||
|
@ -582,9 +616,9 @@ DetectCloudFormationFile() {
|
|||
return 0
|
||||
fi
|
||||
|
||||
##########################################
|
||||
# No identifiers of a CFN template found #
|
||||
##########################################
|
||||
#####################################################
|
||||
# No identifiers of a CLOUDFORMATION template found #
|
||||
#####################################################
|
||||
return 1
|
||||
}
|
||||
################################################################################
|
||||
|
@ -898,12 +932,12 @@ CallStatusAPI() {
|
|||
fi
|
||||
}
|
||||
################################################################################
|
||||
#### Function Footer ###########################################################
|
||||
Footer() {
|
||||
#### Function Reports ##########################################################
|
||||
Reports() {
|
||||
echo ""
|
||||
echo "----------------------------------------------"
|
||||
echo "----------------------------------------------"
|
||||
echo "The script has completed"
|
||||
echo "Generated reports:"
|
||||
echo "----------------------------------------------"
|
||||
echo "----------------------------------------------"
|
||||
echo ""
|
||||
|
@ -915,6 +949,25 @@ Footer() {
|
|||
echo "Reports generated in folder ${REPORT_OUTPUT_FOLDER}"
|
||||
fi
|
||||
|
||||
################################
|
||||
# Prints for warnings if found #
|
||||
################################
|
||||
for TEST in "${WARNING_ARRAY_TEST[@]}"; do
|
||||
echo -e "${NC}${F[Y]}WARN!${NC} Expected file to compare with was not found for ${TEST}${NC}"
|
||||
done
|
||||
|
||||
}
|
||||
################################################################################
|
||||
#### Function Footer ###########################################################
|
||||
Footer() {
|
||||
echo ""
|
||||
echo "----------------------------------------------"
|
||||
echo "----------------------------------------------"
|
||||
echo "The script has completed"
|
||||
echo "----------------------------------------------"
|
||||
echo "----------------------------------------------"
|
||||
echo ""
|
||||
|
||||
####################################################
|
||||
# Need to clean up the lanuage array of duplicates #
|
||||
####################################################
|
||||
|
@ -943,81 +996,47 @@ Footer() {
|
|||
# Create status API for Failed language #
|
||||
#########################################
|
||||
CallStatusAPI "${LANGUAGE}" "error"
|
||||
else
|
||||
######################################
|
||||
# Check if we validated the langauge #
|
||||
######################################
|
||||
elif [ "${!ERROR_COUNTER}" -eq 0 ] && [[ "${UNIQUE_LINTED_ARRAY[*]}" =~ ${LANGUAGE} ]]; then
|
||||
# No errors found when linting the language
|
||||
######################################
|
||||
# Check if we validated the langauge #
|
||||
######################################
|
||||
if [[ "${UNIQUE_LINTED_ARRAY[*]}" =~ ${LANGUAGE} ]]; then
|
||||
CallStatusAPI "${LANGUAGE}" "success"
|
||||
fi
|
||||
CallStatusAPI "${LANGUAGE}" "success"
|
||||
fi
|
||||
done
|
||||
|
||||
################################
|
||||
# Prints for warnings if found #
|
||||
################################
|
||||
for TEST in "${WARNING_ARRAY_TEST[@]}"; do
|
||||
echo -e "${NC}${F[Y]}WARN!${NC} Expected file to compare with was not found for ${TEST}${NC}"
|
||||
done
|
||||
|
||||
##################################
|
||||
# Exit with 0 if errors disabled #
|
||||
##################################
|
||||
if [ "${DISABLE_ERRORS}" == "true" ]; then
|
||||
echo -e "${NC}${F[Y]}WARN!${NC} Exiting with exit code:[0] as:[DISABLE_ERRORS] was set to:[${DISABLE_ERRORS}]${NC}"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
###############################
|
||||
# Exit with 1 if errors found #
|
||||
###############################
|
||||
elif [ "${ERRORS_FOUND_ANSIBLE}" -ne 0 ] ||
|
||||
[ "${ERRORS_FOUND_ARM}" -ne 0 ] ||
|
||||
[ "${ERRORS_FOUND_BASH}" -ne 0 ] ||
|
||||
[ "${ERRORS_FOUND_CFN}" -ne 0 ] ||
|
||||
[ "${ERRORS_FOUND_CLOJURE}" -ne 0 ] ||
|
||||
[ "${ERRORS_FOUND_COFFEESCRIPT}" -ne 0 ] ||
|
||||
[ "${ERRORS_FOUND_CSS}" -ne 0 ] ||
|
||||
[ "${ERRORS_FOUND_DART}" -ne 0 ] ||
|
||||
[ "${ERRORS_FOUND_DOCKER}" -ne 0 ] ||
|
||||
[ "${ERRORS_FOUND_ENV}" -ne 0 ] ||
|
||||
[ "${ERRORS_FOUND_GO}" -ne 0 ] ||
|
||||
[ "$ERRORS_FOUND_GROOVY" -ne 0 ] ||
|
||||
[ "${ERRORS_FOUND_HTML}" -ne 0 ] ||
|
||||
[ "${ERRORS_FOUND_JAVASCRIPT_ES}" -ne 0 ] ||
|
||||
[ "${ERRORS_FOUND_JAVASCRIPT_STANDARD}" -ne 0 ] ||
|
||||
[ "${ERRORS_FOUND_JSON}" -ne 0 ] ||
|
||||
[ "${ERRORS_FOUND_JSX}" -ne 0 ] ||
|
||||
[ "${ERRORS_FOUND_KOTLIN}" -ne 0 ] ||
|
||||
[ "${ERRORS_FOUND_MARKDOWN}" -ne 0 ] ||
|
||||
[ "${ERRORS_FOUND_OPENAPI}" -ne 0 ] ||
|
||||
[ "${ERRORS_FOUND_PERL}" -ne 0 ] ||
|
||||
[ "${ERRORS_FOUND_PHP}" -ne 0 ] ||
|
||||
[ "${ERRORS_FOUND_POWERSHELL}" -ne 0 ] ||
|
||||
[ "${ERRORS_FOUND_PROTOBUF}" -ne 0 ] ||
|
||||
[ "${ERRORS_FOUND_PYTHON}" -ne 0 ] ||
|
||||
[ "${ERRORS_FOUND_RAKU}" -ne 0 ] ||
|
||||
[ "${ERRORS_FOUND_RUBY}" -ne 0 ] ||
|
||||
[ "${ERRORS_FOUND_STATES}" -ne 0 ] ||
|
||||
[ "${ERRORS_FOUND_TERRAFORM}" -ne 0 ] ||
|
||||
[ "${ERRORS_FOUND_TSX}" -ne 0 ] ||
|
||||
[ "${ERRORS_FOUND_TYPESCRIPT_ES}" -ne 0 ] ||
|
||||
[ "${ERRORS_FOUND_TYPESCRIPT_STANDARD}" -ne 0 ] ||
|
||||
[ "${ERRORS_FOUND_XML}" -ne 0 ] ||
|
||||
[ "${ERRORS_FOUND_YML}" -ne 0 ]; then
|
||||
# Failed exit
|
||||
echo -e "${NC}${F[R]}Exiting with errors found!${NC}"
|
||||
exit 1
|
||||
else
|
||||
#################
|
||||
# Footer prints #
|
||||
#################
|
||||
echo ""
|
||||
echo -e "${NC}${F[G]}All file(s) linted successfully with no errors detected${NC}"
|
||||
echo "----------------------------------------------"
|
||||
echo ""
|
||||
# Successful exit
|
||||
exit 0
|
||||
fi
|
||||
# Loop through all languages
|
||||
for LANGUAGE in "${LANGUAGE_ARRAY[@]}"; do
|
||||
# build the variable
|
||||
ERRORS_FOUND_LANGUAGE="ERRORS_FOUND_${LANGUAGE}"
|
||||
# Check if error was found
|
||||
if [ "${!ERRORS_FOUND_LANGUAGE}" -ne 0 ]; then
|
||||
# Failed exit
|
||||
echo -e "${NC}${F[R]}Exiting with errors found!${NC}"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
########################
|
||||
# Footer prints Exit 0 #
|
||||
########################
|
||||
echo ""
|
||||
echo -e "${NC}${F[G]}All file(s) linted successfully with no errors detected${NC}"
|
||||
echo "----------------------------------------------"
|
||||
echo ""
|
||||
# Successful exit
|
||||
exit 0
|
||||
}
|
||||
|
||||
################################################################################
|
||||
|
@ -1085,8 +1104,8 @@ GetLinterRules "POWERSHELL"
|
|||
GetLinterRules "ARM"
|
||||
# Get CSS rules
|
||||
GetLinterRules "CSS"
|
||||
# Get CFN rules
|
||||
GetLinterRules "CFN"
|
||||
# Get CLOUDFORMATION rules
|
||||
GetLinterRules "CLOUDFORMATION"
|
||||
# Get DART rules
|
||||
GetLinterRules "DART"
|
||||
# Get HTML rules
|
||||
|
@ -1195,15 +1214,35 @@ if [ "${VALIDATE_PYTHON}" == "true" ]; then
|
|||
LintCodebase "PYTHON" "pylint" "pylint --rcfile ${PYTHON_LINTER_RULES}" ".*\.\(py\)\$" "${FILE_ARRAY_PYTHON[@]}"
|
||||
fi
|
||||
|
||||
###############
|
||||
# CFN LINTING #
|
||||
###############
|
||||
if [ "${VALIDATE_CFN}" == "true" ]; then
|
||||
##########################
|
||||
# CLOUDFORMATION LINTING #
|
||||
##########################
|
||||
if [ "${VALIDATE_CLOUDFORMATION}" == "true" ]; then
|
||||
# If we are validating all codebase we need to build file list because not every yml/json file is an CLOUDFORMATION file
|
||||
if [ "${VALIDATE_ALL_CODEBASE}" == "true" ]; then
|
||||
###############################################################################
|
||||
# Set the file seperator to newline to allow for grabbing objects with spaces #
|
||||
###############################################################################
|
||||
IFS=$'\n'
|
||||
|
||||
mapfile -t LIST_FILES < <(find "${GITHUB_WORKSPACE}" -type f -regex ".*\.\(yml\|yaml\|json\)\$" 2>&1)
|
||||
for FILE in "${LIST_FILES[@]}"; do
|
||||
if DetectCloudFormationFile "${FILE}"; then
|
||||
FILE_ARRAY_CLOUDFORMATION+=("${FILE}")
|
||||
fi
|
||||
done
|
||||
|
||||
###########################
|
||||
# Set IFS back to default #
|
||||
###########################
|
||||
IFS="${DEFAULT_IFS}"
|
||||
fi
|
||||
|
||||
#################################
|
||||
# Lint the CloudFormation files #
|
||||
#################################
|
||||
# LintCodebase "FILE_TYPE" "LINTER_NAME" "LINTER_CMD" "FILE_TYPES_REGEX" "FILE_ARRAY"
|
||||
LintCodebase "CFN" "cfn-lint" "cfn-lint --config-file ${CFN_LINTER_RULES}" ".*\.\(json\|yml\|yaml\)\$" "${FILE_ARRAY_CFN[@]}"
|
||||
LintCodebase "CLOUDFORMATION" "cfn-lint" "cfn-lint --config-file ${CLOUDFORMATION_LINTER_RULES}" "disabledfileext" "${FILE_ARRAY_CLOUDFORMATION[@]}"
|
||||
fi
|
||||
|
||||
################
|
||||
|
@ -1437,7 +1476,7 @@ if [ "${VALIDATE_DART}" == "true" ]; then
|
|||
# Lint the Dart files #
|
||||
#######################
|
||||
# LintCodebase "FILE_TYPE" "LINTER_NAME" "LINTER_CMD" "FILE_TYPES_REGEX" "FILE_ARRAY"
|
||||
LintCodebase "DART" "dart" "pub get || true && dartanalyzer --fatal-infos --fatal-warnings --options ${DART_LINTER_RULES}" ".*\.\(dart\)\$" "${FILE_ARRAY_DART[@]}"
|
||||
LintCodebase "DART" "dart" "dartanalyzer --fatal-infos --fatal-warnings --options ${DART_LINTER_RULES}" ".*\.\(dart\)\$" "${FILE_ARRAY_DART[@]}"
|
||||
fi
|
||||
|
||||
##################
|
||||
|
@ -1497,11 +1536,31 @@ fi
|
|||
# ARM Template LINTING #
|
||||
########################
|
||||
if [ "${VALIDATE_ARM}" == "true" ]; then
|
||||
# If we are validating all codebase we need to build file list because not every json file is an ARM file
|
||||
if [ "${VALIDATE_ALL_CODEBASE}" == "true" ]; then
|
||||
###############################################################################
|
||||
# Set the file seperator to newline to allow for grabbing objects with spaces #
|
||||
###############################################################################
|
||||
IFS=$'\n'
|
||||
|
||||
mapfile -t LIST_FILES < <(find "${GITHUB_WORKSPACE}" -type f -regex ".*\.\(json\)\$" 2>&1)
|
||||
for FILE in "${LIST_FILES[@]}"; do
|
||||
if DetectARMFile "${FILE}"; then
|
||||
FILE_ARRAY_ARM+=("${FILE}")
|
||||
fi
|
||||
done
|
||||
|
||||
###########################
|
||||
# Set IFS back to default #
|
||||
###########################
|
||||
IFS="${DEFAULT_IFS}"
|
||||
fi
|
||||
|
||||
###############################
|
||||
# Lint the ARM Template files #
|
||||
###############################
|
||||
# LintCodebase "FILE_TYPE" "LINTER_NAME" "LINTER_CMD" "FILE_TYPES_REGEX" "FILE_ARRAY"
|
||||
LintCodebase "ARM" "arm-ttk" "Import-Module ${ARM_TTK_PSD1} ; \${config} = \$(Import-PowerShellDataFile -Path ${ARM_LINTER_RULES}) ; Test-AzTemplate @config -TemplatePath" ".*\.\(json\)\$" "${FILE_ARRAY_ARM[@]}"
|
||||
LintCodebase "ARM" "arm-ttk" "Import-Module ${ARM_TTK_PSD1} ; \${config} = \$(Import-PowerShellDataFile -Path ${ARM_LINTER_RULES}) ; Test-AzTemplate @config -TemplatePath" "disabledfileext" "${FILE_ARRAY_ARM[@]}"
|
||||
fi
|
||||
|
||||
###################
|
||||
|
@ -1553,12 +1612,37 @@ fi
|
|||
# AWS STATES LINTING #
|
||||
######################
|
||||
if [ "${VALIDATE_STATES}" == "true" ]; then
|
||||
# If we are validating all codebase we need to build file list because not every json file is an aws states file
|
||||
if [ "${VALIDATE_ALL_CODEBASE}" == "true" ]; then
|
||||
###############################################################################
|
||||
# Set the file seperator to newline to allow for grabbing objects with spaces #
|
||||
###############################################################################
|
||||
IFS=$'\n'
|
||||
|
||||
mapfile -t LIST_FILES < <(find "${GITHUB_WORKSPACE}" -type f -regex ".*\.\(json\)\$" 2>&1)
|
||||
for FILE in "${LIST_FILES[@]}"; do
|
||||
if DetectAWSStatesFIle "${FILE}"; then
|
||||
FILE_ARRAY_STATES+=("${FILE}")
|
||||
fi
|
||||
done
|
||||
|
||||
###########################
|
||||
# Set IFS back to default #
|
||||
###########################
|
||||
IFS="${DEFAULT_IFS}"
|
||||
fi
|
||||
|
||||
#########################
|
||||
# Lint the STATES files #
|
||||
#########################
|
||||
LintCodebase "STATES" "asl-validator" "asl-validator --json-path" ".*\.\(json\)\$" "${FILE_ARRAY_STATES[@]}"
|
||||
LintCodebase "STATES" "asl-validator" "asl-validator --json-path" "disabledfileext" "${FILE_ARRAY_STATES[@]}"
|
||||
fi
|
||||
|
||||
###########
|
||||
# Reports #
|
||||
###########
|
||||
Reports
|
||||
|
||||
##########
|
||||
# Footer #
|
||||
##########
|
||||
|
|
|
@ -46,544 +46,51 @@ function GetValidationInfo() {
|
|||
################################
|
||||
# Convert strings to lowercase #
|
||||
################################
|
||||
VALIDATE_ANSIBLE="${VALIDATE_ANSIBLE,,}"
|
||||
VALIDATE_ARM="${VALIDATE_ARM,,}"
|
||||
VALIDATE_BASH="${VALIDATE_BASH,,}"
|
||||
VALIDATE_CLOJURE="${VALIDATE_CLOJURE,,}"
|
||||
VALIDATE_COFFEE="${VALIDATE_COFFEE,,}"
|
||||
VALIDATE_CSS="${VALIDATE_CSS,,}"
|
||||
VALIDATE_DART="${VALIDATE_DART,,}"
|
||||
VALIDATE_DOCKER="${VALIDATE_DOCKER,,}"
|
||||
VALIDATE_EDITORCONFIG="${VALIDATE_EDITORCONFIG,,}"
|
||||
VALIDATE_ENV="${VALIDATE_ENV,,}"
|
||||
VALIDATE_GO="${VALIDATE_GO,,}"
|
||||
VALIDATE_GROOVY="${VALIDATE_GROOVY,,}"
|
||||
VALIDATE_HTML="${VALIDATE_HTML,,}"
|
||||
VALIDATE_JAVASCRIPT_ES="${VALIDATE_JAVASCRIPT_ES,,}"
|
||||
VALIDATE_JAVASCRIPT_STANDARD="${VALIDATE_JAVASCRIPT_STANDARD,,}"
|
||||
VALIDATE_JSON="${VALIDATE_JSON,,}"
|
||||
VALIDATE_JSX="${VALIDATE_JSX,,}"
|
||||
VALIDATE_KOTLIN="${VALIDATE_KOTLIN,,}"
|
||||
VALIDATE_MARKDOWN="${VALIDATE_MARKDOWN,,}"
|
||||
VALIDATE_OPENAPI="${VALIDATE_OPENAPI,,}"
|
||||
VALIDATE_PERL="${VALIDATE_PERL,,}"
|
||||
VALIDATE_PHP="${VALIDATE_PHP,,}"
|
||||
VALIDATE_POWERSHELL="${VALIDATE_POWERSHELL,,}"
|
||||
VALIDATE_PROTOBUF="${VALIDATE_PROTOBUF,,}"
|
||||
VALIDATE_PYTHON="${VALIDATE_PYTHON,,}"
|
||||
VALIDATE_RAKU="${VALIDATE_RAKU,,}"
|
||||
VALIDATE_RUBY="${VALIDATE_RUBY,,}"
|
||||
VALIDATE_STATES="${VALIDATE_STATES,,}"
|
||||
VALIDATE_TERRAFORM="${VALIDATE_TERRAFORM,,}"
|
||||
VALIDATE_TSX="${VALIDATE_TSX,,}"
|
||||
VALIDATE_TYPESCRIPT_ES="${VALIDATE_TYPESCRIPT_ES,,}"
|
||||
VALIDATE_TYPESCRIPT_STANDARD="${VALIDATE_TYPESCRIPT_STANDARD,,}"
|
||||
VALIDATE_YAML="${VALIDATE_YAML,,}"
|
||||
VALIDATE_XML="${VALIDATE_XML,,}"
|
||||
|
||||
# Loop through all languages
|
||||
for LANGUAGE in "${LANGUAGE_ARRAY[@]}"; do
|
||||
# build the variable
|
||||
VALIDATE_LANGUAGE="VALIDATE_${LANGUAGE}"
|
||||
# Set the value of the var to lowercase
|
||||
eval "${VALIDATE_LANGUAGE}=${!VALIDATE_LANGUAGE,,}"
|
||||
done
|
||||
|
||||
|
||||
################################################
|
||||
# Determine if any linters were explicitly set #
|
||||
################################################
|
||||
ANY_SET="false"
|
||||
if [[ -n ${VALIDATE_ANSIBLE} || -n \
|
||||
${VALIDATE_ARM} || -n \
|
||||
${VALIDATE_BASH} || -n \
|
||||
${VALIDATE_CLOJURE} || -n \
|
||||
${VALIDATE_COFFEE} || -n \
|
||||
${VALIDATE_CSS} || -n \
|
||||
${VALIDATE_DART} || -n \
|
||||
${VALIDATE_DOCKER} || -n \
|
||||
${VALIDATE_EDITORCONFIG} || -n \
|
||||
${VALIDATE_ENV} || -n \
|
||||
${VALIDATE_GO} || -n \
|
||||
${VALIDATE_GROOVY} || -n \
|
||||
${VALIDATE_HTML} || -n \
|
||||
${VALIDATE_JAVASCRIPT_ES} || -n \
|
||||
${VALIDATE_JAVASCRIPT_STANDARD} || -n \
|
||||
${VALIDATE_JSON} || -n \
|
||||
${VALIDATE_KOTLIN} || -n \
|
||||
${VALIDATE_MARKDOWN} || -n \
|
||||
${VALIDATE_OPENAPI} || -n \
|
||||
${VALIDATE_PERL} || -n \
|
||||
${VALIDATE_PHP} || -n \
|
||||
${VALIDATE_POWERSHELL} || -n \
|
||||
${VALIDATE_PROTOBUF} || -n \
|
||||
${VALIDATE_PYTHON} || -n \
|
||||
${VALIDATE_RAKU} || -n \
|
||||
${VALIDATE_RUBY} || -n \
|
||||
${VALIDATE_TERRAFORM} || -n \
|
||||
${VALIDATE_TYPESCRIPT_ES} || -n \
|
||||
${VALIDATE_TYPESCRIPT_STANDARD} || -n \
|
||||
${VALIDATE_XML} || -n \
|
||||
${VALIDATE_YAML} ]]; then
|
||||
ANY_SET="true"
|
||||
fi
|
||||
|
||||
####################################
|
||||
# Validate if we should check YAML #
|
||||
####################################
|
||||
if [[ ${ANY_SET} == "true" ]]; then
|
||||
# Some linter flags were set - only run those set to true
|
||||
if [[ -z ${VALIDATE_YAML} ]]; then
|
||||
# YAML flag was not set - default to false
|
||||
VALIDATE_YAML="false"
|
||||
# Loop through all languages
|
||||
for LANGUAGE in "${LANGUAGE_ARRAY[@]}"; do
|
||||
# build the variable
|
||||
VALIDATE_LANGUAGE="VALIDATE_${LANGUAGE}"
|
||||
# Check to see if the variable was set
|
||||
if [ -n "${!VALIDATE_LANGUAGE}" ]; then
|
||||
# It was set, need to set flag
|
||||
ANY_SET="true"
|
||||
fi
|
||||
else
|
||||
# No linter flags were set - default all to true
|
||||
VALIDATE_YAML="true"
|
||||
fi
|
||||
done
|
||||
|
||||
####################################
|
||||
# Validate if we should check JSON #
|
||||
####################################
|
||||
if [[ ${ANY_SET} == "true" ]]; then
|
||||
# Some linter flags were set - only run those set to true
|
||||
if [[ -z ${VALIDATE_JSON} ]]; then
|
||||
# JSON flag was not set - default to false
|
||||
VALIDATE_JSON="false"
|
||||
fi
|
||||
else
|
||||
# No linter flags were set - default all to true
|
||||
VALIDATE_JSON="true"
|
||||
fi
|
||||
|
||||
###################################
|
||||
# Validate if we should check XML #
|
||||
###################################
|
||||
if [[ ${ANY_SET} == "true" ]]; then
|
||||
# Some linter flags were set - only run those set to true
|
||||
if [[ -z ${VALIDATE_XML} ]]; then
|
||||
# XML flag was not set - default to false
|
||||
VALIDATE_XML="false"
|
||||
fi
|
||||
else
|
||||
# No linter flags were set - default all to true
|
||||
VALIDATE_XML="true"
|
||||
fi
|
||||
|
||||
########################################
|
||||
# Validate if we should check MARKDOWN #
|
||||
########################################
|
||||
if [[ ${ANY_SET} == "true" ]]; then
|
||||
# Some linter flags were set - only run those set to true
|
||||
if [[ -z ${VALIDATE_MARKDOWN} ]]; then
|
||||
# MD flag was not set - default to false
|
||||
VALIDATE_MARKDOWN="false"
|
||||
fi
|
||||
else
|
||||
# No linter flags were set - default all to true
|
||||
VALIDATE_MARKDOWN="true"
|
||||
fi
|
||||
|
||||
####################################
|
||||
# Validate if we should check BASH #
|
||||
####################################
|
||||
if [[ ${ANY_SET} == "true" ]]; then
|
||||
# Some linter flags were set - only run those set to true
|
||||
if [[ -z ${VALIDATE_BASH} ]]; then
|
||||
# BASH flag was not set - default to false
|
||||
VALIDATE_BASH="false"
|
||||
fi
|
||||
else
|
||||
# No linter flags were set - default all to true
|
||||
VALIDATE_BASH="true"
|
||||
fi
|
||||
|
||||
####################################
|
||||
# Validate if we should check PERL #
|
||||
####################################
|
||||
if [[ ${ANY_SET} == "true" ]]; then
|
||||
# Some linter flags were set - only run those set to true
|
||||
if [[ -z ${VALIDATE_PERL} ]]; then
|
||||
# PERL flag was not set - default to false
|
||||
VALIDATE_PERL="false"
|
||||
fi
|
||||
else
|
||||
# No linter flags were set - default all to true
|
||||
VALIDATE_PERL="true"
|
||||
fi
|
||||
|
||||
####################################
|
||||
# Validate if we should check RAKU #
|
||||
####################################
|
||||
if [[ ${ANY_SET} == "true" ]]; then
|
||||
# Some linter flags were set - only run those set to true
|
||||
if [[ -z ${VALIDATE_RAKU} ]]; then
|
||||
# RAKU flag was not set - default to false
|
||||
VALIDATE_RAKU="false"
|
||||
fi
|
||||
else
|
||||
# No linter flags were set - default all to true
|
||||
VALIDATE_RAKU="true"
|
||||
fi
|
||||
|
||||
####################################
|
||||
# Validate if we should check PHP #
|
||||
####################################
|
||||
if [[ ${ANY_SET} == "true" ]]; then
|
||||
# Some linter flags were set - only run those set to true
|
||||
if [[ -z ${VALIDATE_PHP} ]]; then
|
||||
# PHP flag was not set - default to false
|
||||
VALIDATE_PHP="false"
|
||||
fi
|
||||
else
|
||||
# No linter flags were set - default all to true
|
||||
VALIDATE_PHP="true"
|
||||
fi
|
||||
|
||||
######################################
|
||||
# Validate if we should check PYTHON #
|
||||
######################################
|
||||
if [[ ${ANY_SET} == "true" ]]; then
|
||||
# Some linter flags were set - only run those set to true
|
||||
if [[ -z ${VALIDATE_PYTHON} ]]; then
|
||||
# PYTHON flag was not set - default to false
|
||||
VALIDATE_PYTHON="false"
|
||||
fi
|
||||
else
|
||||
# No linter flags were set - default all to true
|
||||
VALIDATE_PYTHON="true"
|
||||
fi
|
||||
|
||||
####################################
|
||||
# Validate if we should check RUBY #
|
||||
####################################
|
||||
if [[ ${ANY_SET} == "true" ]]; then
|
||||
# Some linter flags were set - only run those set to true
|
||||
if [[ -z ${VALIDATE_RUBY} ]]; then
|
||||
# RUBY flag was not set - default to false
|
||||
VALIDATE_RUBY="false"
|
||||
fi
|
||||
else
|
||||
# No linter flags were set - default all to true
|
||||
VALIDATE_RUBY="true"
|
||||
fi
|
||||
|
||||
##########################################
|
||||
# Validate if we should check AWS States #
|
||||
##########################################
|
||||
if [[ ${ANY_SET} == "true" ]]; then
|
||||
# Some linter flags were set - only run those set to true
|
||||
if [[ -z ${VALIDATE_STATES} ]]; then
|
||||
# STATES flag was not set - default to false
|
||||
VALIDATE_STATES="false"
|
||||
fi
|
||||
else
|
||||
# No linter flags were set - default all to true
|
||||
VALIDATE_STATES="true"
|
||||
fi
|
||||
|
||||
######################################
|
||||
# Validate if we should check COFFEE #
|
||||
######################################
|
||||
if [[ ${ANY_SET} == "true" ]]; then
|
||||
# Some linter flags were set - only run those set to true
|
||||
if [[ -z ${VALIDATE_COFFEE} ]]; then
|
||||
# COFFEE flag was not set - default to false
|
||||
VALIDATE_COFFEE="false"
|
||||
fi
|
||||
else
|
||||
# No linter flags were set - default all to true
|
||||
VALIDATE_COFFEE="true"
|
||||
fi
|
||||
|
||||
#######################################
|
||||
# Validate if we should check ANSIBLE #
|
||||
#######################################
|
||||
if [[ ${ANY_SET} == "true" ]]; then
|
||||
# Some linter flags were set - only run those set to true
|
||||
if [[ -z ${VALIDATE_ANSIBLE} ]]; then
|
||||
# ANSIBLE flag was not set - default to false
|
||||
VALIDATE_ANSIBLE="false"
|
||||
fi
|
||||
else
|
||||
# No linter flags were set - default all to true
|
||||
VALIDATE_ANSIBLE="true"
|
||||
fi
|
||||
|
||||
#############################################
|
||||
# Validate if we should check JAVASCRIPT_ES #
|
||||
#############################################
|
||||
if [[ ${ANY_SET} == "true" ]]; then
|
||||
# Some linter flags were set - only run those set to true
|
||||
if [[ -z ${VALIDATE_JAVASCRIPT_ES} ]]; then
|
||||
# JAVASCRIPT_ES flag was not set - default to false
|
||||
VALIDATE_JAVASCRIPT_ES="false"
|
||||
fi
|
||||
else
|
||||
# No linter flags were set - default all to true
|
||||
VALIDATE_JAVASCRIPT_ES="true"
|
||||
fi
|
||||
|
||||
###################################################
|
||||
# Validate if we should check JAVASCRIPT_STANDARD #
|
||||
# Validate if we should check individual lanuages #
|
||||
###################################################
|
||||
if [[ ${ANY_SET} == "true" ]]; then
|
||||
# Some linter flags were set - only run those set to true
|
||||
if [[ -z ${VALIDATE_JAVASCRIPT_STANDARD} ]]; then
|
||||
# JAVASCRIPT_STANDARD flag was not set - default to false
|
||||
VALIDATE_JAVASCRIPT_STANDARD="false"
|
||||
# Loop through all languages
|
||||
for LANGUAGE in "${LANGUAGE_ARRAY[@]}"; do
|
||||
# build the variable
|
||||
VALIDATE_LANGUAGE="VALIDATE_${LANGUAGE}"
|
||||
# Check if ANY_SET was set
|
||||
if [[ ${ANY_SET} == "true" ]]; then
|
||||
# Check to see if the variable was set
|
||||
if [ -z "${!VALIDATE_LANGUAGE}" ]; then
|
||||
# Flag was not set, default to false
|
||||
eval "${VALIDATE_LANGUAGE}='false'"
|
||||
fi
|
||||
else
|
||||
# No linter flags were set - default all to true
|
||||
eval "${VALIDATE_LANGUAGE}='true'"
|
||||
fi
|
||||
else
|
||||
# No linter flags were set - default all to true
|
||||
VALIDATE_JAVASCRIPT_STANDARD="true"
|
||||
fi
|
||||
|
||||
#############################################
|
||||
# Validate if we should check JSX #
|
||||
#############################################
|
||||
if [[ ${ANY_SET} == "true" ]]; then
|
||||
# Some linter flags were set - only run those set to true
|
||||
if [[ -z ${VALIDATE_JSX} ]]; then
|
||||
# JSX flag was not set - default to false
|
||||
VALIDATE_JSX="false"
|
||||
fi
|
||||
else
|
||||
# No linter flags were set - default all to true
|
||||
VALIDATE_JSX="true"
|
||||
fi
|
||||
|
||||
#############################################
|
||||
# Validate if we should check TSX #
|
||||
#############################################
|
||||
if [[ ${ANY_SET} == "true" ]]; then
|
||||
# Some linter flags were set - only run those set to true
|
||||
if [[ -z ${VALIDATE_TSX} ]]; then
|
||||
# TSX flag was not set - default to false
|
||||
VALIDATE_TSX="false"
|
||||
fi
|
||||
else
|
||||
# No linter flags were set - default all to true
|
||||
VALIDATE_TSX="true"
|
||||
fi
|
||||
|
||||
#############################################
|
||||
# Validate if we should check TYPESCRIPT_ES #
|
||||
#############################################
|
||||
if [[ ${ANY_SET} == "true" ]]; then
|
||||
# Some linter flags were set - only run those set to true
|
||||
if [[ -z ${VALIDATE_TYPESCRIPT_ES} ]]; then
|
||||
# TYPESCRIPT_ES flag was not set - default to false
|
||||
VALIDATE_TYPESCRIPT_ES="false"
|
||||
fi
|
||||
else
|
||||
# No linter flags were set - default all to true
|
||||
VALIDATE_TYPESCRIPT_ES="true"
|
||||
fi
|
||||
|
||||
###################################################
|
||||
# Validate if we should check TYPESCRIPT_STANDARD #
|
||||
###################################################
|
||||
if [[ ${ANY_SET} == "true" ]]; then
|
||||
# Some linter flags were set - only run those set to true
|
||||
if [[ -z ${VALIDATE_TYPESCRIPT_STANDARD} ]]; then
|
||||
# TYPESCRIPT_STANDARD flag was not set - default to false
|
||||
VALIDATE_TYPESCRIPT_STANDARD="false"
|
||||
fi
|
||||
else
|
||||
# No linter flags were set - default all to true
|
||||
VALIDATE_TYPESCRIPT_STANDARD="true"
|
||||
fi
|
||||
|
||||
######################################
|
||||
# Validate if we should check DOCKER #
|
||||
######################################
|
||||
if [[ ${ANY_SET} == "true" ]]; then
|
||||
# Some linter flags were set - only run those set to true
|
||||
if [[ -z ${VALIDATE_DOCKER} ]]; then
|
||||
# DOCKER flag was not set - default to false
|
||||
VALIDATE_DOCKER="false"
|
||||
fi
|
||||
else
|
||||
# No linter flags were set - default all to true
|
||||
VALIDATE_DOCKER="true"
|
||||
fi
|
||||
|
||||
##################################
|
||||
# Validate if we should check GO #
|
||||
##################################
|
||||
if [[ ${ANY_SET} == "true" ]]; then
|
||||
# Some linter flags were set - only run those set to true
|
||||
if [[ -z ${VALIDATE_GO} ]]; then
|
||||
# GO flag was not set - default to false
|
||||
VALIDATE_GO="false"
|
||||
fi
|
||||
else
|
||||
# No linter flags were set - default all to true
|
||||
VALIDATE_GO="true"
|
||||
fi
|
||||
|
||||
#########################################
|
||||
# Validate if we should check TERRAFORM #
|
||||
#########################################
|
||||
if [[ ${ANY_SET} == "true" ]]; then
|
||||
# Some linter flags were set - only run those set to true
|
||||
if [[ -z ${VALIDATE_TERRAFORM} ]]; then
|
||||
# TERRAFORM flag was not set - default to false
|
||||
VALIDATE_TERRAFORM="false"
|
||||
fi
|
||||
else
|
||||
# No linter flags were set - default all to true
|
||||
VALIDATE_TERRAFORM="true"
|
||||
fi
|
||||
|
||||
#########################################
|
||||
# Validate if we should check POWERSHELL #
|
||||
#########################################
|
||||
if [[ ${ANY_SET} == "true" ]]; then
|
||||
# Some linter flags were set - only run those set to true
|
||||
if [[ -z ${VALIDATE_POWERSHELL} ]]; then
|
||||
# POWERSHELL flag was not set - default to false
|
||||
VALIDATE_POWERSHELL="false"
|
||||
fi
|
||||
else
|
||||
# No linter flags were set - default all to true
|
||||
VALIDATE_POWERSHELL="true"
|
||||
fi
|
||||
|
||||
###################################
|
||||
# Validate if we should check ARM #
|
||||
###################################
|
||||
if [[ "${ANY_SET}" == "true" ]]; then
|
||||
# Some linter flags were set - only run those set to true
|
||||
if [[ -z "${VALIDATE_ARM}" ]]; then
|
||||
# ARM flag was not set - default to false
|
||||
VALIDATE_ARM="false"
|
||||
fi
|
||||
else
|
||||
# No linter flags were set - default all to true
|
||||
VALIDATE_ARM="true"
|
||||
fi
|
||||
|
||||
###################################
|
||||
# Validate if we should check CSS #
|
||||
###################################
|
||||
if [[ ${ANY_SET} == "true" ]]; then
|
||||
# Some linter flags were set - only run those set to true
|
||||
if [[ -z ${VALIDATE_CSS} ]]; then
|
||||
# CSS flag was not set - default to false
|
||||
VALIDATE_CSS="false"
|
||||
fi
|
||||
else
|
||||
# No linter flags were set - default all to true
|
||||
VALIDATE_CSS="true"
|
||||
fi
|
||||
|
||||
###################################
|
||||
# Validate if we should check ENV #
|
||||
###################################
|
||||
if [[ ${ANY_SET} == "true" ]]; then
|
||||
# Some linter flags were set - only run those set to true
|
||||
if [[ -z ${VALIDATE_ENV} ]]; then
|
||||
# ENV flag was not set - default to false
|
||||
VALIDATE_ENV="false"
|
||||
fi
|
||||
else
|
||||
# No linter flags were set - default all to true
|
||||
VALIDATE_ENV="true"
|
||||
fi
|
||||
|
||||
######################################
|
||||
# Validate if we should check KOTLIN #
|
||||
######################################
|
||||
if [[ ${ANY_SET} == "true" ]]; then
|
||||
# Some linter flags were set - only run those set to true
|
||||
if [[ -z ${VALIDATE_KOTLIN} ]]; then
|
||||
# ENV flag was not set - default to false
|
||||
VALIDATE_KOTLIN="false"
|
||||
fi
|
||||
else
|
||||
# No linter flags were set - default all to true
|
||||
VALIDATE_KOTLIN="true"
|
||||
fi
|
||||
|
||||
####################################
|
||||
# Validate if we should check DART #
|
||||
####################################
|
||||
if [[ ${ANY_SET} == "true" ]]; then
|
||||
# Some linter flags were set - only run those set to true
|
||||
if [[ -z ${VALIDATE_DART} ]]; then
|
||||
# ENV flag was not set - default to false
|
||||
VALIDATE_DART="false"
|
||||
fi
|
||||
else
|
||||
# No linter flags were set - default all to true
|
||||
VALIDATE_DART="true"
|
||||
fi
|
||||
|
||||
#######################################
|
||||
# Validate if we should check OPENAPI #
|
||||
#######################################
|
||||
if [[ ${ANY_SET} == "true" ]]; then
|
||||
# Some linter flags were set - only run those set to true
|
||||
if [[ -z ${VALIDATE_OPENAPI} ]]; then
|
||||
# OPENAPI flag was not set - default to false
|
||||
VALIDATE_OPENAPI="false"
|
||||
fi
|
||||
else
|
||||
# No linter flags were set - default all to true
|
||||
VALIDATE_OPENAPI="true"
|
||||
fi
|
||||
|
||||
#######################################
|
||||
# Validate if we should check PROTOBUF #
|
||||
#######################################
|
||||
if [[ ${ANY_SET} == "true" ]]; then
|
||||
# Some linter flags were set - only run those set to true
|
||||
if [[ -z ${VALIDATE_PROTOBUF} ]]; then
|
||||
# PROTOBUF flag was not set - default to false
|
||||
VALIDATE_PROTOBUF="false"
|
||||
fi
|
||||
else
|
||||
# No linter flags were set - default all to true
|
||||
VALIDATE_PROTOBUF="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
|
||||
|
||||
############################################
|
||||
# Validate if we should check editorconfig #
|
||||
############################################
|
||||
if [[ ${ANY_SET} == "true" ]]; then
|
||||
# Some linter flags were set - only run those set to true
|
||||
if [[ -z ${VALIDATE_EDITORCONFIG} ]]; then
|
||||
# EDITORCONFIG flag was not set - default to false
|
||||
VALIDATE_EDITORCONFIG="false"
|
||||
fi
|
||||
else
|
||||
# No linter flags were set
|
||||
# special case checking for .editorconfig
|
||||
if [ -f "${GITHUB_WORKSPACE}/.editorconfig" ]; then
|
||||
VALIDATE_EDITORCONFIG="true"
|
||||
fi
|
||||
fi
|
||||
|
||||
####################################
|
||||
# Validate if we should check HTML #
|
||||
####################################
|
||||
if [[ ${ANY_SET} == "true" ]]; then
|
||||
# Some linter flags were set - only run those set to true
|
||||
if [[ -z ${VALIDATE_HTML} ]]; then
|
||||
# HTML flag was not set - default to false
|
||||
VALIDATE_HTML="false"
|
||||
fi
|
||||
else
|
||||
# No linter flags were set - default all to true
|
||||
VALIDATE_HTML="true"
|
||||
fi
|
||||
done
|
||||
|
||||
######################################
|
||||
# Validate if we should check GROOVY #
|
||||
|
@ -602,166 +109,18 @@ function GetValidationInfo() {
|
|||
#######################################
|
||||
# Print which linters we are enabling #
|
||||
#######################################
|
||||
if [[ ${VALIDATE_YAML} == "true" ]]; then
|
||||
PRINT_ARRAY+=("- Validating [YAML] files in code base...")
|
||||
else
|
||||
PRINT_ARRAY+=("- Excluding [YAML] files in code base...")
|
||||
fi
|
||||
if [[ ${VALIDATE_JSON} == "true" ]]; then
|
||||
PRINT_ARRAY+=("- Validating [JSON] files in code base...")
|
||||
else
|
||||
PRINT_ARRAY+=("- Excluding [JSON] files in code base...")
|
||||
fi
|
||||
if [[ ${VALIDATE_XML} == "true" ]]; then
|
||||
PRINT_ARRAY+=("- Validating [XML] files in code base...")
|
||||
else
|
||||
PRINT_ARRAY+=("- Excluding [XML] files in code base...")
|
||||
fi
|
||||
if [[ ${VALIDATE_MARKDOWN} == "true" ]]; then
|
||||
PRINT_ARRAY+=("- Validating [MARKDOWN] files in code base...")
|
||||
else
|
||||
PRINT_ARRAY+=("- Excluding [MARKDOWN] files in code base...")
|
||||
fi
|
||||
if [[ ${VALIDATE_BASH} == "true" ]]; then
|
||||
PRINT_ARRAY+=("- Validating [BASH] files in code base...")
|
||||
else
|
||||
PRINT_ARRAY+=("- Excluding [BASH] files in code base...")
|
||||
fi
|
||||
if [[ ${VALIDATE_PERL} == "true" ]]; then
|
||||
PRINT_ARRAY+=("- Validating [PERL] files in code base...")
|
||||
else
|
||||
PRINT_ARRAY+=("- Excluding [PERL] files in code base...")
|
||||
fi
|
||||
if [[ ${VALIDATE_RAKU} == "true" ]]; then
|
||||
PRINT_ARRAY+=("- Validating [RAKU] files in code base...")
|
||||
else
|
||||
PRINT_ARRAY+=("- Excluding [RAKU] files in code base...")
|
||||
fi
|
||||
if [[ ${VALIDATE_PHP} == "true" ]]; then
|
||||
PRINT_ARRAY+=("- Validating [PHP] files in code base...")
|
||||
else
|
||||
PRINT_ARRAY+=("- Excluding [PHP] files in code base...")
|
||||
fi
|
||||
if [[ ${VALIDATE_PYTHON} == "true" ]]; then
|
||||
PRINT_ARRAY+=("- Validating [PYTHON] files in code base...")
|
||||
else
|
||||
PRINT_ARRAY+=("- Excluding [PYTHON] files in code base...")
|
||||
fi
|
||||
if [[ ${VALIDATE_RUBY} == "true" ]]; then
|
||||
PRINT_ARRAY+=("- Validating [RUBY] files in code base...")
|
||||
else
|
||||
PRINT_ARRAY+=("- Excluding [RUBY] files in code base...")
|
||||
fi
|
||||
if [[ ${VALIDATE_COFFEE} == "true" ]]; then
|
||||
PRINT_ARRAY+=("- Validating [COFFEE] files in code base...")
|
||||
else
|
||||
PRINT_ARRAY+=("- Excluding [COFFEE] files in code base...")
|
||||
fi
|
||||
if [[ ${VALIDATE_ANSIBLE} == "true" ]]; then
|
||||
PRINT_ARRAY+=("- Validating [ANSIBLE] files in code base...")
|
||||
else
|
||||
PRINT_ARRAY+=("- Excluding [ANSIBLE] files in code base...")
|
||||
fi
|
||||
if [[ ${VALIDATE_JAVASCRIPT_ES} == "true" ]]; then
|
||||
PRINT_ARRAY+=("- Validating [JAVASCRIPT(eslint)] files in code base...")
|
||||
else
|
||||
PRINT_ARRAY+=("- Excluding [JAVASCRIPT(eslint)] files in code base...")
|
||||
fi
|
||||
if [[ ${VALIDATE_JAVASCRIPT_STANDARD} == "true" ]]; then
|
||||
PRINT_ARRAY+=("- Validating [JAVASCRIPT(standard)] files in code base...")
|
||||
else
|
||||
PRINT_ARRAY+=("- Excluding [JAVASCRIPT(standard)] files in code base...")
|
||||
fi
|
||||
if [[ ${VALIDATE_TYPESCRIPT_ES} == "true" ]]; then
|
||||
PRINT_ARRAY+=("- Validating [TYPESCRIPT(eslint)] files in code base...")
|
||||
else
|
||||
PRINT_ARRAY+=("- Excluding [TYPESCRIPT(eslint)] files in code base...")
|
||||
fi
|
||||
if [[ ${VALIDATE_TYPESCRIPT_STANDARD} == "true" ]]; then
|
||||
PRINT_ARRAY+=("- Validating [TYPESCRIPT(standard)] files in code base...")
|
||||
else
|
||||
PRINT_ARRAY+=("- Excluding [TYPESCRIPT(standard)] files in code base...")
|
||||
fi
|
||||
if [[ ${VALIDATE_DOCKER} == "true" ]]; then
|
||||
PRINT_ARRAY+=("- Validating [DOCKER] files in code base...")
|
||||
else
|
||||
PRINT_ARRAY+=("- Excluding [DOCKER] files in code base...")
|
||||
fi
|
||||
if [[ ${VALIDATE_GO} == "true" ]]; then
|
||||
PRINT_ARRAY+=("- Validating [GOLANG] files in code base...")
|
||||
else
|
||||
PRINT_ARRAY+=("- Excluding [GOLANG] files in code base...")
|
||||
fi
|
||||
if [[ ${VALIDATE_TERRAFORM} == "true" ]]; then
|
||||
PRINT_ARRAY+=("- Validating [TERRAFORM] files in code base...")
|
||||
else
|
||||
PRINT_ARRAY+=("- Excluding [TERRAFORM] files in code base...")
|
||||
fi
|
||||
if [[ ${VALIDATE_POWERSHELL} == "true" ]]; then
|
||||
PRINT_ARRAY+=("- Validating [POWERSHELL] files in code base...")
|
||||
else
|
||||
PRINT_ARRAY+=("- Excluding [POWERSHELL] files in code base...")
|
||||
fi
|
||||
if [[ ${VALIDATE_ARM} == "true" ]]; then
|
||||
PRINT_ARRAY+=("- Validating [ARM] files in code base...")
|
||||
else
|
||||
PRINT_ARRAY+=("- Excluding [ARM] files in code base...")
|
||||
fi
|
||||
if [[ ${VALIDATE_CSS} == "true" ]]; then
|
||||
PRINT_ARRAY+=("- Validating [CSS] files in code base...")
|
||||
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
|
||||
PRINT_ARRAY+=("- Excluding [ENV] files in code base...")
|
||||
fi
|
||||
if [[ ${VALIDATE_KOTLIN} == "true" ]]; then
|
||||
PRINT_ARRAY+=("- Validating [KOTLIN] files in code base...")
|
||||
else
|
||||
PRINT_ARRAY+=("- Excluding [KOTLIN] files in code base...")
|
||||
fi
|
||||
if [[ ${VALIDATE_OPENAPI} == "true" ]]; then
|
||||
PRINT_ARRAY+=("- Validating [OPENAPI] files in code base...")
|
||||
else
|
||||
PRINT_ARRAY+=("- Excluding [OPENAPI] files in code base...")
|
||||
fi
|
||||
if [[ ${VALIDATE_PROTOBUF} == "true" ]]; then
|
||||
PRINT_ARRAY+=("- Validating [PROTOBUF] files in code base...")
|
||||
else
|
||||
PRINT_ARRAY+=("- Excluding [PROTOBUF] files in code base...")
|
||||
fi
|
||||
if [[ ${VALIDATE_DART} == "true" ]]; then
|
||||
PRINT_ARRAY+=("- Validating [DART] files in code base...")
|
||||
else
|
||||
PRINT_ARRAY+=("- Excluding [DART] files in code base...")
|
||||
fi
|
||||
if [[ ${VALIDATE_EDITORCONFIG} == "true" ]]; then
|
||||
PRINT_ARRAY+=("- Validating [EDITORCONFIG] files in code base...")
|
||||
else
|
||||
PRINT_ARRAY+=("- Excluding [EDITORCONFIG] files in code base...")
|
||||
fi
|
||||
if [[ ${VALIDATE_HTML} == "true" ]]; then
|
||||
PRINT_ARRAY+=("- Validating [HTML] files in code base...")
|
||||
else
|
||||
PRINT_ARRAY+=("- Excluding [HTML] files in code base...")
|
||||
fi
|
||||
if [[ $VALIDATE_GROOVY == "true" ]]; then
|
||||
PRINT_ARRAY+=("- Validating [GROOVY] files in code base...")
|
||||
else
|
||||
PRINT_ARRAY+=("- Excluding [GROOVY] files in code base...")
|
||||
fi
|
||||
if [[ ${VALIDATE_STATES} == "true" ]]; then
|
||||
PRINT_ARRAY+=("- Validating [AWS STATES] files in code base...")
|
||||
else
|
||||
PRINT_ARRAY+=("- Excluding [AWS STATES] files in code base...")
|
||||
fi
|
||||
# Loop through all languages
|
||||
for LANGUAGE in "${LANGUAGE_ARRAY[@]}"; do
|
||||
# build the variable
|
||||
VALIDATE_LANGUAGE="VALIDATE_${LANGUAGE}"
|
||||
if [[ ${!VALIDATE_LANGUAGE} == "true" ]]; then
|
||||
# We need to validate
|
||||
PRINT_ARRAY+=("- Validating [$LANGUAGE] files in code base...")
|
||||
else
|
||||
# We are skipping the language
|
||||
PRINT_ARRAY+=("- Excluding [$LANGUAGE] files in code base...")
|
||||
fi
|
||||
done
|
||||
|
||||
##############################
|
||||
# Validate Ansible Directory #
|
||||
|
|
|
@ -557,7 +557,7 @@ function RunTestCases() {
|
|||
TestCodebase "ANSIBLE" "ansible-lint" "ansible-lint -v -c ${ANSIBLE_LINTER_RULES}" ".*\.\(yml\|yaml\)\$" "ansible"
|
||||
TestCodebase "ARM" "arm-ttk" "Import-Module ${ARM_TTK_PSD1} ; \${config} = \$(Import-PowerShellDataFile -Path ${ARM_LINTER_RULES}) ; Test-AzTemplate @config -TemplatePath" ".*\.\(json\)\$" "arm"
|
||||
TestCodebase "BASH" "shellcheck" "shellcheck --color" ".*\.\(sh\|bash\|dash\|ksh\)\$" "shell"
|
||||
TestCodebase "CFN" "cfn-lint" "cfn-lint --config-file ${CFN_LINTER_RULES}" ".*\.\(json\|yml\|yaml\)\$" "cfn"
|
||||
TestCodebase "CLOUDFORMATION" "cfn-lint" "cfn-lint --config-file ${CLOUDFORMATION_LINTER_RULES}" ".*\.\(json\|yml\|yaml\)\$" "cloudformation"
|
||||
TestCodebase "CLOJURE" "clj-kondo" "clj-kondo --config ${CLOJURE_LINTER_RULES} --lint" ".*\.\(clj\|cljs\|cljc\|edn\)\$" "clojure"
|
||||
TestCodebase "COFFEESCRIPT" "coffeelint" "coffeelint -f ${COFFEESCRIPT_LINTER_RULES}" ".*\.\(coffee\)\$" "coffeescript"
|
||||
TestCodebase "CSS" "stylelint" "stylelint --config ${CSS_LINTER_RULES}" ".*\.\(css\)\$" "css"
|
||||
|
|
545
package-lock.json
generated
545
package-lock.json
generated
|
@ -1,545 +0,0 @@
|
|||
{
|
||||
"requires": true,
|
||||
"lockfileVersion": 1,
|
||||
"dependencies": {
|
||||
"@types/color-name": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
|
||||
"integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ=="
|
||||
},
|
||||
"ajv": {
|
||||
"version": "6.12.3",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz",
|
||||
"integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==",
|
||||
"requires": {
|
||||
"fast-deep-equal": "^3.1.1",
|
||||
"fast-json-stable-stringify": "^2.0.0",
|
||||
"json-schema-traverse": "^0.4.1",
|
||||
"uri-js": "^4.2.2"
|
||||
}
|
||||
},
|
||||
"ansi-styles": {
|
||||
"version": "4.2.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
|
||||
"integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
|
||||
"requires": {
|
||||
"@types/color-name": "^1.1.1",
|
||||
"color-convert": "^2.0.1"
|
||||
}
|
||||
},
|
||||
"asn1": {
|
||||
"version": "0.2.4",
|
||||
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
|
||||
"integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
|
||||
"requires": {
|
||||
"safer-buffer": "~2.1.0"
|
||||
}
|
||||
},
|
||||
"assert-plus": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
|
||||
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
|
||||
},
|
||||
"async": {
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz",
|
||||
"integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw=="
|
||||
},
|
||||
"asynckit": {
|
||||
"version": "0.4.0",
|
||||
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
|
||||
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
|
||||
},
|
||||
"aws-sign2": {
|
||||
"version": "0.7.0",
|
||||
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
|
||||
"integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
|
||||
},
|
||||
"aws4": {
|
||||
"version": "1.10.0",
|
||||
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz",
|
||||
"integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA=="
|
||||
},
|
||||
"balanced-match": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
||||
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
|
||||
},
|
||||
"bcrypt-pbkdf": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
|
||||
"integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
|
||||
"requires": {
|
||||
"tweetnacl": "^0.14.3"
|
||||
}
|
||||
},
|
||||
"brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"requires": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
}
|
||||
},
|
||||
"caseless": {
|
||||
"version": "0.12.0",
|
||||
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
|
||||
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
|
||||
},
|
||||
"chalk": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz",
|
||||
"integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==",
|
||||
"requires": {
|
||||
"ansi-styles": "^4.1.0",
|
||||
"supports-color": "^7.1.0"
|
||||
}
|
||||
},
|
||||
"color-convert": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
||||
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
||||
"requires": {
|
||||
"color-name": "~1.1.4"
|
||||
}
|
||||
},
|
||||
"color-name": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
||||
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
|
||||
},
|
||||
"combined-stream": {
|
||||
"version": "1.0.8",
|
||||
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
|
||||
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
|
||||
"requires": {
|
||||
"delayed-stream": "~1.0.0"
|
||||
}
|
||||
},
|
||||
"commander": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz",
|
||||
"integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg=="
|
||||
},
|
||||
"concat-map": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
|
||||
},
|
||||
"core-util-is": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
|
||||
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
|
||||
},
|
||||
"dashdash": {
|
||||
"version": "1.14.1",
|
||||
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
|
||||
"integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
|
||||
"requires": {
|
||||
"assert-plus": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"delayed-stream": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
||||
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
|
||||
},
|
||||
"ecc-jsbn": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
|
||||
"integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
|
||||
"requires": {
|
||||
"jsbn": "~0.1.0",
|
||||
"safer-buffer": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"extend": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
|
||||
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
|
||||
},
|
||||
"extsprintf": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
|
||||
"integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
|
||||
},
|
||||
"fast-deep-equal": {
|
||||
"version": "3.1.3",
|
||||
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
|
||||
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
|
||||
},
|
||||
"fast-json-stable-stringify": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
|
||||
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
|
||||
},
|
||||
"forever-agent": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
|
||||
"integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
|
||||
},
|
||||
"form-data": {
|
||||
"version": "2.3.3",
|
||||
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
|
||||
"integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
|
||||
"requires": {
|
||||
"asynckit": "^0.4.0",
|
||||
"combined-stream": "^1.0.6",
|
||||
"mime-types": "^2.1.12"
|
||||
}
|
||||
},
|
||||
"fs.realpath": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
||||
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
|
||||
},
|
||||
"getpass": {
|
||||
"version": "0.1.7",
|
||||
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
|
||||
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
|
||||
"requires": {
|
||||
"assert-plus": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"glob": {
|
||||
"version": "7.1.6",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
|
||||
"integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
|
||||
"requires": {
|
||||
"fs.realpath": "^1.0.0",
|
||||
"inflight": "^1.0.4",
|
||||
"inherits": "2",
|
||||
"minimatch": "^3.0.4",
|
||||
"once": "^1.3.0",
|
||||
"path-is-absolute": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"glob-base": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
|
||||
"integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
|
||||
"requires": {
|
||||
"glob-parent": "^2.0.0",
|
||||
"is-glob": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"glob-parent": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
|
||||
"integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
|
||||
"requires": {
|
||||
"is-glob": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"har-schema": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
|
||||
"integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
|
||||
},
|
||||
"har-validator": {
|
||||
"version": "5.1.3",
|
||||
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
|
||||
"integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
|
||||
"requires": {
|
||||
"ajv": "^6.5.5",
|
||||
"har-schema": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"has-flag": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
|
||||
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
|
||||
},
|
||||
"htmlhint": {
|
||||
"version": "0.14.1",
|
||||
"resolved": "https://registry.npmjs.org/htmlhint/-/htmlhint-0.14.1.tgz",
|
||||
"integrity": "sha512-VWKrljlwF8tEKH48YPfC30zYKhrsMqm70d7vXswivEqd3DSva8ZlIzfeCa3YWFEFRIIhiXKgKurlqEpCtYMCAA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"async": "3.2.0",
|
||||
"chalk": "4.0.0",
|
||||
"commander": "5.1.0",
|
||||
"glob": "7.1.6",
|
||||
"parse-glob": "3.0.4",
|
||||
"request": "2.88.2",
|
||||
"strip-json-comments": "3.1.0",
|
||||
"xml": "1.0.1"
|
||||
}
|
||||
},
|
||||
"http-signature": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
|
||||
"integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
|
||||
"requires": {
|
||||
"assert-plus": "^1.0.0",
|
||||
"jsprim": "^1.2.2",
|
||||
"sshpk": "^1.7.0"
|
||||
}
|
||||
},
|
||||
"inflight": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
||||
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
|
||||
"requires": {
|
||||
"once": "^1.3.0",
|
||||
"wrappy": "1"
|
||||
}
|
||||
},
|
||||
"inherits": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||
},
|
||||
"is-dotfile": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
|
||||
"integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE="
|
||||
},
|
||||
"is-extglob": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
|
||||
"integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA="
|
||||
},
|
||||
"is-glob": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
|
||||
"integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
|
||||
"requires": {
|
||||
"is-extglob": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"is-typedarray": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
|
||||
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
|
||||
},
|
||||
"isstream": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
|
||||
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
|
||||
},
|
||||
"jsbn": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
|
||||
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
|
||||
},
|
||||
"json-schema": {
|
||||
"version": "0.2.3",
|
||||
"resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
|
||||
"integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
|
||||
},
|
||||
"json-schema-traverse": {
|
||||
"version": "0.4.1",
|
||||
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
|
||||
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
|
||||
},
|
||||
"json-stringify-safe": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
|
||||
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
|
||||
},
|
||||
"jsprim": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
|
||||
"integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
|
||||
"requires": {
|
||||
"assert-plus": "1.0.0",
|
||||
"extsprintf": "1.3.0",
|
||||
"json-schema": "0.2.3",
|
||||
"verror": "1.10.0"
|
||||
}
|
||||
},
|
||||
"mime-db": {
|
||||
"version": "1.44.0",
|
||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",
|
||||
"integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg=="
|
||||
},
|
||||
"mime-types": {
|
||||
"version": "2.1.27",
|
||||
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz",
|
||||
"integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==",
|
||||
"requires": {
|
||||
"mime-db": "1.44.0"
|
||||
}
|
||||
},
|
||||
"minimatch": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
||||
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
||||
"requires": {
|
||||
"brace-expansion": "^1.1.7"
|
||||
}
|
||||
},
|
||||
"oauth-sign": {
|
||||
"version": "0.9.0",
|
||||
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
|
||||
"integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
|
||||
},
|
||||
"once": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
||||
"requires": {
|
||||
"wrappy": "1"
|
||||
}
|
||||
},
|
||||
"parse-glob": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
|
||||
"integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
|
||||
"requires": {
|
||||
"glob-base": "^0.3.0",
|
||||
"is-dotfile": "^1.0.0",
|
||||
"is-extglob": "^1.0.0",
|
||||
"is-glob": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"path-is-absolute": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
||||
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
|
||||
},
|
||||
"performance-now": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
|
||||
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
|
||||
},
|
||||
"psl": {
|
||||
"version": "1.8.0",
|
||||
"resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
|
||||
"integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
|
||||
},
|
||||
"punycode": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
|
||||
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
|
||||
},
|
||||
"qs": {
|
||||
"version": "6.5.2",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
|
||||
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
|
||||
},
|
||||
"request": {
|
||||
"version": "2.88.2",
|
||||
"resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
|
||||
"integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
|
||||
"requires": {
|
||||
"aws-sign2": "~0.7.0",
|
||||
"aws4": "^1.8.0",
|
||||
"caseless": "~0.12.0",
|
||||
"combined-stream": "~1.0.6",
|
||||
"extend": "~3.0.2",
|
||||
"forever-agent": "~0.6.1",
|
||||
"form-data": "~2.3.2",
|
||||
"har-validator": "~5.1.3",
|
||||
"http-signature": "~1.2.0",
|
||||
"is-typedarray": "~1.0.0",
|
||||
"isstream": "~0.1.2",
|
||||
"json-stringify-safe": "~5.0.1",
|
||||
"mime-types": "~2.1.19",
|
||||
"oauth-sign": "~0.9.0",
|
||||
"performance-now": "^2.1.0",
|
||||
"qs": "~6.5.2",
|
||||
"safe-buffer": "^5.1.2",
|
||||
"tough-cookie": "~2.5.0",
|
||||
"tunnel-agent": "^0.6.0",
|
||||
"uuid": "^3.3.2"
|
||||
}
|
||||
},
|
||||
"safe-buffer": {
|
||||
"version": "5.2.1",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
|
||||
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
|
||||
},
|
||||
"safer-buffer": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
||||
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
|
||||
},
|
||||
"sshpk": {
|
||||
"version": "1.16.1",
|
||||
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
|
||||
"integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
|
||||
"requires": {
|
||||
"asn1": "~0.2.3",
|
||||
"assert-plus": "^1.0.0",
|
||||
"bcrypt-pbkdf": "^1.0.0",
|
||||
"dashdash": "^1.12.0",
|
||||
"ecc-jsbn": "~0.1.1",
|
||||
"getpass": "^0.1.1",
|
||||
"jsbn": "~0.1.0",
|
||||
"safer-buffer": "^2.0.2",
|
||||
"tweetnacl": "~0.14.0"
|
||||
}
|
||||
},
|
||||
"strip-json-comments": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.0.tgz",
|
||||
"integrity": "sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w=="
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "7.1.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
|
||||
"integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
|
||||
"requires": {
|
||||
"has-flag": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"tough-cookie": {
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
|
||||
"integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
|
||||
"requires": {
|
||||
"psl": "^1.1.28",
|
||||
"punycode": "^2.1.1"
|
||||
}
|
||||
},
|
||||
"tunnel-agent": {
|
||||
"version": "0.6.0",
|
||||
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
|
||||
"integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
|
||||
"requires": {
|
||||
"safe-buffer": "^5.0.1"
|
||||
}
|
||||
},
|
||||
"tweetnacl": {
|
||||
"version": "0.14.5",
|
||||
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
|
||||
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
|
||||
},
|
||||
"uri-js": {
|
||||
"version": "4.2.2",
|
||||
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
|
||||
"integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
|
||||
"requires": {
|
||||
"punycode": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"uuid": {
|
||||
"version": "3.4.0",
|
||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
|
||||
"integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
|
||||
},
|
||||
"verror": {
|
||||
"version": "1.10.0",
|
||||
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
|
||||
"integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
|
||||
"requires": {
|
||||
"assert-plus": "^1.0.0",
|
||||
"core-util-is": "1.0.2",
|
||||
"extsprintf": "^1.2.0"
|
||||
}
|
||||
},
|
||||
"wrappy": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
|
||||
},
|
||||
"xml": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz",
|
||||
"integrity": "sha1-eLpyAgApxbyHuKgaPPzXS0ovweU="
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue