generate-cmdlist.sh: do not shell out to "sed"
Replace the "sed" invocation in get_synopsis() with a pure-shell version. This speeds up generate-cmdlist.sh significantly. Compared to HEAD~ (old) and "master" we are, according to hyperfine(1): 'sh generate-cmdlist.sh command-list.txt' ran 12.69 ± 5.01 times faster than 'sh generate-cmdlist.sh.old command-list.txt' 18.34 ± 3.03 times faster than 'sh generate-cmdlist.sh.master command-list.txt' Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
8d5be8b421
commit
3ebeb1d6b1
@ -17,16 +17,6 @@ category_list () {
|
|||||||
LC_ALL=C sort -u
|
LC_ALL=C sort -u
|
||||||
}
|
}
|
||||||
|
|
||||||
get_synopsis () {
|
|
||||||
sed -n '
|
|
||||||
/^NAME/,/'"$1"'/H
|
|
||||||
${
|
|
||||||
x
|
|
||||||
s/.*'"$1"' - \(.*\)/N_("\1")/
|
|
||||||
p
|
|
||||||
}' "Documentation/$1.txt"
|
|
||||||
}
|
|
||||||
|
|
||||||
define_categories () {
|
define_categories () {
|
||||||
echo
|
echo
|
||||||
echo "/* Command categories */"
|
echo "/* Command categories */"
|
||||||
@ -61,7 +51,18 @@ print_command_list () {
|
|||||||
command_list "$1" |
|
command_list "$1" |
|
||||||
while read cmd rest
|
while read cmd rest
|
||||||
do
|
do
|
||||||
printf " { \"$cmd\", $(get_synopsis $cmd), 0"
|
synopsis=
|
||||||
|
while read line
|
||||||
|
do
|
||||||
|
case "$line" in
|
||||||
|
"$cmd - "*)
|
||||||
|
synopsis=${line#$cmd - }
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done <"Documentation/$cmd.txt"
|
||||||
|
|
||||||
|
printf '\t{ "%s", N_("%s"), 0' "$cmd" "$synopsis"
|
||||||
printf " | CAT_%s" $rest
|
printf " | CAT_%s" $rest
|
||||||
echo " },"
|
echo " },"
|
||||||
done
|
done
|
||||||
|
Reference in New Issue
Block a user