ci: Check snippets in coding style

To avoid having the coding style get out of sync with the actual
coding style in the future, run eslint on the individual snippets
when either the guide or the linter config change.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3146>
This commit is contained in:
Florian Müllner 2024-01-26 00:56:35 +01:00 committed by Marge Bot
parent b496a9cf9f
commit a6d35fdd2a
2 changed files with 58 additions and 0 deletions

View File

@ -149,6 +149,21 @@ eslint:
junit: ${LINT_LOG}
when: always
eslint-doc:
extends:
- .fdo.distribution-image@fedora
- .gnome-shell.fedora
stage: review
script:
- export NODE_PATH=$(npm root -g)
- ./.gitlab-ci/eslint-coding-style.sh
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
changes:
- HACKING.md
- .eslintrc.yml
- lint/*
potfile_c_check:
extends:
- .fdo.distribution-image@fedora

View File

@ -0,0 +1,43 @@
#!/bin/bash
SRCDIR=$(realpath $(dirname $0)/..)
OUTDIR=$(mktemp --directory --tmpdir=$SRCDIR)
trap "rm -rf $OUTDIR" EXIT
# Turn ```javascript``` code snippets in the
# style guide into .js files in $OUTDIR
awk --assign dir=$OUTDIR -- '
BEGIN {
do_print = 0;
cur = 0;
}
# end of code snippet
/```$/ {
do_print = 0;
cur++;
}
do_print {
# remove one level of indent
sub(" ","")
# the following are class snippets, turn them
# into functions to not confuse eslint
sub("moveActor","function moveActor")
sub("desaturateActor","function desaturateActor")
# finally, append to the currently generated .js file
print >> dir "/" cur ".js";
}
# start of code snippet
/```javascript$/ {
do_print = 1;
}
' HACKING.md
eslint \
--rule 'no-undef: off' \
--rule 'no-unused-vars: off' \
--rule 'no-invalid-this: off' $OUTDIR/*.js