1
0

zsh: update

This commit is contained in:
2024-07-05 13:18:16 +03:00
parent 8283b6c752
commit e3ff1bcb69
14 changed files with 124 additions and 44 deletions

View File

@@ -1,20 +1,45 @@
#!/bin/zsh
z-quilt() { command quilt "$@" ; }
quilt-series-strip-comments() {
sed -E '/^[[:space:]]*(#|$)/d' "$@"
}
quilt-series-auto() {
[ -n "${1:?}" ]
[ -d "$1" ] || return 1
find "$1/" -follow -type f -printf '%P\0' \
| sed -zEn '/\.(diff|patch)$/p' \
| sort -zuV | xargs -0r -n1
| sort -zuV \
| xargs -0r printf '%s\n'
}
krd-quilt() {
(( $+commands[quilt] )) || return 127
[ $# -gt 0 ] || return 1
local i
local -i n_opt=0
local -i o_continue=0
for i ; do
case "${i:?}" in
-c | --continue )
o_continue=1
;;
-* )
env printf 'unrecognized option: %q\n' "$1"
return 1
;;
* ) break ;;
esac
n_opt=$[n_opt+1]
done
[ ${n_opt} -eq 0 ] || shift ${n_opt}
[ $# -gt 0 ] || return 1
[ -n "${1:?}" ]
local patchdir series tmp_series
@@ -29,17 +54,18 @@ krd-quilt() {
series="${patchdir}/series"
if ! [ -f "${series}" ] ; then
tmp_series=1
series=$(mktemp)
mkdir -p "$1/.pc" || return 1
series="$1/.pc/krd-quilt-series"
touch "${series}" || return 1
quilt-series-auto "${patchdir}" > "${series}"
fi
elif [ -f "$1" ] ; then
[ -s "$1" ] || return 2
[ -s "$1" ] || return 1
series="$1"
patchdir=${series:h}
else
return 3
return 1
fi
local r
@@ -50,16 +76,19 @@ krd-quilt() {
QUILT_PATCHES="${patchdir}"
set +a
command quilt pop -a ; echo
if [ ${o_continue} -eq 0 ] ; then
z-quilt pop -a
echo
fi
r=0
while read -rs i ; do
[ -n "$i" ] || continue
k="${patchdir}/$i"
command quilt --fuzz=0 push "$k"
z-quilt --fuzz=0 push "$k"
r=$? ; [ $r -eq 0 ] || exit $r
command quilt refresh "$k"
z-quilt refresh "$k"
r=$? ; [ $r -eq 0 ] || exit $r
sed -E -i \
@@ -68,12 +97,16 @@ krd-quilt() {
"$k"
rm -f "$k"'~'
done <<< $(quilt-series-strip-comments "${series}")
done <<< $(
if [ ${o_continue} -eq 1 ] ; then
z-quilt unapplied
else
quilt-series-strip-comments "${series}"
fi
)
exit $r
)
r=$?
[ -z "${tmp_series}" ] || rm -f "${series}"
return $r
}