-
Notifications
You must be signed in to change notification settings - Fork 0
/
spellcheck.sh
90 lines (71 loc) · 3.32 KB
/
spellcheck.sh
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#!/bin/bash
#
# SPELLCHECK: controlla se sono presenti errori
# di scrittura nel README e negli script Python
#
# lo script usa hunspell con il dizionario inglese,
# italiano e un dizionario personalizzato per assicurarsi
# che le parole siano valide e esistenti
#
# Autore: Zenaro Stefano
# Versione: 01_03 2020-05-15
#
# esci al primo errore e con il codice di uscita dell'ultimo comando
set -e
set -o pipefail
# percorso di questo script
SCRIPTPATH="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
# percorso del file readme
READMEPATH="${SCRIPTPATH}/README.md"
# percorso della cartella code
CODEPATH="${SCRIPTPATH}/code"
# vai nella cartella con i dizionari di hunspell
cd "${SCRIPTPATH}/assets/hunspell"
# togli duplicati dalla wordlist e riordinala. Scrivi il risultato in file temporaneo
sort -u custom_dict-wordlist.txt | sort > custom_dict-wordlist.temp
# sovrascrivi la wordlist rinominando il file temporaneo
mv custom_dict-wordlist.temp custom_dict-wordlist.txt
# sovrascrivi il file dizionario con il numero di parole nella wordlist
wc -l custom_dict-wordlist.txt > custom_dict.dic
# riordina le parole nella word list, togli duplicati e aggiungile a fine dizionario
sort custom_dict-wordlist.txt | uniq >> custom_dict.dic
# memorizza output
output=$(hunspell -d en-GB,it_IT,custom_dict -l < "${READMEPATH}" -u)
echo -e "\n=========================================================\n\n README SPELLCHECKING"
echo -e "\n=========================================================\n"
# visualizza output
printf "$output"
# se l'output e' vuoto, visualizza "nessun errore trovato"
if [ -z "$output" ] ; then
echo "Nessun errore di spelling trovato nel file REAMDE.md"
fi
echo -e "\n\n=========================================================\n\n PYTHON SPELLCHECKING"
echo -e "\n=========================================================\n"
printf "" > "${SCRIPTPATH}/spellcheck.temp"
# trova in code, file di tipo "file", nome qualsiasi ("*") che finisce con estensione ".py":
# per ogni file aggiungi il suo percorso al file temporaneo, usa hunspell per trovare gli errori di spelling e inserisci l'output nel file temporaneo
find "$CODEPATH" -type f -iname "*.py" -exec echo '{}' >> "${SCRIPTPATH}/spellcheck.temp" \; -exec hunspell -d en-GB,it_IT,custom_dict -l -u '{}' >> "${SCRIPTPATH}/spellcheck.temp" \;
# se rimane 0, il file temporaneo contiene solo i percorsi degli script
# altrimenti sono presenti anche errori di spelling
check=0
# per ogni riga nel file tenporaneo ("${SCRIPTPATH}/spellcheck.temp")
while IFS="" read -r p || [ -n "$p" ]
do
# se la riga contiene il percorso ad un file esistente, non e' un errore di spelling
if ! test -f "$p"; then
# visualizza la riga con l'errore di spelling
printf '%s\n' "$p"
check=1
fi
done < "${SCRIPTPATH}/spellcheck.temp"
# se il file non conteneva errori di spelling, visualizza il messaggio e cancella il file temporaneo
if [ "$check" -eq "0" ] ; then
echo "Nessun errore di spelling trovato negli script Python"
rm "${SCRIPTPATH}/spellcheck.temp"
fi
# controlla se il file contiene errori di spelling:
# se il controllo e' falso (check != 0), lo script terminera' con status code 1
[ "$check" -eq "0" ]
# verifica se l'output e' vuoto (0 = vuoto, 1 = non vuoto):
# se il controllo e' 1, lo script terminera' con status code 1
[ -z "$output" ]