From 6b856f97314845b4c908146c1ddf44bbbe3d9fac Mon Sep 17 00:00:00 2001 From: Arnie Date: Mon, 25 Dec 2017 09:32:13 +0100 Subject: [PATCH] Split formatters, add dry run exit codes --- src/entry.sh | 18 +++++++++ src/inc/formatters/csscomb.shinc | 14 +++++++ src/inc/formatters/php-cs-fixer.shinc | 57 +++++++++++++++++++++++++++ src/inc/formatters/prettier.shinc | 15 +++++++ src/inc/process.shinc | 43 +++++--------------- src/inc/variables.shinc | 6 +-- 6 files changed, 117 insertions(+), 36 deletions(-) create mode 100644 src/inc/formatters/csscomb.shinc create mode 100644 src/inc/formatters/php-cs-fixer.shinc create mode 100644 src/inc/formatters/prettier.shinc diff --git a/src/entry.sh b/src/entry.sh index 5d2e313..0d85227 100755 --- a/src/entry.sh +++ b/src/entry.sh @@ -46,6 +46,24 @@ main() { process return $? ;; + prettier) + __initVariables "$@" + source ${INCLUDES_PATH}/prettier.shinc + __prettier + return $? + ;; + csscomb) + __initVariables "$@" + source ${INCLUDES_PATH}/csscomb.shinc + __csscomb + return $? + ;; + php-cs-fixer) + __initVariables "$@" + source ${INCLUDES_PATH}/php-cs-fixer.shinc + __phpFixer + return $? + ;; help|--help|-h) usage return 0 diff --git a/src/inc/formatters/csscomb.shinc b/src/inc/formatters/csscomb.shinc new file mode 100644 index 0000000..f5f3388 --- /dev/null +++ b/src/inc/formatters/csscomb.shinc @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + + +__csscomb() { + __msg "Csscomb:" + + if [[ ${DRY_RUN} -eq 0 ]]; then + csscomb -v "$@" + else + csscomb --lint -v "$@" + fi + + return $? +} diff --git a/src/inc/formatters/php-cs-fixer.shinc b/src/inc/formatters/php-cs-fixer.shinc new file mode 100644 index 0000000..fa1f38b --- /dev/null +++ b/src/inc/formatters/php-cs-fixer.shinc @@ -0,0 +1,57 @@ +#!/usr/bin/env bash + + +__phpFixer() { + local failed=0 + + __msg "PHP-cs-fixer" + + # Cannot chain php files without specifying a config CS file :( + if [[ ${DRY_RUN} -eq 0 ]]; then + for file in "${PHP_FILES[@]}"; do + php-cs-fixer fix "${file}" + done + else + local needs_fixing=() + local invalid_syntax=() + + for file in "${PHP_FILES[@]}"; do + php-cs-fixer fix --dry-run "${file}" + case $? in + 0) + #all good + ;; + 4) + invalid_syntax+=("${file}") + ;; + 8) + needs_fixing+=("${file}") + ;; + *) + __err "There was an error with php-cs-fixer configuration" + failed=1 + ;; + esac + done + + if [[ ${#needs_fixing[@]} -gt 0 ]]; then + failed=1 + + __err "Needs fixing:" 1 + for file in "${needs_fixing[@]}"; do + __msg "${file}" 2 + done + fi + + if [[ ${#invalid_syntax[@]} -gt 0 ]]; then + failed=1 + + __err "Invalid syntax:" 1 + for file in "${invalid_syntax[@]}"; do + __msg "${file}" 2 + done + fi + fi + + return ${failed} +} diff --git a/src/inc/formatters/prettier.shinc b/src/inc/formatters/prettier.shinc new file mode 100644 index 0000000..4fb34b9 --- /dev/null +++ b/src/inc/formatters/prettier.shinc @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + + +__prettier() { + __msg "Prettier:" + + if [[ ${DRY_RUN} -eq 0 ]]; then + prettier --write "$@" + else + __msg "Listing (: unprettiered :) files:" 1 + prettier --list-different "$@" + fi + + return $? +} diff --git a/src/inc/process.shinc b/src/inc/process.shinc index d02d942..f8b2186 100644 --- a/src/inc/process.shinc +++ b/src/inc/process.shinc @@ -1,54 +1,31 @@ #!/usr/bin/env bash - -__csscomb() { - if [[ ${DRY_RUN} -eq 0 ]]; then - csscomb "$@" - else - csscomb --lint "$@" - fi -} - - -__prettier() { - if [[ ${DRY_RUN} -eq 0 ]]; then - prettier --write "$@" - else - prettier --list-different "$@" - fi -} - -__phpFixer() { - # Cannot chain php files without specifying a config CS file :( - if [[ ${DRY_RUN} -eq 0 ]]; then - for file in "${PHP_FILES[@]}"; do - php-cs-fixer fix "${file}" - done - else - for file in "${PHP_FILES[@]}"; do - php-cs-fixer fix --dry-run "${file}" - done - fi -} - +source ${INCLUDES_PATH}/formatters/prettier.shinc +source ${INCLUDES_PATH}/formatters/csscomb.shinc +source ${INCLUDES_PATH}/formatters/php-cs-fixer.shinc process() { + local failed=0 # Run css comb if [[ ${#CSS_FILES[@]} -ne 0 ]]; then __csscomb "${CSS_FILES[@]}" + [[ $? -ne 0 ]] && failed=1 fi # Run JS prettier if [[ ${#JS_FILES[@]} -ne 0 ]]; then - __prettier --write "${JS_FILES[@]}" + __prettier "${JS_FILES[@]}" + [[ $? -ne 0 ]] && failed=1 fi # Run PHP cs fixer if [[ ${#PHP_FILES[@]} -ne 0 ]]; then __phpFixer ${PHP_FILES[@]} - fi + [[ $? -ne 0 ]] && failed=1 + fi + return ${failed} } diff --git a/src/inc/variables.shinc b/src/inc/variables.shinc index bfde914..dfb2773 100644 --- a/src/inc/variables.shinc +++ b/src/inc/variables.shinc @@ -26,7 +26,7 @@ __initVariables() { if [[ $? -ne 0 ]]; then __err "Specified path does not exist: ${1}" else - CSS_FILES+=(${1}) + CSS_FILES+=("${1}") fi ;; *.js|*.jsx) @@ -34,7 +34,7 @@ __initVariables() { if [[ $? -ne 0 ]]; then __err "Specified path does not exist: ${1}" else - JS_FILES+=(${1}) + JS_FILES+=("${1}") fi ;; *.php|*.phtml) @@ -42,7 +42,7 @@ __initVariables() { if [[ $? -ne 0 ]]; then __err "Specified path does not exist: ${1}" else - PHP_FILES+=(${1}) + PHP_FILES+=("${1}") fi ;; esac