Compare commits
34 Commits
wip/dkbuil
...
master
Author | SHA1 | Date |
---|---|---|
Jephté Clain | 0527aee96e | |
Jephté Clain | f156fe0b1e | |
Jephté Clain | 625d5f1d25 | |
Jephté Clain | e30820261a | |
Jephté Clain | 5c03184c94 | |
Jephté Clain | 0ed5ddf6b9 | |
Jephté Clain | f39787c6ec | |
Jephté Clain | 11145f686a | |
Jephté Clain | 21042e4677 | |
Jephté Clain | e4176dfd94 | |
Jephté Clain | 1787aa2310 | |
Jephté Clain | d1f77aa354 | |
Jephté Clain | c2cfd7739a | |
Jephté Clain | e7745c2dd4 | |
Jephté Clain | ce8f541520 | |
Jephté Clain | 9d8e3c53d1 | |
Jephté Clain | 1b7b2744ba | |
Jephté Clain | 771bd1c563 | |
Jephté Clain | 6e36d26471 | |
Jephté Clain | e5ab8dd240 | |
Jephté Clain | c0d4e950e9 | |
Jephté Clain | e76a6a6a84 | |
Jephté Clain | b03df72236 | |
Jephté Clain | 44f719b2e6 | |
Jephté Clain | 337f24c447 | |
Jephté Clain | 246b9473aa | |
Jephté Clain | 9d5713c1f9 | |
Jephté Clain | 05fd86acc7 | |
Jephté Clain | abd178bf0d | |
Jephté Clain | 2283a66201 | |
Jephté Clain | 7f143c0fd4 | |
Jephté Clain | 046ba0d323 | |
Jephté Clain | c8b8f107a1 | |
Jephté Clain | 1210ca7382 |
19
CHANGES.md
19
CHANGES.md
|
@ -1,3 +1,22 @@
|
||||||
|
## Version 11.3.0 du 24/09/2024-16:02
|
||||||
|
|
||||||
|
* `625d5f1` bug mineur
|
||||||
|
* `e308202` dkbuild: améliorer from_glob()
|
||||||
|
* `5c03184` lgrep, lless: modifier la doc pour ne parler que d'un fichier
|
||||||
|
|
||||||
|
## Version 11.2.0 du 21/06/2024-20:34
|
||||||
|
|
||||||
|
* `21042e4` bug
|
||||||
|
* `e4176df` reginc: possibilité de renommer des fichiers
|
||||||
|
* `1787aa2` bug
|
||||||
|
* `d1f77aa` dkbuild: support dist none et tag LATEST
|
||||||
|
* `c2cfd77` bug
|
||||||
|
* `e7745c2` dk: support --plain-output
|
||||||
|
* `ce8f541` dkbuild: -g pour --profile
|
||||||
|
* `30594aa` maj distributions
|
||||||
|
* `2df175e` dkbuild: cosmetic
|
||||||
|
* `fbb05f8` support des versions AMUE
|
||||||
|
|
||||||
## Version 11.1.0 du 01/02/2024-20:59
|
## Version 11.1.0 du 01/02/2024-20:59
|
||||||
|
|
||||||
* `8570d12` pff: les répertoires liés peuvent contenir des fichiers
|
* `8570d12` pff: les répertoires liés peuvent contenir des fichiers
|
||||||
|
|
|
@ -1,45 +0,0 @@
|
||||||
# TODO
|
|
||||||
|
|
||||||
* [ ] réordonner les versions: version la plus récente en premier, pour être cohérent avec setdists
|
|
||||||
* [ ] gestion de la version de façon incrémentale
|
|
||||||
~~~
|
|
||||||
addversion "$DIST" # est implicite
|
|
||||||
addversion j11
|
|
||||||
addversion 75
|
|
||||||
# donne les tags suivants:
|
|
||||||
# - latest $DIST j11 75 j11-$DIST 75-j11-$DIST
|
|
||||||
|
|
||||||
addversion d12 d11 # est implicite
|
|
||||||
addversion j11 j8
|
|
||||||
addversion 89
|
|
||||||
# donne les tags suivants:
|
|
||||||
# - latest d12 j11 89 j11-d12 89-j11-d12
|
|
||||||
# - j8-d12 89-j8-d12
|
|
||||||
# - d11 j11-d11 89-j11-d11
|
|
||||||
# - j8-d11 89-j8-d11
|
|
||||||
~~~
|
|
||||||
* [ ] supprimer le support des versions avec les profils et les distributions
|
|
||||||
* en définitive:
|
|
||||||
* les versions sont indépendantes des profils et des distributions
|
|
||||||
* la distribution est rajoutée implicitement à la version sauf avis contraire
|
|
||||||
* pour compatibilité, les deux lignes suivantes sont équivalentes:
|
|
||||||
~~~
|
|
||||||
setversion a-b-c
|
|
||||||
# équivalent à
|
|
||||||
addversion c; addversion b; addversion a
|
|
||||||
~~~
|
|
||||||
* la version est utilisée pour construire les tags (faut-il renommer addversion en addtag?)
|
|
||||||
* [ ] faire tourner chaque build dans un sous-shell pour améliorer la gestion des variables
|
|
||||||
* [ ] comme dans runs, faire une section run: ?
|
|
||||||
ATTENTION! build() déclenche AUTOBUILD=, et si on fait une section run:,
|
|
||||||
cette commande ne sera pas lancée, et donc le build sera fait en deux fois
|
|
||||||
|
|
||||||
* [ ] setversion peut prendre la version depuis la branche git d'un dépôt
|
|
||||||
* un argument permettrait de spécifier comment la version est calculée à
|
|
||||||
partir du dépôt
|
|
||||||
* [ ] si cela a du sens, une commande setlatest qui permet de désigner quelle
|
|
||||||
distribution/version est la dernière
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
# TODO
|
||||||
|
|
||||||
|
dkbuild
|
||||||
|
* setversion peut prendre la version depuis la branche git d'un dépôt
|
||||||
|
* un argument permettrait de spécifier comment la version est calculée à
|
||||||
|
partir du dépôt
|
||||||
|
* si cela a du sens, une commande setlatest qui permet de désigner quelle
|
||||||
|
distribution/version est la dernière
|
||||||
|
|
||||||
|
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary
|
|
@ -1 +1 @@
|
||||||
11.1.0
|
11.3.0
|
||||||
|
|
7
dk
7
dk
|
@ -336,6 +336,8 @@ OPTIONS build
|
||||||
deploy, by, bpy et update impliquent --stack
|
deploy, by, bpy et update impliquent --stack
|
||||||
-j, --no-cache
|
-j, --no-cache
|
||||||
Ne pas utiliser le cache lors du build
|
Ne pas utiliser le cache lors du build
|
||||||
|
--plain-output
|
||||||
|
Afficher la sortie complète des containers lors du build
|
||||||
-U, --pull
|
-U, --pull
|
||||||
Essayer de récupérer une version plus récente de l'image source
|
Essayer de récupérer une version plus récente de l'image source
|
||||||
-g, --ug, --no-update-apps
|
-g, --ug, --no-update-apps
|
||||||
|
@ -1245,6 +1247,7 @@ function default_compose_build() {
|
||||||
"${replace_env_args[@]}" "${env_args[@]}" \
|
"${replace_env_args[@]}" "${env_args[@]}" \
|
||||||
build \
|
build \
|
||||||
${NO_CACHE:+--no-cache} \
|
${NO_CACHE:+--no-cache} \
|
||||||
|
${PROGRESS:+--progress "$PROGRESS"} \
|
||||||
${PULL:+--pull} \
|
${PULL:+--pull} \
|
||||||
"${replace_build_args[@]}" "${build_args[@]}" \
|
"${replace_build_args[@]}" "${build_args[@]}" \
|
||||||
"$@"
|
"$@"
|
||||||
|
@ -1256,6 +1259,7 @@ function default_docker_build() {
|
||||||
done
|
done
|
||||||
${FAKE:+qvals} "$DOCKER" build \
|
${FAKE:+qvals} "$DOCKER" build \
|
||||||
${NO_CACHE:+--no-cache} \
|
${NO_CACHE:+--no-cache} \
|
||||||
|
${PROGRESS:+--progress "$PROGRESS"} \
|
||||||
${PULL:+--pull} \
|
${PULL:+--pull} \
|
||||||
"${replace_env_args[@]}" "${env_args[@]}" \
|
"${replace_env_args[@]}" "${env_args[@]}" \
|
||||||
"${replace_build_args[@]}" "${build_args[@]}" \
|
"${replace_build_args[@]}" "${build_args[@]}" \
|
||||||
|
@ -1305,6 +1309,7 @@ function auto_build() {
|
||||||
done
|
done
|
||||||
${FAKE:+qvals} "$DOCKER" build \
|
${FAKE:+qvals} "$DOCKER" build \
|
||||||
${NO_CACHE:+--no-cache} \
|
${NO_CACHE:+--no-cache} \
|
||||||
|
${PROGRESS:+--progress "$PROGRESS"} \
|
||||||
${PULL:+--pull} \
|
${PULL:+--pull} \
|
||||||
"${replace_build_args[@]}" "$@"
|
"${replace_build_args[@]}" "$@"
|
||||||
fi
|
fi
|
||||||
|
@ -2499,6 +2504,7 @@ FAKE=
|
||||||
VARS=()
|
VARS=()
|
||||||
FORCE=
|
FORCE=
|
||||||
NO_CACHE=
|
NO_CACHE=
|
||||||
|
PROGRESS=
|
||||||
PULL=
|
PULL=
|
||||||
HOST=
|
HOST=
|
||||||
WITH_REGISTRY_AUTH=1
|
WITH_REGISTRY_AUTH=1
|
||||||
|
@ -2522,6 +2528,7 @@ args=(
|
||||||
-e:,--build-arg:,--env: VARS
|
-e:,--build-arg:,--env: VARS
|
||||||
-f,--force FORCE=1
|
-f,--force FORCE=1
|
||||||
-j,--no-cache NO_CACHE=1
|
-j,--no-cache NO_CACHE=1
|
||||||
|
--plain-output PROGRESS=plain
|
||||||
-U,--pull PULL=1
|
-U,--pull PULL=1
|
||||||
-h:,--host: HOST=
|
-h:,--host: HOST=
|
||||||
-g,--ug,--no-update-apps update_apps_mode=b
|
-g,--ug,--no-update-apps update_apps_mode=b
|
||||||
|
|
50
dkbuild
50
dkbuild
|
@ -100,7 +100,7 @@ $scriptname build [OPTIONS] [BUILDVARS...]
|
||||||
le build pour toutes les distributions définies. Si la distribution
|
le build pour toutes les distributions définies. Si la distribution
|
||||||
sélectionnée n'est pas valide pour ce build, elle est ignorée
|
sélectionnée n'est pas valide pour ce build, elle est ignorée
|
||||||
|
|
||||||
--profile PROFILE
|
-g, --profile PROFILE
|
||||||
-P, --prod
|
-P, --prod
|
||||||
-T, --test
|
-T, --test
|
||||||
-E, --dtest
|
-E, --dtest
|
||||||
|
@ -224,9 +224,13 @@ construites. Une version est définie en ajoutant un préfixe à la distribution
|
||||||
La commande 'setdists' permet de lister explicitement les distributions valides
|
La commande 'setdists' permet de lister explicitement les distributions valides
|
||||||
(et les versions associées le cas échéant). Si la distribution sélectionnée par
|
(et les versions associées le cas échéant). Si la distribution sélectionnée par
|
||||||
l'utilisateur n'est pas dans la liste fournie, le script s'arrête sans erreur.
|
l'utilisateur n'est pas dans la liste fournie, le script s'arrête sans erreur.
|
||||||
|
|
||||||
La première distribution listée est spéciale: c'est la distribution la plus
|
La première distribution listée est spéciale: c'est la distribution la plus
|
||||||
récente, celle qui reçoit le tag :latest
|
récente, celle qui reçoit le tag :latest
|
||||||
|
|
||||||
|
La distribution 'none' est spéciale aussi: elle n'est pas mentionnée dans les
|
||||||
|
tags automatiquement attribués aux images.
|
||||||
|
|
||||||
La commande 'dist' permet de tester si la distribution spécifiée en argument a
|
La commande 'dist' permet de tester si la distribution spécifiée en argument a
|
||||||
été sélectionnée par l'utilisateur. L'argument 'LATEST' permet de tester la
|
été sélectionnée par l'utilisateur. L'argument 'LATEST' permet de tester la
|
||||||
dernière distribution.
|
dernière distribution.
|
||||||
|
@ -678,7 +682,8 @@ Les paramètres optionnels sont
|
||||||
* set-tag=TAGS... ou set-tags=TAGS...
|
* set-tag=TAGS... ou set-tags=TAGS...
|
||||||
spécifier des tags à rajouter au nom de l'image, séparés par un espace. cette
|
spécifier des tags à rajouter au nom de l'image, séparés par un espace. cette
|
||||||
liste remplace celle calculée automatiquement. ce paramètre est ignoré pour
|
liste remplace celle calculée automatiquement. ce paramètre est ignoré pour
|
||||||
les noms d'images comportant un tag
|
les noms d'images comportant un tag.
|
||||||
|
Utiliser le tag spécial LATEST pour rajouter :latest si c'est approprié
|
||||||
* add-tag=TAGS... ou add-tags=TAGS...
|
* add-tag=TAGS... ou add-tags=TAGS...
|
||||||
spécifier des tags à rajouter à la liste calculée automatiquement, séparés par
|
spécifier des tags à rajouter à la liste calculée automatiquement, séparés par
|
||||||
un espace. ce paramètre est ignoré pour les noms d'images comportant un tag
|
un espace. ce paramètre est ignoré pour les noms d'images comportant un tag
|
||||||
|
@ -941,8 +946,8 @@ SHARED_ARGS2=(
|
||||||
-d:,--dist: DIST=
|
-d:,--dist: DIST=
|
||||||
-0,--d10 DIST=d10
|
-0,--d10 DIST=d10
|
||||||
-1,--d11 DIST=d11
|
-1,--d11 DIST=d11
|
||||||
-2,--d12 DIST=d11
|
-2,--d12 DIST=d12
|
||||||
-3,--d13 DIST=d11
|
-3,--d13 DIST=d13
|
||||||
--r7,--rhel7 DIST=rhel7
|
--r7,--rhel7 DIST=rhel7
|
||||||
--r8,--rhel8 DIST=rhel8
|
--r8,--rhel8 DIST=rhel8
|
||||||
--r9,--rhel9 DIST=rhel9
|
--r9,--rhel9 DIST=rhel9
|
||||||
|
@ -950,7 +955,7 @@ SHARED_ARGS2=(
|
||||||
--ol8,--oracle8 DIST=ol8
|
--ol8,--oracle8 DIST=ol8
|
||||||
--ol9,--oracle9 DIST=ol9
|
--ol9,--oracle9 DIST=ol9
|
||||||
|
|
||||||
-p:,--profile: PROFILE=
|
-g:,--profile: PROFILE=
|
||||||
-P,--prod PROFILE=prod
|
-P,--prod PROFILE=prod
|
||||||
-T,--test PROFILE=test
|
-T,--test PROFILE=test
|
||||||
-E,--dtest PROFILE=dtest
|
-E,--dtest PROFILE=dtest
|
||||||
|
@ -1078,12 +1083,13 @@ function reset_functions() {
|
||||||
function include() {
|
function include() {
|
||||||
edebug "include $(qvals "$@")"
|
edebug "include $(qvals "$@")"
|
||||||
|
|
||||||
local file="$1"
|
local file="$1" cwd="$(pwd)"
|
||||||
[ -d "$file" ] && file="$file/dkbuild"
|
[ -d "$file" ] && file="$file/dkbuild"
|
||||||
[ -f "$file" ] || die "$file: fichier introuvable"
|
[ -f "$file" ] || die "$file: fichier introuvable"
|
||||||
setx file=abspath "$file"
|
setx file=abspath "$file"
|
||||||
cd "$(dirname "$file")"
|
cd "$(dirname "$file")"
|
||||||
source "$file"
|
source "$file"
|
||||||
|
cd "$cwd"
|
||||||
}
|
}
|
||||||
function machine() {
|
function machine() {
|
||||||
local machine version
|
local machine version
|
||||||
|
@ -1182,12 +1188,14 @@ function load_environ() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function from_glob() {
|
function from_glob() {
|
||||||
local var=value value
|
local vvalue=value value vfile=file file
|
||||||
[[ "$1" != *=* ]] && { var="$1"; shift; }
|
[[ "$1" != *=* ]] && { vvalue="$1"; shift; }
|
||||||
|
[[ "$1" != *=* ]] && { vfile="$1"; shift; }
|
||||||
|
|
||||||
local path extract add_prefix add_suffix
|
local basedir path extract add_prefix add_suffix
|
||||||
while [ $# -gt 0 ]; do
|
while [ $# -gt 0 ]; do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
|
basedir=*) basedir="${1#basedir=}";;
|
||||||
path=*) path="${1#path=}";;
|
path=*) path="${1#path=}";;
|
||||||
extract=*) extract="${1#extract=}";;
|
extract=*) extract="${1#extract=}";;
|
||||||
add-prefix=*) add_prefix="${1#add-prefix=}";;
|
add-prefix=*) add_prefix="${1#add-prefix=}";;
|
||||||
|
@ -1197,7 +1205,9 @@ function from_glob() {
|
||||||
esac
|
esac
|
||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
value="$(list_all . "$path" | sort -rn | head -1)"
|
[ -n "$basedir" ] || basedir=.
|
||||||
|
value="$(list_all "$basedir" "$path" | sort -rn | head -1)"
|
||||||
|
file="$basedir/$value"
|
||||||
[ -n "$extract" ] || extract="${path//\*/(.*)}"
|
[ -n "$extract" ] || extract="${path//\*/(.*)}"
|
||||||
if [ -n "$extract" ]; then
|
if [ -n "$extract" ]; then
|
||||||
extract="${extract//\//\\/}"
|
extract="${extract//\//\\/}"
|
||||||
|
@ -1207,7 +1217,7 @@ function from_glob() {
|
||||||
}")$add_suffix"
|
}")$add_suffix"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local "$var"; upvar "$var" "$value"
|
local "$vvalue" "$vfile"; upvars "$vvalue" "$value" "$vfile" "$file"
|
||||||
}
|
}
|
||||||
function define_functions_env() {
|
function define_functions_env() {
|
||||||
function setversion() {
|
function setversion() {
|
||||||
|
@ -2042,6 +2052,14 @@ function define_functions_cmd() {
|
||||||
imagetags+=("$imagetag")
|
imagetags+=("$imagetag")
|
||||||
else
|
else
|
||||||
for tag in "${set_tags[@]}" "${add_tags[@]}"; do
|
for tag in "${set_tags[@]}" "${add_tags[@]}"; do
|
||||||
|
if [ "$tag" == LATEST ]; then
|
||||||
|
if [ -n "$HAVE_VERSION" -a "$VERSION" == "$LAST_VERSION" ]; then
|
||||||
|
tag=latest
|
||||||
|
else
|
||||||
|
# ignorer le tag LATEST s'il n'est pas applicable
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
fi
|
||||||
imagetags+=("$imagetag:$tag")
|
imagetags+=("$imagetag:$tag")
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
@ -2054,10 +2072,16 @@ function define_functions_cmd() {
|
||||||
imagetags+=("$imagetag")
|
imagetags+=("$imagetag")
|
||||||
else
|
else
|
||||||
for tag in "${add_tags[@]}"; do
|
for tag in "${add_tags[@]}"; do
|
||||||
|
if [ "$tag" == LATEST ]; then
|
||||||
|
# toujours ignorer le tag LATEST dans add_tags
|
||||||
|
continue
|
||||||
|
fi
|
||||||
imagetags+=("$imagetag:$tag")
|
imagetags+=("$imagetag:$tag")
|
||||||
done
|
done
|
||||||
[ -n "$VERSION" ] && imagetags+=("$imagetag:$VERSION-$DIST")
|
[ -n "$VERSION" ] && imagetags+=("$imagetag:$VERSION-$DIST")
|
||||||
[ -n "$DIST" -a -z "$HAVE_VERSION" ] && imagetags+=("$imagetag:$DIST")
|
if [ -n "$DIST" -a "$DIST" != none -a -z "$HAVE_VERSION" ]; then
|
||||||
|
imagetags+=("$imagetag:$DIST")
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
@ -2066,7 +2090,7 @@ function define_functions_cmd() {
|
||||||
if [ -z "$HAVE_VERSION" ]; then
|
if [ -z "$HAVE_VERSION" ]; then
|
||||||
dist LATEST && imagetags+=("$imagetag:latest")
|
dist LATEST && imagetags+=("$imagetag:latest")
|
||||||
elif [ "$VERSION" == "$LAST_VERSION" ]; then
|
elif [ "$VERSION" == "$LAST_VERSION" ]; then
|
||||||
imagetags+=("$imagetag:$DIST")
|
[ "$DIST" != none ] && imagetags+=("$imagetag:$DIST")
|
||||||
dist LATEST && imagetags+=("$imagetag:latest")
|
dist LATEST && imagetags+=("$imagetag:latest")
|
||||||
fi
|
fi
|
||||||
elif [ -n "$PROFILE" ]; then
|
elif [ -n "$PROFILE" ]; then
|
||||||
|
|
4
lgrep
4
lgrep
|
@ -3,10 +3,10 @@
|
||||||
source "$(dirname "$0")/lib/ulib/auto" || exit 1
|
source "$(dirname "$0")/lib/ulib/auto" || exit 1
|
||||||
|
|
||||||
function display_help() {
|
function display_help() {
|
||||||
uecho "$scriptname: frontend de grep pour lire des fichiers encodés en latin1
|
uecho "$scriptname: frontend de grep pour chercher dans un fichier encodé en latin1
|
||||||
|
|
||||||
USAGE
|
USAGE
|
||||||
$scriptname [options] files...
|
$scriptname [options] FILE
|
||||||
|
|
||||||
OPTIONS
|
OPTIONS
|
||||||
options de grep qui sont reprises telles quelles"
|
options de grep qui sont reprises telles quelles"
|
||||||
|
|
|
@ -154,7 +154,7 @@ function ctmatch_one(ctval, ref, parts, part, i, j, start, end, ste
|
||||||
#print "final: is " ref " ~ " ctval " ? " (ok? "yes": "no") #DEBUG
|
#print "final: is " ref " ~ " ctval " ? " (ok? "yes": "no") #DEBUG
|
||||||
return ok
|
return ok
|
||||||
}
|
}
|
||||||
function ctmatch_all(M, H, dom, mon, dow, refM, refH, refdom, refmon, refdow, Mok, Hok, domok, monok, dowok) {
|
function ctmatch_all(M, H, dom, mon, dow, refM, refH, refdom, refmon, refdow, Mok, Hok, alldom, domok, monok, alldow, dowok, doxok) {
|
||||||
if (refM == "**ANY**") return 1
|
if (refM == "**ANY**") return 1
|
||||||
|
|
||||||
gsub(/\*/, "0-59", M)
|
gsub(/\*/, "0-59", M)
|
||||||
|
@ -163,16 +163,28 @@ function ctmatch_all(M, H, dom, mon, dow, refM, refH, refdom, refmon, refdow,
|
||||||
gsub(/\*/, "0-23", H)
|
gsub(/\*/, "0-23", H)
|
||||||
Hok = ctmatch_one(H, refH)
|
Hok = ctmatch_one(H, refH)
|
||||||
|
|
||||||
|
alldom = dom == "*"
|
||||||
gsub(/\*/, "1-31", dom)
|
gsub(/\*/, "1-31", dom)
|
||||||
domok = ctmatch_one(dom, refdom)
|
domok = ctmatch_one(dom, refdom)
|
||||||
|
|
||||||
gsub(/\*/, "1-12", mon)
|
gsub(/\*/, "1-12", mon)
|
||||||
monok = ctmatch_one(mon, refmon)
|
monok = ctmatch_one(mon, refmon)
|
||||||
|
|
||||||
|
alldow = dow == "*"
|
||||||
gsub(/\*/, "1-7", dow)
|
gsub(/\*/, "1-7", dow)
|
||||||
dowok = ctmatch_one(dow, refdow)
|
dowok = ctmatch_one(dow, refdow)
|
||||||
|
|
||||||
return Mok && Hok && monok && (domok || dowok)
|
if (alldom && alldow) {
|
||||||
|
doxok = 1
|
||||||
|
} else if (alldom) {
|
||||||
|
doxok = dowok
|
||||||
|
} else if (alldow) {
|
||||||
|
doxok = domok
|
||||||
|
} else {
|
||||||
|
doxok = domok || dowok
|
||||||
|
}
|
||||||
|
|
||||||
|
return Mok && Hok && monok && doxok
|
||||||
}
|
}
|
||||||
function print_cmd(cmd) {
|
function print_cmd(cmd) {
|
||||||
print "__ctexec " quote_value(cmd)
|
print "__ctexec " quote_value(cmd)
|
||||||
|
|
|
@ -213,7 +213,7 @@ function tl_modifyattr() {
|
||||||
dn = ""
|
dn = ""
|
||||||
}
|
}
|
||||||
sub(/:+$/, "", attr)
|
sub(/:+$/, "", attr)
|
||||||
if (lastattr != attr) {
|
if (tolower(lastattr) != tolower(attr)) {
|
||||||
if (lastattr != "") {
|
if (lastattr != "") {
|
||||||
print "-"
|
print "-"
|
||||||
}
|
}
|
||||||
|
@ -248,7 +248,7 @@ function tl_deleteattr() {
|
||||||
dn = ""
|
dn = ""
|
||||||
}
|
}
|
||||||
sub(/:+$/, "", attr)
|
sub(/:+$/, "", attr)
|
||||||
if (lastattr != attr) {
|
if (tolower(lastattr) != tolower(attr)) {
|
||||||
if (lastattr != "") {
|
if (lastattr != "") {
|
||||||
print "-"
|
print "-"
|
||||||
}
|
}
|
||||||
|
|
4
lless
4
lless
|
@ -3,10 +3,10 @@
|
||||||
source "$(dirname "$0")/lib/ulib/auto" || exit 1
|
source "$(dirname "$0")/lib/ulib/auto" || exit 1
|
||||||
|
|
||||||
function display_help() {
|
function display_help() {
|
||||||
uecho "$scriptname: frontend de less pour lire des fichiers encodés en latin1
|
uecho "$scriptname: frontend de less pour lire un fichier encodé en latin1
|
||||||
|
|
||||||
USAGE
|
USAGE
|
||||||
$scriptname [options] files...
|
$scriptname [options] FILE
|
||||||
|
|
||||||
OPTIONS
|
OPTIONS
|
||||||
-S, --chop-long-lines
|
-S, --chop-long-lines
|
||||||
|
|
139
reginc
139
reginc
|
@ -12,62 +12,111 @@ remplacer les nombres de FROMmin à FROMmax par leur valeur correspondante,
|
||||||
sachant que FROMmin doit être remplacé par TO. On peut mentionner autant de
|
sachant que FROMmin doit être remplacé par TO. On peut mentionner autant de
|
||||||
couples (FROM, TO) que nécessaire: ils seront traités dans l'ordre
|
couples (FROM, TO) que nécessaire: ils seront traités dans l'ordre
|
||||||
|
|
||||||
|
$scriptname -r FROMmin-FROMmax TO FILEs...
|
||||||
|
|
||||||
|
renommer les fichiers en remplaçant les nombres de FROMmin à FROMmax par leur
|
||||||
|
valeur correspondante, sachant que FROMmin doit être remplacé par TO
|
||||||
|
|
||||||
OPTIONS
|
OPTIONS
|
||||||
-n, --fake
|
-n, --fake
|
||||||
Afficher le fichier tel qu'il serait modifié au lieu de le modifier en
|
Afficher le fichier tel qu'il serait modifié au lieu de le modifier en
|
||||||
place"
|
place
|
||||||
|
-r, --rename
|
||||||
|
Renommer les fichiers au lieu de modifier le texte à l'intérieur du
|
||||||
|
fichier. Attention, l'ordre des arguments est différent avec cette
|
||||||
|
option"
|
||||||
}
|
}
|
||||||
|
|
||||||
fake=
|
function process_file() {
|
||||||
|
local file from to fromb frome seds r
|
||||||
|
|
||||||
|
file="$1"; shift
|
||||||
|
[ -n "$file" ] || die "vous devez spécifier le fichier à modifier"
|
||||||
|
|
||||||
|
seds=
|
||||||
|
while [ $# -ge 2 ]; do
|
||||||
|
from="$1"
|
||||||
|
if [[ "$from" == *-* ]]; then
|
||||||
|
let fromb="${from%-*}"
|
||||||
|
let frome="${from#*-}"
|
||||||
|
else
|
||||||
|
let fromb="$from"
|
||||||
|
let frome="$from"
|
||||||
|
fi
|
||||||
|
let to="$2"; shift 2
|
||||||
|
|
||||||
|
if [ "$to" -eq "$fromb" ]; then
|
||||||
|
einfo "$fromb --> $to aucune modification n'est nécessaire"
|
||||||
|
|
||||||
|
elif [ "$to" -lt "$fromb" ]; then
|
||||||
|
einfo "$fromb-$frome --> $to-$((to+frome-fromb))"
|
||||||
|
|
||||||
|
let from=fromb
|
||||||
|
while [ "$from" -le "$frome" ]; do
|
||||||
|
seds="$seds${seds:+; }s/$from/$to/g"
|
||||||
|
let from=from+1
|
||||||
|
let to=to+1
|
||||||
|
done
|
||||||
|
|
||||||
|
elif [ "$to" -gt "$fromb" ]; then
|
||||||
|
einfo "$frome-$fromb --> $((to+frome-fromb))-$to"
|
||||||
|
|
||||||
|
let from=frome
|
||||||
|
let to=to+frome-fromb
|
||||||
|
while [ "$from" -ge "$fromb" ]; do
|
||||||
|
seds="$seds${seds:+; }s/$from/$to/g"
|
||||||
|
let from=from-1
|
||||||
|
let to=to-1
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
edebug "Script sed: $seds"
|
||||||
|
|
||||||
|
[ -n "$Fake" ] && args=() || args=(-i)
|
||||||
|
args+=("$seds" "$file")
|
||||||
|
sed "${args[@]}"; r=$?
|
||||||
|
|
||||||
|
[ -z "$Fake" -a $r -eq 0 ]
|
||||||
|
}
|
||||||
|
|
||||||
|
Fake=
|
||||||
|
rename=
|
||||||
args=(
|
args=(
|
||||||
--help '$exit_with display_help'
|
--help '$exit_with display_help'
|
||||||
-n,--fake fake=1
|
-n,--Fake Fake=1
|
||||||
|
-r,--rename rename=1
|
||||||
)
|
)
|
||||||
parse_args "$@"; set -- "${args[@]}"
|
parse_args "$@"; set -- "${args[@]}"
|
||||||
|
|
||||||
file="$1"; shift
|
if [ -n "$rename" ]; then
|
||||||
[ -n "$file" ] || die "vous devez spécifier le fichier à modifier"
|
from="$1"; to="$2"; shift 2
|
||||||
|
|
||||||
seds=
|
froms=("$@")
|
||||||
while [ $# -ge 2 ]; do
|
ac_set_tmpfile tmptos
|
||||||
from="$1"
|
echo "tos=(" >>"$tmptos"
|
||||||
if [[ "$from" == *-* ]]; then
|
for file in "${froms[@]}"; do
|
||||||
let fromb="${from%-*}"
|
qval "$file" >>"$tmptos"
|
||||||
let frome="${from#*-}"
|
done
|
||||||
else
|
echo ")" >>"$tmptos"
|
||||||
let fromb="$from"
|
|
||||||
let frome="$from"
|
|
||||||
fi
|
|
||||||
let to="$2"; shift 2
|
|
||||||
|
|
||||||
if [ "$to" -eq "$fromb" ]; then
|
Fake= process_file "$tmptos" "$from" "$to"
|
||||||
einfo "$fromb --> $to aucune modification n'est nécessaire"
|
eval "$(<"$tmptos")"
|
||||||
|
|
||||||
elif [ "$to" -lt "$fromb" ]; then
|
i=0
|
||||||
einfo "$fromb-$frome --> $to-$((to+frome-fromb))"
|
count=${#froms[*]}
|
||||||
|
while [ $i -lt $count ]; do
|
||||||
|
from="${froms[$i]}"
|
||||||
|
to="${tos[$i]}"
|
||||||
|
if [ "$to" == "$from" ]; then
|
||||||
|
ewarn "$from: renommage non nécessaire"
|
||||||
|
else
|
||||||
|
estep "$from --> $to"
|
||||||
|
[ -z "$Fake" ] && mv "$from" "$to"
|
||||||
|
fi
|
||||||
|
let i=i+1
|
||||||
|
done
|
||||||
|
|
||||||
let from=fromb
|
else
|
||||||
while [ "$from" -le "$frome" ]; do
|
process_file "$@"
|
||||||
seds="$seds${seds:+; }s/$from/$to/g"
|
fi
|
||||||
let from=from+1
|
|
||||||
let to=to+1
|
|
||||||
done
|
|
||||||
|
|
||||||
elif [ "$to" -gt "$fromb" ]; then
|
|
||||||
einfo "$frome-$fromb --> $((to+frome-fromb))-$to"
|
|
||||||
|
|
||||||
let from=frome
|
|
||||||
let to=to+frome-fromb
|
|
||||||
while [ "$from" -ge "$fromb" ]; do
|
|
||||||
seds="$seds${seds:+; }s/$from/$to/g"
|
|
||||||
let from=from-1
|
|
||||||
let to=to-1
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
edebug "Script sed: $seds"
|
|
||||||
|
|
||||||
[ -n "$fake" ] && args=() || args=(-i)
|
|
||||||
args+=("$seds" "$file")
|
|
||||||
sed "${args[@]}"
|
|
||||||
|
|
Loading…
Reference in New Issue