| #!/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 |