importation initiale dans git
This commit is contained in:
124
legacy/instinc/envsetup_update
Normal file
124
legacy/instinc/envsetup_update
Normal file
@@ -0,0 +1,124 @@
|
||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||
##@require sysinc/functions
|
||||
##@require envsetup
|
||||
|
||||
envsetup_tmpfile=
|
||||
function envsetup_init() {
|
||||
ac_set_tmpfile envsetup_tmpfile
|
||||
}
|
||||
|
||||
function move_after() {
|
||||
# dans le fichier $1, déplacer la ligne $2 après la ligne $3. Utiliser $4
|
||||
# comme fichier temporaire.
|
||||
# si $3==*, mettre la ligne $2 en dernier
|
||||
|
||||
if [ "$3" != "*" ] && ! quietgrep "$3" "$1"; then
|
||||
# la ligne "$3" doit exister
|
||||
return
|
||||
fi
|
||||
|
||||
uawk <"$1" >"$4" -v line="$2" -v after="$3" '
|
||||
BEGIN {
|
||||
found_line = 0
|
||||
found_after = 0
|
||||
}
|
||||
! found_line && $0 == line {
|
||||
found_line = 1
|
||||
if (! found_after) {
|
||||
next
|
||||
}
|
||||
}
|
||||
! found_after && $0 == after {
|
||||
found_after = 1
|
||||
if (found_line) {
|
||||
# si nous avons trouvé la ligne avant after, la mettre juste après
|
||||
# sinon, par la peine de faire de modification
|
||||
print
|
||||
print line
|
||||
next
|
||||
}
|
||||
}
|
||||
{ print }
|
||||
END {
|
||||
if (! found_after && after == "*") {
|
||||
if (found_line) {
|
||||
print line
|
||||
}
|
||||
}
|
||||
}
|
||||
'
|
||||
/bin/cp "$4" "$1"
|
||||
}
|
||||
|
||||
function move_before() {
|
||||
# dans le fichier $1, déplacer la ligne $2 avant la ligne $3. Utiliser $4
|
||||
# comme fichier temporaire
|
||||
# si $3==*, mettre la ligne $2 en premier
|
||||
|
||||
uawk <"$1" >"$4" -v line="$2" -v before="$3" '
|
||||
BEGIN {
|
||||
found_line = 0
|
||||
found_before = 0
|
||||
}
|
||||
! found_line && $0 == line {
|
||||
found_line = 1
|
||||
if (found_before) {
|
||||
next
|
||||
}
|
||||
}
|
||||
! found_before && ($0 == before || before == "*") {
|
||||
found_before = 1
|
||||
if (! found_line) {
|
||||
print line
|
||||
print
|
||||
next
|
||||
}
|
||||
}
|
||||
{ print }
|
||||
'
|
||||
/bin/cp "$4" "$1"
|
||||
}
|
||||
|
||||
envsetup_update_dir() {
|
||||
# mettre à jour un répertoire qui contient des inclusions. $1=le répertoire,
|
||||
# $2 un fichier temporaire qui est utilisé par cette fonction, $3=le
|
||||
# répertoire de destination, qui vaut $1 par défaut
|
||||
local system host user before after dir destdir file sio tmpfile
|
||||
|
||||
tmpfile="$2"
|
||||
dir="$(cd "$1"; pwd)"
|
||||
destdir="${3:-$dir}"
|
||||
sio="$dir/.source_in_order"
|
||||
|
||||
>"$sio"
|
||||
list_files "$dir" | while read file; do
|
||||
__envsetup_check_file "$dir" "$file" && echo "$file" >>"$sio"
|
||||
done
|
||||
|
||||
echo "$(< "$sio")" | while read file; do
|
||||
[ -z "$file" ] && continue
|
||||
|
||||
before="$(awk <"$dir/$file" '
|
||||
$0 ~ /^##@before / {
|
||||
print $2
|
||||
exit 0
|
||||
}
|
||||
')"
|
||||
if [ -n "$before" ]; then
|
||||
move_before "$sio" "$file" "$before" "$tmpfile"
|
||||
fi
|
||||
|
||||
after="$(awk <"$dir/$file" '
|
||||
$0 ~ /^##@after / {
|
||||
print $2
|
||||
exit 0
|
||||
}
|
||||
')"
|
||||
if [ -n "$after" ]; then
|
||||
move_after "$sio" "$file" "$after" "$tmpfile"
|
||||
fi
|
||||
done
|
||||
|
||||
uawk <"$sio" >"$tmpfile" -v destdir="$destdir" '{ print "source " destdir "/" $0 }'
|
||||
/bin/cp "$tmpfile" "$sio"
|
||||
}
|
||||
Reference in New Issue
Block a user