| #!/usr/bin/env bash |
| |
| if [ "$1" == "--help" ]; then |
| echo 'Usage:' "[MAX_LINE_LENGTH=n] $0 [file ...]" |
| exit 1 |
| fi |
| |
| if [ "$MAX_LINE_LENGTH" == "" ]; then |
| MAX_LINE_LENGTH=100 |
| fi |
| |
| if [ "$1" == "" ]; then |
| shopt -s globstar |
| files=( src/**/*.md ) |
| else |
| files=( "$@" ) |
| fi |
| |
| echo "Checking line lengths in all source files <= $MAX_LINE_LENGTH chars..." |
| |
| echo "Offending files and lines:" |
| (( bad_lines = 0 )) |
| (( inside_block = 0 )) |
| for file in "${files[@]}"; do |
| echo "$file" |
| (( line_no = 0 )) |
| while IFS="" read -r line || [[ -n "$line" ]] ; do |
| (( line_no++ )) |
| if [[ "$line" =~ ^'```' ]] ; then |
| (( inside_block = !$inside_block )) |
| continue |
| fi |
| if ! (( $inside_block )) \ |
| && ! [[ "$line" =~ " | "|"-|-"|"://"|"]:"|\[\^[^\ ]+\]: ]] \ |
| && (( "${#line}" > $MAX_LINE_LENGTH )) ; then |
| (( bad_lines++ )) |
| echo -e "\t$line_no : $line" |
| fi |
| done < "$file" |
| done |
| |
| echo "$bad_lines offending lines found." |
| (( $bad_lines == 0 )) |