Skip to content

Commit 962e4c7

Browse files
committed
build: create JS lint issues
--- type: pre_commit_static_analysis_report description: Results of running static analysis checks when committing changes. report: - task: lint_filenames status: passed - task: lint_editorconfig status: passed - task: lint_markdown status: na - task: lint_package_json status: na - task: lint_repl_help status: na - task: lint_javascript_src status: na - task: lint_javascript_cli status: na - task: lint_javascript_examples status: na - task: lint_javascript_tests status: na - task: lint_javascript_benchmarks status: na - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - task: lint_c_tests_fixtures status: na - task: lint_shell status: na - task: lint_typescript_declarations status: na - task: lint_typescript_tests status: na - task: lint_license_headers status: passed --- --- type: pre_push_report description: Results of running various checks prior to pushing changes. report: - task: run_javascript_examples status: na - task: run_c_examples status: na - task: run_cpp_examples status: na - task: run_javascript_readme_examples status: na - task: run_c_benchmarks status: na - task: run_cpp_benchmarks status: na - task: run_fortran_benchmarks status: na - task: run_javascript_benchmarks status: na - task: run_julia_benchmarks status: na - task: run_python_benchmarks status: na - task: run_r_benchmarks status: na - task: run_javascript_tests status: na ---
1 parent 5c04e6d commit 962e4c7

File tree

1 file changed

+48
-8
lines changed

1 file changed

+48
-8
lines changed

.github/workflows/lint_random_files.yml

Lines changed: 48 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -294,8 +294,12 @@ jobs:
294294
295295
# Lint JavaScript files:
296296
- name: 'Lint JavaScript files'
297+
id: lint-javascript
297298
if: ( github.event.inputs.javascript != 'false' ) && ( success() || failure() )
298299
run: |
300+
# If any command in a pipeline fails, the entire pipeline should fail:
301+
set -o pipefail
302+
299303
# Determine root directory:
300304
root=$(git rev-parse --show-toplevel)
301305
@@ -315,45 +319,81 @@ jobs:
315319
FIX=0
316320
fi
317321
322+
# Combined error file:
323+
ERR_FILE="lint_javascript_errors.txt"
324+
> "$ERR_FILE" # Initialize a clean file
325+
318326
# Lint JavaScript source files:
319327
files=$(echo "${{ steps.random-files.outputs.files }}" | tr ',' '\n' | grep '\.js$' | grep -v -e '/examples' -e '/test' -e '/benchmark' -e '^dist/' | tr '\n' ' ')
320328
321329
# Build native addons if present:
322330
packages=$(echo "${files}" | tr ' ' '\n' | sed 's/^lib\/node_modules\///g' | sed 's/\/lib\/.*//g' | sort | uniq)
323331
for pkg in ${packages}; do
324-
if [ -f "lib/node_modules/${pkg}/binding.gyp" ]; then
325-
NODE_ADDONS_PATTERN="${pkg}" make install-node-addons
326-
fi
332+
if [ -f "lib/node_modules/${pkg}/binding.gyp" ]; then
333+
NODE_ADDONS_PATTERN="${pkg}" make install-node-addons
334+
fi
327335
done
328336
329337
if [[ -n "${files}" ]]; then
330-
make lint-javascript-files FIX="${FIX}" FAST_FAIL=0 FILES="${files}"
338+
make lint-javascript-files FIX="${FIX}" FAST_FAIL=0 FILES="${files}" 2>&1 | tee -a "$ERR_FILE"
331339
fi
332340
333341
# Lint JavaScript command-line interfaces...
334342
file=$(echo "${{ steps.random-files.outputs.files }}" | tr ',' '\n' | grep '\.js$' | grep -E '/bin/cli$' | tr '\n' ' ')
335343
if [[ -n "${file}" ]]; then
336-
make lint-javascript-files FIX="${FIX}" FAST_FAIL=0 FILES="${file}"
344+
make lint-javascript-files FIX="${FIX}" FAST_FAIL=0 FILES="${file}" 2>&1 | tee -a "$ERR_FILE"
337345
fi
338346
339347
# Lint JavaScript example files:
340348
files=$(echo "${{ steps.random-files.outputs.files }}" | tr ',' '\n' | grep '/examples/.*\.js$' | tr '\n' ' ')
341349
if [[ -n "${files}" ]]; then
342-
make lint-javascript-files FIX="${FIX}" FAST_FAIL=0 FILES="${files}" ESLINT_CONF="${eslint_examples_conf}"
350+
make lint-javascript-files FIX="${FIX}" FAST_FAIL=0 FILES="${files}" ESLINT_CONF="${eslint_examples_conf}" 2>&1 | tee -a "$ERR_FILE"
343351
fi
344352
345353
# Lint JavaScript test files:
346354
files=$(echo "${{ steps.random-files.outputs.files }}" | tr ',' '\n' | grep '/test/.*\.js$' | tr '\n' ' ')
347355
if [[ -n "${files}" ]]; then
348-
make lint-javascript-files FIX="${FIX}" FAST_FAIL=0 FILES="${files}" ESLINT_CONF="${eslint_tests_conf}"
356+
make lint-javascript-files FIX="${FIX}" FAST_FAIL=0 FILES="${files}" ESLINT_CONF="${eslint_tests_conf}" 2>&1 | tee -a "$ERR_FILE"
349357
fi
350358
351359
# Lint JavaScript benchmark files:
352360
files=$(echo "${{ steps.random-files.outputs.files }}" | tr ',' '\n' | grep '/benchmark/.*\.js$' | tr '\n' ' ')
353361
if [[ -n "${files}" ]]; then
354-
make lint-javascript-files FIX="${FIX}" FAST_FAIL=0 FILES="${files}" ESLINT_CONF="${eslint_benchmarks_conf}"
362+
make lint-javascript-files FIX="${FIX}" FAST_FAIL=0 FILES="${files}" ESLINT_CONF="${eslint_benchmarks_conf}" 2>&1 | tee -a "$ERR_FILE"
355363
fi
356364
365+
# Create sub-issue for JavaScript lint failures:
366+
- name: 'Create sub-issue for JavaScript lint failures'
367+
if: failure() && contains(steps.lint-javascript.outcome, 'failure')
368+
env:
369+
GITHUB_TOKEN: ${{ secrets.STDLIB_BOT_PAT_REPO_WRITE }}
370+
run: |
371+
BODY_FILE="$GITHUB_WORKSPACE/lint_issue_body.md"
372+
cat << EOF > "$BODY_FILE"
373+
## JavaScript Linting Failures
374+
375+
Linting failures were detected in the automated JavaScript lint workflow run.
376+
377+
### Workflow Details
378+
379+
- Run: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
380+
- Type: JavaScript Linting
381+
- Date: $(date -u +"%Y-%m-%d %H:%M:%S UTC")
382+
383+
### Error Details
384+
\`\`\`
385+
$(cat lint_javascript_errors.txt)
386+
\`\`\`
387+
EOF
388+
389+
. "$GITHUB_WORKSPACE/.github/workflows/scripts/create_sub_issue" \
390+
'Fix JavaScript lint errors' \
391+
"$BODY_FILE" \
392+
"5377" \
393+
"Good First Issue"
394+
395+
rm "$BODY_FILE"
396+
357397
# Lint Python files:
358398
- name: 'Lint Python files'
359399
if: ( github.event.inputs.python != 'false' ) && ( success() || failure() )

0 commit comments

Comments
 (0)