diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b008266f..8f6b13ab 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,6 +3,9 @@ stages: - source_check - build +variables: + LINT_LOG: "eslint-report.txt" + .only_default: &only_default only: - branches @@ -21,11 +24,11 @@ eslint: image: registry.gitlab.gnome.org/gnome/gnome-shell/extension-ci:v1 stage: source_check script: - - ./.gitlab-ci/run-eslint.sh + - eslint -o $LINT_LOG --no-color || { cat $LINT_LOG; false; } <<: *only_default artifacts: paths: - - reports + - ${LINT_LOG} when: on_failure build-shell-extensions: diff --git a/.gitlab-ci/run-eslint.sh b/.gitlab-ci/run-eslint.sh deleted file mode 100755 index a5cb2041..00000000 --- a/.gitlab-ci/run-eslint.sh +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/env bash - -OUTPUT_REGULAR=reports/lint-report.txt -OUTPUT_MR=reports/lint-mr-report.txt - -SRCDIR=extensions - -LINE_CHANGES=changed-lines.txt - -is_empty() { - (! grep -q . $1) -} - -run_eslint() { - # ensure output exists even if eslint doesn't report any errors - mkdir -p $(dirname $OUTPUT_REGULAR) - touch $OUTPUT_REGULAR - - eslint -f unix -o $OUTPUT_REGULAR $SRCDIR -} - -list_commit_range_additions() { - # Turn raw context-less git-diff into a list of - # filename:lineno pairs of new (+) lines - git diff -U0 "$@" -- js | - awk ' - BEGIN { file=""; } - /^+++ b/ { file=substr($0,7); } - /^@@ / { - len = split($3,a,",") - start=a[1] - count=(len > 1) ? a[2] : 1 - - for (line=start; line $target - for l in $(<$matches); do - grep $l $source >> $target - done -} - -# Clean up old files from previous runs -rm -f $OUTPUT_REGULAR $OUTPUT_MR $LINE_CHANGES - -if [ "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" ]; then - git fetch $CI_MERGE_REQUEST_PROJECT_URL.git $CI_MERGE_REQUEST_TARGET_BRANCH_NAME - branch_point=$(git merge-base HEAD FETCH_HEAD) - commit_range=$branch_point...$CI_COMMIT_SHA - - list_commit_range_additions $commit_range > $LINE_CHANGES - - # Don't bother with running lint when no JS changed - if is_empty $LINE_CHANGES; then - exit 0 - fi -fi - -echo Generating lint report -run_eslint -echo Done. - -# Just show the report and succeed when not testing a MR -if [ -z "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" ]; then - cat $OUTPUT_REGULAR - exit 0 -fi - -copy_matched_lines $OUTPUT_REGULAR $LINE_CHANGES $OUTPUT_MR -cat $OUTPUT_MR -is_empty $OUTPUT_MR