Un outil pour savoir si une commande est posix - retour accueil
git clone git://bebou.netlib.re/isposix
Log | Files | Refs | README |
isposix.sh (1425B)
1 #! /bin/sh 2 set -e 3 4 _die() { printf "$red$@$norm" >&2 ; } 5 _success() { printf "$green$@$norm" >&2; } 6 _inform() { printf "$blue$@$norm" >&2; } 7 _cmdnotposix() { 8 _die "$cmd not posix" 9 if command -V fzy 2>&1 > /dev/null;then 10 fzcmd=$(find /var/isposix -name '*.html' | 11 sed -E 's,/var/isposix/([^.]+)\.html,\1,' | 12 fzy -e "$cmd" | head -n3) 13 fi 14 [ -z "$fzcmd" ] \ 15 || _inform ", did you mean : $(echo "$fzcmd" | paste -s -d',') ?" 16 } 17 18 usage() { 19 <<-. cat 20 Check if command or its options are posix 21 22 isposix command [options] 23 24 exemple : 25 26 isposix ls 27 isposix ls -a 28 . 29 } 30 31 checkoption() { 32 cmd="$1";option="$2" 33 < /var/isposix/$cmd.html grep -Eq "<dt><b>-$option[&<].*</dt>" \ 34 && { _success " -$option";return 0;} \ 35 || { _die " -$option"; return 1;} 36 } 37 38 while getopts "c" opt; do 39 case "$opt" in 40 ( c ) red="\033[91m";green="\033[92m";blue="\033[94m";norm="\033[0m";; 41 esac 42 done 43 44 scriptisposix=0 45 while read line;do 46 [ -z "$line" ] && continue 47 set -- $line 48 cmdisposix=0 49 cmd="$1";shift 50 [ "$cmd" = "[" ] && cmd="test" 51 if [ ! -f "/var/isposix/$cmd.html" ];then 52 _cmdnotposix;cmdisposix=1 53 else 54 _success "$cmd" 55 while getopts "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" opt; do 56 case "$opt" in 57 ( * ) checkoption "$cmd" "$opt" || cmdisposix=1;; 58 esac 59 done 60 fi 61 [ $cmdisposix = "0" ] \ 62 && _success " | is posix\n" \ 63 || { _die " | not posix\n";scriptisposix=1; } 64 done 65 66 exit $scriptisposix 67