|  | #!/bin/bash | 
|  | # Copyright lowRISC contributors. | 
|  | # Licensed under the Apache License, Version 2.0, see LICENSE for details. | 
|  | # SPDX-License-Identifier: Apache-2.0 | 
|  |  | 
|  | # Check that there are no "source" files in the repository that | 
|  | # contain non-ASCII characters. | 
|  |  | 
|  | set -e | 
|  |  | 
|  | # Suffixes of files that are allowed to contain non-ASCII characters. | 
|  | # These obviously include non-text files, but we also include .md and | 
|  | # .html because we've used non-ASCII encoding in quite a few of them | 
|  | # to make documentation easier to write. | 
|  | allowed_suffixes=( | 
|  | png | 
|  | ico | 
|  | bin | 
|  | der | 
|  | vsdx | 
|  | elf | 
|  |  | 
|  | md | 
|  | html | 
|  |  | 
|  | # We don't mandate 7-bit ASCII for Python or C/C++ code. The | 
|  | # Google style guide, which we inherit suggests avoiding | 
|  | # unnecessary non-ASCII text, but doesn't forbid it entirely. | 
|  | py | 
|  | c | 
|  | cc | 
|  | h | 
|  | hh | 
|  | ) | 
|  | suff_re="" | 
|  | for suff in "${allowed_suffixes[@]}"; do | 
|  | suff_re="${suff_re}${suff}\\|" | 
|  | done | 
|  | suff_re="\\.\\(${suff_re:0:-2}\\)$" | 
|  |  | 
|  | # Other paths that should be excluded from the check. This includes | 
|  | # vendored files (that we don't control) and other binary files | 
|  | # without a suffix or non-source files. | 
|  | excl_paths=( | 
|  | '.*/vendor/.*' | 
|  | COMMITTERS | 
|  | hw/ip/usbdev/pmod/tusb1106pmod-kicad/fp-info-cache | 
|  | site/landing/data/partner_quotes.json | 
|  | ) | 
|  | excl_re="" | 
|  | for excl in "${excl_paths[@]}"; do | 
|  | excl_re="${excl_re}${excl}\\|" | 
|  | done | 
|  | excl_re="^\\(${excl_re:0:-2}\\)$" | 
|  |  | 
|  | TMPFILE="$(mktemp)" || { | 
|  | echo >&2 "Failed to create temporary file" | 
|  | exit 1 | 
|  | } | 
|  | trap 'rm -f "$TMPFILE"' EXIT | 
|  |  | 
|  | git ls-files | \ | 
|  | grep -v "${excl_re}" | \ | 
|  | grep -v "${suff_re}" | \ | 
|  | env LC_ALL=C xargs grep -d skip -P '[^\0-\x7f]' >"$TMPFILE" || true | 
|  | if [ -s "$TMPFILE" ]; then | 
|  | echo -n "##vso[task.logissue type=error]" | 
|  | echo "One or more files have unexpected non-ASCII text:" | 
|  | cat "$TMPFILE" | 
|  | exit 1 | 
|  | fi |