diff --git a/doinplace b/doinplace index 3703206..4087def 100755 --- a/doinplace +++ b/doinplace @@ -1,5 +1,16 @@ #!/bin/bash # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 + +TOOLS=(doinplacef doinplacex) +if [ "$#" -eq 1 -a "$1" == --nutools-makelinks ]; then + # créer les liens + scriptname="$(basename "$0")" + for tool in "${TOOLS[@]}"; do + ln -s "$scriptname" "$tool" + done + exit 0 +fi + source "$(dirname "$0")/lib/ulib/ulib" || exit 1 urequire base @@ -7,11 +18,10 @@ function display_help() { uecho "$scriptname: filtrer en place un fichier à travers une suite de commandes USAGE - $scriptname FILE COMMANDS... + $scriptname FILE COMMAND [ARGS...] -Une ou plusieurs commandes peuvent être spécifiées, séparées par // -Si on utilise des commandes avec des options, penser à utliser '--' pour séparer -les options de ce script des options des commandes +Si on utilise une commande avec des options, penser à utliser '--' pour séparer +les options de ce script des options de la commande En plus des commandes systèmes, il est possible d'utiliser toute fonction de nutools qui effectue des traitement sur un flux comme stripnl, filter_empty, @@ -19,11 +29,17 @@ merge_contlines, filter_comment, filter_conf, etc. Les fonctions nl2lf, nl2crlf, nl2cr, latin1compat et noaccents sont aussi disponibles par convenance. OPTIONS + -p, --evalp + Evaluer la commande avec evalp(), ce qui permet de chainer plusieurs + commandes en les séparant par //. Cette option est automatiquement + activée si ce script est lancé avec le nom doinplacex -g, --ignore-error, --replace-always Normalement, le fichier n'est pas remplacé si la commande retourne une erreur. Avec cette option, le fichier est remplacé quel que soit le code de retour de la commande. A utiliser par exemple avec des commandes - comme grep qui peuvent retourner FAUX s'ils ne trouvent pas le motif." + comme grep qui peuvent retourner FAUX s'ils ne trouvent pas le motif. + Cette option est automatiquement activée si ce script est lancé avec le + nom doinplacef" } function nl2lf() { _nl2lf; } @@ -32,17 +48,27 @@ function nl2cr() { _nl2cr; } function latin1compat() { _latin1compat; } function noaccents() { _noaccents; } -replace= +[ "$scriptname" == doinplacex ] && evalp=1 || evalp= +[ "$scriptname" == doinplacef ] && replace=1 || replace= args=( --help '$exit_with display_help' + -p,--evalp evalp=1 -g,--ignore-error,--replace-always replace=1 ) parse_args "$@"; set -- "${args[@]}" file="$1"; shift -if [ -n "$replace" ]; then - doinplacef "$file" evalp "$@" +if [ -n "$evalp" ]; then + if [ -n "$replace" ]; then + doinplacef "$file" evalp "$@" + else + doinplace "$file" evalp "$@" + fi else - doinplace "$file" evalp "$@" + if [ -n "$replace" ]; then + doinplacef "$file" "$@" + else + doinplace "$file" "$@" + fi fi exit $? diff --git a/lib/uinst/conf b/lib/uinst/conf index 7368b8a..a6addb0 100644 --- a/lib/uinst/conf +++ b/lib/uinst/conf @@ -32,6 +32,7 @@ done ./uawk --nutools-makelinks ./udist --nutools-makelinks ./ulink --nutools-makelinks +./doinplace --nutools-makelinks # complétion programmable rm -f ~/etc/bashrc.d/bash_completion.nutools # renommé