Message ID | patch-v2-10.10-e10a43756d1-20211022T193027Z-avarab@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Makefile: make generate-cmdlist.sh much faster | expand |
Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes: > Extend the pure-shell parsing of command-list.txt by using having using having??? > command_list() take an argument indicating whether we're interested in > the "$cmd" part of the line, or just the "$rest". OK, --no-cat stands for --no-category? Even if (or especially if, perhaps) you do not bother to parse the option in the command_list helper, it would help the readers if it is spelled out. I somehow thought if this option has anything to do with "/bin/cat". > That takes care of the "cut -d", and printf's auto-repeat feature can > replace the "tr". We don't need the "grep -v" either, as we're not > emitting any empty lines here (the command-list.txt doesn't have any). It may make sense to ensure that the case arm won't feed an empty line that made cmd an empty by tightening the condition. case "$cmd" in "#"*) continue ;; - *) + ?*) case "$exclude_programs" in *:"$cmd":*) ;; If anything, that would serve as a clear documentation that we are safe even when the input has an empty line.
diff --git a/generate-cmdlist.sh b/generate-cmdlist.sh index 2b184bbc65f..394443c66df 100755 --- a/generate-cmdlist.sh +++ b/generate-cmdlist.sh @@ -17,7 +17,12 @@ command_list () { *":$cmd:"*) ;; *) - echo "$cmd $rest" + if test -n "$1" + then + printf "%s\n" $rest + else + echo "$cmd $rest" + fi ;; esac esac @@ -25,10 +30,7 @@ command_list () { } category_list () { - command_list <"$1" | - cut -d' ' -f2- | - tr ' ' '\012' | - grep -v '^$' | + command_list --no-cat <"$1" | LC_ALL=C sort -u }
Extend the pure-shell parsing of command-list.txt by using having command_list() take an argument indicating whether we're interested in the "$cmd" part of the line, or just the "$rest". That takes care of the "cut -d", and printf's auto-repeat feature can replace the "tr". We don't need the "grep -v" either, as we're not emitting any empty lines here (the command-list.txt doesn't have any). This doesn't make things any faster or slower in my tests, but as with the preceding commit let's do it just to get rid of command invocations, it'll probably help on e.g. Windows. Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> --- generate-cmdlist.sh | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-)