le fichier est spécifié avec une option

This commit is contained in:
Jephté Clain 2014-11-06 07:16:36 +04:00
parent 17c0490ddd
commit 62aed20aee
1 changed files with 21 additions and 11 deletions

32
fconv
View File

@ -7,7 +7,7 @@ function display_help() {
uecho "$scriptname: convertir un fichier ou les fichiers d'un répertoire uecho "$scriptname: convertir un fichier ou les fichiers d'un répertoire
USAGE USAGE
$scriptname [options] <file|dir> [cmds...] $scriptname [options] [cmds...]
Une ou plusieurs commandes peuvent être spécifiées, séparées // Une ou plusieurs commandes peuvent être spécifiées, séparées //
La commande par défaut est 'lf' La commande par défaut est 'lf'
@ -21,6 +21,10 @@ OPTIONS
-r, --reverse -r, --reverse
Pour la commande conv, inverser src_enc et dest_enc, qui doivent être Pour la commande conv, inverser src_enc et dest_enc, qui doivent être
tous les deux spécifiés. tous les deux spécifiés.
-f, --file FILE
Spécifier le fichier ou le répertoire concerné par la conversion. Par
défaut, convertir l'entrée standard. Les options -d et --dir sont aussi
reconnus et sont des aliases de convenance
COMMANDES COMMANDES
c, conv dest_enc [src_enc] c, conv dest_enc [src_enc]
@ -28,9 +32,9 @@ COMMANDES
dest_enc est l'encoding destination. Il doit être spécifié. dest_enc est l'encoding destination. Il doit être spécifié.
src_enc est l'encoding source. S'il n'est pas spécifié ou vaut 'detect', src_enc est l'encoding source. S'il n'est pas spécifié ou vaut 'detect',
il est autodétecté. il est autodétecté.
utf8 [src_enc] u, utf8 [src_enc]
Equivalent à conv utf8 src_enc Equivalent à conv utf8 src_enc
latin1 [src_enc] l, latin1 [src_enc]
Equivalent à conv latin1 src_enc Equivalent à conv latin1 src_enc
lf lf
crlf crlf
@ -38,7 +42,7 @@ COMMANDES
Convertir respectivement les caractères de fin de ligne en LF, CR/LF ou CR Convertir respectivement les caractères de fin de ligne en LF, CR/LF ou CR
lc, latin1compat lc, latin1compat
Transformer certains caratères UTF-8 en équivalents qui existent en Latin1 Transformer certains caratères UTF-8 en équivalents qui existent en Latin1
n, noaccents na, noaccents
Transformer les caractères accentués en caractères non accentués" Transformer les caractères accentués en caractères non accentués"
} }
@ -100,8 +104,8 @@ function parse_cmd() {
local cmd="$1"; shift local cmd="$1"; shift
local -a args local -a args
case "$cmd" in case "$cmd" in
utf8) parse_cmd conv utf8 "$@";; utf8|u) parse_cmd conv utf8 "$@";;
latin1) parse_cmd conv latin1 "$@";; latin1|l) parse_cmd conv latin1 "$@";;
conv|c) conv|c)
local to="$CONV_TO" from="$CONV_FROM" local to="$CONV_TO" from="$CONV_FROM"
[ -n "$to" ] || to="$1"; shift [ -n "$to" ] || to="$1"; shift
@ -132,7 +136,7 @@ function parse_cmd() {
crlf) echo _nl2crlf;; crlf) echo _nl2crlf;;
cr) echo _nl2cr;; cr) echo _nl2cr;;
latin1compat|lc) echo _latin1compat;; latin1compat|lc) echo _latin1compat;;
noaccents|noa|n|fixchars) echo _noaccents;; noaccents|na|fixchars|fc) echo _noaccents;;
*) *)
echo "$cmd: commande invalide" echo "$cmd: commande invalide"
return 1 return 1
@ -153,17 +157,21 @@ function ffconv() {
eend eend
} }
OPTIMIZE_CONV=1
REVERSE_CONV=
CONV_FROM= CONV_FROM=
CONV_TO= CONV_TO=
OPTIMIZE_CONV=1
REVERSE_CONV=
FILE=
show_cmd=
parse_opts + "${PRETTYOPTS[@]}" \ parse_opts + "${PRETTYOPTS[@]}" \
--help '$exit_with display_help' \ --help '$exit_with display_help' \
-N,--detect-always OPTIMIZE_CONV= \ -N,--detect-always OPTIMIZE_CONV= \
-r,--reverse REVERSE_CONV=1 \ -r,--reverse REVERSE_CONV=1 \
-f:,--file:,-d:,--dir: FILE= \
--show-cmd show_cmd=1 \
@ args -- "$@" && set -- "${args[@]}" || die "$args" @ args -- "$@" && set -- "${args[@]}" || die "$args"
FILE="${1:--}"; shift [ -n "$FILE" ] || FILE=-
[ "$FILE" == - ] && FILE=/dev/stdin [ "$FILE" == - ] && FILE=/dev/stdin
if [ "$FILE" != /dev/stdin ]; then if [ "$FILE" != /dev/stdin ]; then
[ -e "$FILE" ] || die "$FILE: fichier introuvable" [ -e "$FILE" ] || die "$FILE: fichier introuvable"
@ -199,7 +207,9 @@ while [ $# -gt 0 ]; do
fi fi
done done
if [ "$FILE" == /dev/stdin ]; then if [ -n "$show_cmd" ]; then
echo "$CMD"
elif [ "$FILE" == /dev/stdin ]; then
eval "$CMD" eval "$CMD"
elif [ -f "$FILE" ]; then elif [ -f "$FILE" ]; then
ffconv ffconv