File: spelling.sh

package info (click to toggle)
binutils-mingw-w64 13
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 200 kB
  • sloc: makefile: 201; sed: 28; sh: 17
file content (30 lines) | stat: -rwxr-xr-x 704 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/bin/sh
set -ef

# $1 - directory to search in
# $2 - misspelled text
# $3 - corrected text (may be empty)
[ -d "$1" ] ; [ -n "$2" ]

# "safe" sed separator
s=$(printf '\027')

env printf ' --- Fix spelling: %q -> %q\n' "$2" "$3" >&2

t=$(mktemp); : "${t:?}"
_cleanup() { rm -f -- "${t}"; exit ${1:-0}; }
trap '_cleanup $?' EXIT INT HUP ALRM TERM

grep -FZl -r -e "$2" "$1/" | sed -zE "s${s}^$1/${s}${s}g" | sort -zuV > "$t" || :

[ -s "$t" ] || {
	echo " --- The above fix is no longer necessary" >&2
	exit 0
}

echo ' --- Affected files:' >&2
xargs -a "$t" -0r printf '%s\n' </dev/null >&2
echo ' --- end of file list' >&2

env -C "$1" xargs -a "$t" -0r sed -i "s${s}$2${s}$3${s}g" </dev/null
exit 0