public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Sam James" <sam@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/portage:master commit in: bin/install-qa-check.d/
Date: Fri, 30 May 2025 07:30:43 +0000 (UTC)	[thread overview]
Message-ID: <1748590231.f808b7d878041dbba66418e6b9ee0b1567c13471.sam@gentoo> (raw)

commit:     f808b7d878041dbba66418e6b9ee0b1567c13471
Author:     Kerin Millar <kfm <AT> plushkava <DOT> net>
AuthorDate: Wed Jul 24 15:24:47 2024 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Fri May 30 07:30:31 2025 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=f808b7d8

60bash-completion: refrain from using has() for better performance

Rather than use has(), define associative arrays to keep track of the
seen completions and file basenames. Also, correct the broken array
length checks.

Signed-off-by: Kerin Millar <kfm <AT> plushkava.net>
Signed-off-by: Sam James <sam <AT> gentoo.org>

 bin/install-qa-check.d/60bash-completion | 21 ++++++++++-----------
 1 file changed, 10 insertions(+), 11 deletions(-)

diff --git a/bin/install-qa-check.d/60bash-completion b/bin/install-qa-check.d/60bash-completion
index d3cb52d1c1..815ea55763 100644
--- a/bin/install-qa-check.d/60bash-completion
+++ b/bin/install-qa-check.d/60bash-completion
@@ -54,10 +54,9 @@ bashcomp_check() {
 			_have ${1} && have=yes
 		}
 
-		local f c completions
-		local all_compls=()
-		local all_files=()
-		local qa_warnings=()
+		local -A seen_completion seen_file
+		local -a completions qa_warnings
+		local f c
 
 		for f in "${instcompdir}"/*; do
 			# ignore directories and other non-files
@@ -76,7 +75,7 @@ bashcomp_check() {
 				unset 'completions[0]'
 			fi
 
-			if [[ -z ${completions[@]} ]]; then
+			if (( ! ${#completions[@]} )); then
 				continue
 			fi
 
@@ -86,28 +85,28 @@ bashcomp_check() {
 						"${f##*/}: absolute paths can not be used for completions (on '${c}')."
 					)
 				else
-					all_compls+=( "${c}" )
+					seen_completion[$c]=1
 				fi
 			done
 
-			if ! has "${f##*/}" "${all_compls[@]}"; then
+			if [[ ! ${seen_completion[${f##*/}]} ]]; then
 				qa_warnings+=(
 					"${f##*/}: incorrect name, no completions for '${f##*/}' command defined."
 				)
 			fi
 
-			all_files+=( "${f##*/}" )
+			seen_file[${f##*/}]=1
 		done
 
-		for c in "${all_compls[@]}"; do
-			if ! has "${c}" "${all_files[@]}"; then
+		for c in "${!seen_completion[@]}"; do
+			if [[ ! ${seen_file[$c]} ]]; then
 				qa_warnings+=(
 					"${c}: missing alias (symlink) for completed command."
 				)
 			fi
 		done
 
-		if [[ -n ${qa_warnings[@]} ]]; then
+		if (( ${#qa_warnings[@]} )); then
 			eqawarn "QA Notice: Problems with installed bash completions were found:"
 			eqawarn
 			for c in "${qa_warnings[@]}"; do


             reply	other threads:[~2025-05-30  7:30 UTC|newest]

Thread overview: 120+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-05-30  7:30 Sam James [this message]
  -- strict thread matches above, loose matches on Subject: below --
2025-06-28  2:30 [gentoo-commits] proj/portage:master commit in: bin/install-qa-check.d/ Sam James
2025-06-28  2:30 Sam James
2025-06-09  2:51 Sam James
2025-06-05 11:22 Sam James
2025-06-05 11:22 Sam James
2025-06-05 11:22 Sam James
2025-06-05 11:22 Sam James
2025-06-05  3:07 Sam James
2025-05-30  7:37 Sam James
2025-05-30  7:37 Sam James
2025-05-30  7:37 Sam James
2025-05-30  7:37 Sam James
2025-05-30  7:37 Sam James
2025-05-30  7:37 Sam James
2025-05-30  7:37 Sam James
2025-05-30  7:37 Sam James
2025-05-30  7:37 Sam James
2025-05-30  7:37 Sam James
2025-05-30  7:37 Sam James
2025-05-30  7:37 Sam James
2025-05-30  7:37 Sam James
2025-05-30  7:36 Sam James
2025-05-30  7:36 Sam James
2025-05-30  7:36 Sam James
2025-05-30  7:36 Sam James
2025-04-24 22:12 Sam James
2025-01-06 10:19 Ulrich Müller
2024-09-17 14:32 Matt Turner
2024-09-17 14:32 Matt Turner
2024-09-17 14:32 Matt Turner
2024-09-17 14:32 Matt Turner
2024-09-09 23:49 Sam James
2024-05-22 16:56 Sam James
2024-05-17  6:28 Sam James
2024-04-25  2:59 Mike Gilbert
2023-07-29  3:57 Sam James
2023-06-29  8:22 Sam James
2023-05-11  1:24 Sam James
2023-05-11  1:24 Sam James
2023-05-11  1:24 Sam James
2023-05-11  1:24 Sam James
2023-05-11  1:24 Sam James
2023-05-11  1:24 Sam James
2023-04-07 10:41 Sam James
2023-02-28  3:10 Sam James
2023-02-27  4:43 Sam James
2023-02-26 20:22 Sam James
2023-02-19 12:23 Sam James
2023-02-17  9:12 Sam James
2023-02-17  9:12 Sam James
2022-11-09  2:29 Sam James
2022-11-09  2:25 Sam James
2022-11-09  2:25 Sam James
2022-11-09  2:25 Sam James
2022-11-09  2:25 Sam James
2022-11-09  2:25 Sam James
2022-11-08 23:51 Sam James
2022-10-27 23:37 Sam James
2022-10-27 23:37 Sam James
2022-10-27 23:37 Sam James
2022-10-11 19:18 Sam James
2022-10-11 19:18 Sam James
2022-10-11 19:18 Sam James
2022-08-19  0:09 Sam James
2022-08-14 20:43 Sam James
2022-08-13 17:30 Sam James
2022-08-10  4:36 Sam James
2022-08-10  4:36 Sam James
2022-08-01 22:39 Sam James
2022-08-01 22:39 Sam James
2022-08-01 22:39 Sam James
2022-07-28  6:32 Fabian Groffen
2022-07-27  8:18 Fabian Groffen
2022-07-27  8:18 Fabian Groffen
2022-05-15  1:02 Sam James
2022-05-15  1:02 Sam James
2022-05-07 17:15 Mike Gilbert
2022-04-28 15:50 Sam James
2022-04-12  2:00 Sam James
2022-04-12  2:00 Sam James
2022-04-12  2:00 Sam James
2022-04-12  2:00 Sam James
2022-04-12  2:00 Sam James
2022-04-12  2:00 Sam James
2022-04-12  2:00 Sam James
2022-04-12  2:00 Sam James
2022-04-10 17:20 Sam James
2022-04-05  4:33 Sam James
2019-11-03 20:15 Zac Medico
2019-11-03 20:15 Zac Medico
2019-11-03 20:02 Zac Medico
2019-11-03 19:45 Zac Medico
2019-05-20  5:01 Zac Medico
2019-05-20  4:41 Zac Medico
2018-10-06  1:15 Zac Medico
2018-09-04 21:16 Michał Górny
2018-08-07 18:49 Zac Medico
2018-08-07 18:49 Zac Medico
2018-08-04 19:36 Zac Medico
2018-07-28  6:41 Zac Medico
2018-01-26  6:40 Michał Górny
2017-10-16 17:21 Zac Medico
2017-08-02  7:24 Zac Medico
2016-06-02  6:12 Zac Medico
2016-06-02  1:40 Zac Medico
2016-05-12 22:09 Mike Frysinger
2016-05-12 21:36 Mike Frysinger
2016-05-11 17:55 Mike Frysinger
2015-11-11  0:56 Mike Frysinger
2015-05-26  3:46 Mike Frysinger
2015-05-04  5:09 Zac Medico
2015-04-20  5:36 Michał Górny
2014-12-02 18:44 Brian Dolbec
2014-11-19 23:26 Michał Górny
2014-10-27 19:28 Zac Medico
2014-10-27 19:28 Zac Medico
2014-10-19 21:11 Brian Dolbec
2014-09-26  2:17 Brian Dolbec
2014-09-26  2:17 Brian Dolbec

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1748590231.f808b7d878041dbba66418e6b9ee0b1567c13471.sam@gentoo \
    --to=sam@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox