* [PATCH] completion: use awk for filtering the config entries
@ 2024-02-16 17:10 Beat Bolli
2024-02-16 17:35 ` Junio C Hamano
0 siblings, 1 reply; 7+ messages in thread
From: Beat Bolli @ 2024-02-16 17:10 UTC (permalink / raw)
To: git
Cc: Beat Bolli, Philippe Blain,
Ævar Arnfjörð Bjarmason, Junio C Hamano
Commits 1e0ee4087e (completion: add and use
__git_compute_first_level_config_vars_for_section, 2024-02-10) and
6e32f718ff (completion: add and use
__git_compute_second_level_config_vars_for_section, 2024-02-10)
introduced new helpers for config completion.
Both helpers use a pipeline of grep and awk to filter the list of config
entries. awk is perfectly capable of filtering, so let's eliminate the
grep process and move the filtering into the awk script.
The "-E" grep option (extended syntax) was not necessary, as $section is
a single word.
While at it, wrap the over-long lines to make them more readable.
Signed-off-by: Beat Bolli <dev+git@drbeat.li>
---
Junio, this goes on top of 'pb/complete-config' which is on next
currently.
contrib/completion/git-completion.bash | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index 444b3efa63..fcf1afd75d 100644
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -2673,7 +2673,8 @@ __git_compute_first_level_config_vars_for_section ()
__git_compute_config_vars
local this_section="__git_first_level_config_vars_for_section_${section}"
test -n "${!this_section}" ||
- printf -v "__git_first_level_config_vars_for_section_${section}" %s "$(echo "$__git_config_vars" | grep -E "^${section}\.[a-z]" | awk -F. '{print $2}')"
+ printf -v "__git_first_level_config_vars_for_section_${section}" %s \
+ "$(echo "$__git_config_vars" | awk -F. "/^${section}\.[a-z]/ { print \$2 }")"
}
__git_compute_second_level_config_vars_for_section ()
@@ -2682,7 +2683,8 @@ __git_compute_second_level_config_vars_for_section ()
__git_compute_config_vars_all
local this_section="__git_second_level_config_vars_for_section_${section}"
test -n "${!this_section}" ||
- printf -v "__git_second_level_config_vars_for_section_${section}" %s "$(echo "$__git_config_vars_all" | grep -E "^${section}\.<" | awk -F. '{print $3}')"
+ printf -v "__git_second_level_config_vars_for_section_${section}" %s \
+ "$(echo "$__git_config_vars_all" | awk -F. "/^${section}\.</ { print \$3 }")"
}
__git_config_sections=
--
2.42.0.583.ga47b40fd90
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH] completion: use awk for filtering the config entries
2024-02-16 17:10 [PATCH] completion: use awk for filtering the config entries Beat Bolli
@ 2024-02-16 17:35 ` Junio C Hamano
2024-02-16 18:29 ` Beat Bolli
2024-02-16 18:47 ` Philippe Blain
0 siblings, 2 replies; 7+ messages in thread
From: Junio C Hamano @ 2024-02-16 17:35 UTC (permalink / raw)
To: Beat Bolli; +Cc: git, Philippe Blain, Ævar Arnfjörð Bjarmason
Beat Bolli <dev+git@drbeat.li> writes:
> Commits 1e0ee4087e (completion: add and use
> __git_compute_first_level_config_vars_for_section, 2024-02-10) and
> 6e32f718ff (completion: add and use
> __git_compute_second_level_config_vars_for_section, 2024-02-10)
> introduced new helpers for config completion.
>
> Both helpers use a pipeline of grep and awk to filter the list of config
> entries. awk is perfectly capable of filtering, so let's eliminate the
> grep process and move the filtering into the awk script.
Makes sense. I wonder if we can have some simple script sanity
checker that catches things like this, e.g., catting a single file
into pipe, grep appearing upstream of awk or sed, etc.
> The "-E" grep option (extended syntax) was not necessary, as $section is
> a single word.
>
> While at it, wrap the over-long lines to make them more readable.
>
> Signed-off-by: Beat Bolli <dev+git@drbeat.li>
> ---
>
> Junio, this goes on top of 'pb/complete-config' which is on next
> currently.
Alternatively we could redo the topic, squashing this fix in, after
the release when we rewind 'next'.
Thanks.
>
> contrib/completion/git-completion.bash | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
> index 444b3efa63..fcf1afd75d 100644
> --- a/contrib/completion/git-completion.bash
> +++ b/contrib/completion/git-completion.bash
> @@ -2673,7 +2673,8 @@ __git_compute_first_level_config_vars_for_section ()
> __git_compute_config_vars
> local this_section="__git_first_level_config_vars_for_section_${section}"
> test -n "${!this_section}" ||
> - printf -v "__git_first_level_config_vars_for_section_${section}" %s "$(echo "$__git_config_vars" | grep -E "^${section}\.[a-z]" | awk -F. '{print $2}')"
> + printf -v "__git_first_level_config_vars_for_section_${section}" %s \
> + "$(echo "$__git_config_vars" | awk -F. "/^${section}\.[a-z]/ { print \$2 }")"
> }
>
> __git_compute_second_level_config_vars_for_section ()
> @@ -2682,7 +2683,8 @@ __git_compute_second_level_config_vars_for_section ()
> __git_compute_config_vars_all
> local this_section="__git_second_level_config_vars_for_section_${section}"
> test -n "${!this_section}" ||
> - printf -v "__git_second_level_config_vars_for_section_${section}" %s "$(echo "$__git_config_vars_all" | grep -E "^${section}\.<" | awk -F. '{print $3}')"
> + printf -v "__git_second_level_config_vars_for_section_${section}" %s \
> + "$(echo "$__git_config_vars_all" | awk -F. "/^${section}\.</ { print \$3 }")"
> }
>
> __git_config_sections=
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] completion: use awk for filtering the config entries
2024-02-16 17:35 ` Junio C Hamano
@ 2024-02-16 18:29 ` Beat Bolli
2024-02-18 21:58 ` Johannes Schindelin
2024-02-16 18:47 ` Philippe Blain
1 sibling, 1 reply; 7+ messages in thread
From: Beat Bolli @ 2024-02-16 18:29 UTC (permalink / raw)
To: Junio C Hamano
Cc: git, Philippe Blain, Ævar Arnfjörð Bjarmason
On 16.02.24 18:35, Junio C Hamano wrote:
> Beat Bolli <dev+git@drbeat.li> writes:
>
>> Commits 1e0ee4087e (completion: add and use
>> __git_compute_first_level_config_vars_for_section, 2024-02-10) and
>> 6e32f718ff (completion: add and use
>> __git_compute_second_level_config_vars_for_section, 2024-02-10)
>> introduced new helpers for config completion.
>>
>> Both helpers use a pipeline of grep and awk to filter the list of config
>> entries. awk is perfectly capable of filtering, so let's eliminate the
>> grep process and move the filtering into the awk script.
>
> Makes sense. I wonder if we can have some simple script sanity
> checker that catches things like this, e.g., catting a single file
> into pipe, grep appearing upstream of awk or sed, etc.
Yes, there are quite a few cases of these in t/. I'm not sure if it's
worth the churn, though. At least it would make the tests faster on
Windows...
>> The "-E" grep option (extended syntax) was not necessary, as $section is
>> a single word.
>>
>> While at it, wrap the over-long lines to make them more readable.
>>
>> Signed-off-by: Beat Bolli <dev+git@drbeat.li>
>> ---
>>
>> Junio, this goes on top of 'pb/complete-config' which is on next
>> currently.
>
> Alternatively we could redo the topic, squashing this fix in, after
> the release when we rewind 'next'.
As you like. This commit would have to be split to apply to the two
original commits.
>> contrib/completion/git-completion.bash | 6 ++++--
>> 1 file changed, 4 insertions(+), 2 deletions(-)
>>
>> diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
>> index 444b3efa63..fcf1afd75d 100644
>> --- a/contrib/completion/git-completion.bash
>> +++ b/contrib/completion/git-completion.bash
>> @@ -2673,7 +2673,8 @@ __git_compute_first_level_config_vars_for_section ()
>> __git_compute_config_vars
>> local this_section="__git_first_level_config_vars_for_section_${section}"
>> test -n "${!this_section}" ||
>> - printf -v "__git_first_level_config_vars_for_section_${section}" %s "$(echo "$__git_config_vars" | grep -E "^${section}\.[a-z]" | awk -F. '{print $2}')"
>> + printf -v "__git_first_level_config_vars_for_section_${section}" %s \
>> + "$(echo "$__git_config_vars" | awk -F. "/^${section}\.[a-z]/ { print \$2 }")"
>> }
>>
>> __git_compute_second_level_config_vars_for_section ()
>> @@ -2682,7 +2683,8 @@ __git_compute_second_level_config_vars_for_section ()
>> __git_compute_config_vars_all
>> local this_section="__git_second_level_config_vars_for_section_${section}"
>> test -n "${!this_section}" ||
>> - printf -v "__git_second_level_config_vars_for_section_${section}" %s "$(echo "$__git_config_vars_all" | grep -E "^${section}\.<" | awk -F. '{print $3}')"
>> + printf -v "__git_second_level_config_vars_for_section_${section}" %s \
>> + "$(echo "$__git_config_vars_all" | awk -F. "/^${section}\.</ { print \$3 }")"
>> }
>>
>> __git_config_sections=
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] completion: use awk for filtering the config entries
2024-02-16 17:35 ` Junio C Hamano
2024-02-16 18:29 ` Beat Bolli
@ 2024-02-16 18:47 ` Philippe Blain
2024-02-16 20:12 ` Junio C Hamano
1 sibling, 1 reply; 7+ messages in thread
From: Philippe Blain @ 2024-02-16 18:47 UTC (permalink / raw)
To: Junio C Hamano, Beat Bolli; +Cc: git, Ævar Arnfjörð Bjarmason
Hi Beat and Junio,
Le 2024-02-16 à 12:35, Junio C Hamano a écrit :
> Beat Bolli <dev+git@drbeat.li> writes:
>
>> Commits 1e0ee4087e (completion: add and use
>> __git_compute_first_level_config_vars_for_section, 2024-02-10) and
>> 6e32f718ff (completion: add and use
>> __git_compute_second_level_config_vars_for_section, 2024-02-10)
>> introduced new helpers for config completion.
>>
>> Both helpers use a pipeline of grep and awk to filter the list of config
>> entries. awk is perfectly capable of filtering, so let's eliminate the
>> grep process and move the filtering into the awk script.
>
> Makes sense.
Yes, thanks for improving that!
> I wonder if we can have some simple script sanity
> checker that catches things like this, e.g., catting a single file
> into pipe, grep appearing upstream of awk or sed, etc.
>
>> The "-E" grep option (extended syntax) was not necessary, as $section is
>> a single word.
>>
>> While at it, wrap the over-long lines to make them more readable.
>>
>> Signed-off-by: Beat Bolli <dev+git@drbeat.li>
>> ---
>>
>> Junio, this goes on top of 'pb/complete-config' which is on next
>> currently.
>
> Alternatively we could redo the topic, squashing this fix in, after
> the release when we rewind 'next'.
>
> Thanks.
Actually you already merged this topic to master in 89400c3615, so it would
go on top, no ?
Thanks,
Philippe.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] completion: use awk for filtering the config entries
2024-02-16 18:47 ` Philippe Blain
@ 2024-02-16 20:12 ` Junio C Hamano
0 siblings, 0 replies; 7+ messages in thread
From: Junio C Hamano @ 2024-02-16 20:12 UTC (permalink / raw)
To: Philippe Blain; +Cc: Beat Bolli, git, Ævar Arnfjörð Bjarmason
Philippe Blain <levraiphilippeblain@gmail.com> writes:
>>> Junio, this goes on top of 'pb/complete-config' which is on next
>>> currently.
>>
>> Alternatively we could redo the topic, squashing this fix in, after
>> the release when we rewind 'next'.
>>
>> Thanks.
>
> Actually you already merged this topic to master in 89400c3615, so it would
> go on top, no ?
Ah, then that's fine. I didn't check what I read above myself
before responding X-<.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] completion: use awk for filtering the config entries
2024-02-16 18:29 ` Beat Bolli
@ 2024-02-18 21:58 ` Johannes Schindelin
2024-02-19 17:19 ` Junio C Hamano
0 siblings, 1 reply; 7+ messages in thread
From: Johannes Schindelin @ 2024-02-18 21:58 UTC (permalink / raw)
To: Beat Bolli
Cc: Junio C Hamano, git, Philippe Blain,
Ævar Arnfjörð Bjarmason
Hi Beat,
On Fri, 16 Feb 2024, Beat Bolli wrote:
> On 16.02.24 18:35, Junio C Hamano wrote:
> > Beat Bolli <dev+git@drbeat.li> writes:
> >
> > > Commits 1e0ee4087e (completion: add and use
> > > __git_compute_first_level_config_vars_for_section, 2024-02-10) and
> > > 6e32f718ff (completion: add and use
> > > __git_compute_second_level_config_vars_for_section, 2024-02-10)
> > > introduced new helpers for config completion.
> > >
> > > Both helpers use a pipeline of grep and awk to filter the list of config
> > > entries. awk is perfectly capable of filtering, so let's eliminate the
> > > grep process and move the filtering into the awk script.
> >
> > Makes sense. I wonder if we can have some simple script sanity
> > checker that catches things like this, e.g., catting a single file
> > into pipe, grep appearing upstream of awk or sed, etc.
>
> Yes, there are quite a few cases of these in t/. I'm not sure if it's worth
> the churn, though. At least it would make the tests faster on Windows...
Thank you for caring about the speed on Windows!
Ciao,
Johannes
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] completion: use awk for filtering the config entries
2024-02-18 21:58 ` Johannes Schindelin
@ 2024-02-19 17:19 ` Junio C Hamano
0 siblings, 0 replies; 7+ messages in thread
From: Junio C Hamano @ 2024-02-19 17:19 UTC (permalink / raw)
To: Johannes Schindelin
Cc: Beat Bolli, git, Philippe Blain,
Ævar Arnfjörð Bjarmason
Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
>> > Makes sense. I wonder if we can have some simple script sanity
>> > checker that catches things like this, e.g., catting a single file
>> > into pipe, grep appearing upstream of awk or sed, etc.
>>
>> Yes, there are quite a few cases of these in t/. I'm not sure if it's worth
>> the churn, though. At least it would make the tests faster on Windows...
>
> Thank you for caring about the speed on Windows!
Yup, that is why I asked ;-)
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2024-02-19 17:19 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-16 17:10 [PATCH] completion: use awk for filtering the config entries Beat Bolli
2024-02-16 17:35 ` Junio C Hamano
2024-02-16 18:29 ` Beat Bolli
2024-02-18 21:58 ` Johannes Schindelin
2024-02-19 17:19 ` Junio C Hamano
2024-02-16 18:47 ` Philippe Blain
2024-02-16 20:12 ` Junio C Hamano
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).