#!/usr/bin/env bash function remove-whitespace { # exclude file types # (ignore generated files/directories) exclude_paths=( "*/.git/*" ) exclude_files=( "*.lst" "*.map" "*.svd" "*.sym" ) unset help unset silent unset no_action unset path_args unset file_args unset ffunix unset files for arg in $@; do case ${arg} in "-u" | "--unix") ffunix="true" continue ;; "-h" | "--help" | "-help") help="true" continue ;; "-n" | "--no-action") no_action="true" continue ;; "-s" | "--silent") silent="true" continue ;; *) ;; esac if [[ -d "${arg}" ]]; then path_args+=("${arg}") continue elif [[ -f "${arg}" ]]; then file_args+=("${arg}") continue fi echo "(unrecognised argument: '${arg}')" done if [[ -n "${ffunix}" ]]; then sed_cmd='s/[[:space:]]\+$//' grep_regex=$'[[:space:]]+$' else sed_cmd='s/[[:blank:]]\+\(\r\?\)$/\1/' grep_regex=$'[[:blank:]]+\r?$' fi for arg in ${path_args[@]}; do files+=($( find "${arg}" \ "${exclude_paths[@]/#/-not -path }" \ "${exclude_files[@]/#/-not -name }" \ -type f \ -exec grep -EIq "${grep_regex}" {} \; \ -print )) done for arg in ${file_args[@]}; do grep -EIq "${grep_regex}" ${arg} && files+=("${arg}") done if [[ -n "${help}" ]] || [[ -z "${files[@]}" ]]; then cat <