Bug#877440: debsign: broken bash completion

Cyril Brulebois kibi at debian.org
Sun Oct 1 19:48:42 UTC 2017


Package: devscripts
Version: 2.17.6+deb9u1
Severity: important
Tags: patch

Hi,

As mentioned on #dd earlier, bash completion for debsign doesn't work:
the filename gets completed based on the longest prefix as usual, but
if one types e.g. "." for a ".dsc", the rest isn't completed. Looking
at the code, acceptable answers (COMPREPLY) are determined by
appending a few known suffixes to the current word. This doesn't work
once we're past the common part.

After a quick research (read: I haven't checked official documentation
for best practices, etc.), the attached patch looks reasonable to me:
the known suffixes are added as such (instead of as globs using the
current word), and results are filtered using the current word.

Below, you'll find examples based on my ~/debian-installer directory,
with differences before/after applying the patch.

================================================================================================

Before:
-------

[1] kibi at armor:~/debian-installer$ debsign debian-installer_201
debian-installer_201611XX_amd64.buildinfo          debian-installer_20170615+deb9u2.dsc
debian-installer_201611XX_amd64.changes            debian-installer_20170615+deb9u2_source.buildinfo
debian-installer_20170525.dsc                      debian-installer_20170615+deb9u2_source.changes
debian-installer_20170525_source.changes           debian-installer_20170615.dsc
debian-installer_20170608_amd64.buildinfo          debian-installer_20170615_source.buildinfo
debian-installer_20170608_amd64.changes            debian-installer_20170615_source.changes
debian-installer_20170608.dsc                      debian-installer_20170828_amd64.buildinfo
debian-installer_20170608_source.changes           debian-installer_20170828_amd64.changes
debian-installer_20170615+deb9u2_amd64.buildinfo   debian-installer_20170828.dsc
debian-installer_20170615+deb9u2_amd64.changes     debian-installer_20170828_source.changes

[2] kibi at armor:~/debian-installer$ debsign debian-installer_20170615
debian-installer_20170615+deb9u2_amd64.buildinfo   debian-installer_20170615+deb9u2_source.changes
debian-installer_20170615+deb9u2_amd64.changes     debian-installer_20170615.dsc
debian-installer_20170615+deb9u2.dsc               debian-installer_20170615_source.buildinfo
debian-installer_20170615+deb9u2_source.buildinfo  debian-installer_20170615_source.changes

[3] kibi at armor:~/debian-installer$ debsign debian-installer_20170615+deb9u2
debian-installer_20170615+deb9u2_amd64.buildinfo   debian-installer_20170615+deb9u2_source.buildinfo
debian-installer_20170615+deb9u2_amd64.changes     debian-installer_20170615+deb9u2_source.changes
debian-installer_20170615+deb9u2.dsc

[4] kibi at armor:~/debian-installer$ debsign debian-installer_20170615+deb9u2.
[nothing]

[5] kibi at armor:~/debian-installer$ debsign debian-installer_20170615+deb9u2_amd64.
[nothing]

================================================================================================

After:
------

[1] kibi at armor:~/debian-installer$ debsign debian-installer_201
debian-installer_201611XX_amd64.buildinfo          debian-installer_20170615+deb9u2.dsc
debian-installer_201611XX_amd64.changes            debian-installer_20170615+deb9u2_source.buildinfo
debian-installer_20170525.dsc                      debian-installer_20170615+deb9u2_source.changes
debian-installer_20170525_source.changes           debian-installer_20170615.dsc
debian-installer_20170608_amd64.buildinfo          debian-installer_20170615_source.buildinfo
debian-installer_20170608_amd64.changes            debian-installer_20170615_source.changes
debian-installer_20170608.dsc                      debian-installer_20170828_amd64.buildinfo
debian-installer_20170608_source.changes           debian-installer_20170828_amd64.changes
debian-installer_20170615+deb9u2_amd64.buildinfo   debian-installer_20170828.dsc
debian-installer_20170615+deb9u2_amd64.changes     debian-installer_20170828_source.changes

[2] kibi at armor:~/debian-installer$ debsign debian-installer_20170615
debian-installer_20170615+deb9u2_amd64.buildinfo   debian-installer_20170615+deb9u2_source.changes
debian-installer_20170615+deb9u2_amd64.changes     debian-installer_20170615.dsc
debian-installer_20170615+deb9u2.dsc               debian-installer_20170615_source.buildinfo
debian-installer_20170615+deb9u2_source.buildinfo  debian-installer_20170615_source.changes

[3] kibi at armor:~/debian-installer$ debsign debian-installer_20170615+deb9u2
debian-installer_20170615+deb9u2_amd64.buildinfo   debian-installer_20170615+deb9u2_source.buildinfo
debian-installer_20170615+deb9u2_amd64.changes     debian-installer_20170615+deb9u2_source.changes
debian-installer_20170615+deb9u2.dsc

[4] kibi at armor:~/debian-installer$ debsign debian-installer_20170615+deb9u2.
→ completes the filename: debian-installer_20170615+deb9u2.dsc

[5a] kibi at armor:~/debian-installer$ debsign debian-installer_20170615+deb9u2_amd64.
debian-installer_20170615+deb9u2_amd64.buildinfo  debian-installer_20170615+deb9u2_amd64.changes

[5b] kibi at armor:~/debian-installer$ debsign debian-installer_20170615+deb9u2_amd64.c
→ completes the filename: debian-installer_20170615+deb9u2_amd64.changes


================================================================================================

Thanks for considering, for unstable and for stretch.


KiBi.
-------------- next part --------------
>From a8afcc778da9109d85e55ceb5fa6e380f82889ff Mon Sep 17 00:00:00 2001
From: Cyril Brulebois <kibi at debian.org>
Date: Sun, 1 Oct 2017 21:10:26 +0200
Subject: [PATCH] debsign: Fix bash completion.

Use file extensions instead of globs.
---
 debian/changelog                | 4 ++++
 scripts/debsign.bash_completion | 8 ++++----
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index dd2ecc74..332b60d6 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -28,6 +28,10 @@ devscripts (2.17.11) UNRELEASED; urgency=medium
   [ Christoph Berg ]
   * origtargz: Allow invocation from subdirectory. (Closes: #702636)
 
+  [ Cyril Brulebois ]
+  * debsign: Fix bash completion by using file extensions instead of
+    using globs.
+
  -- Chris Lamb <lamby at debian.org>  Wed, 27 Sep 2017 13:24:39 +0100
 
 devscripts (2.17.10) unstable; urgency=medium
diff --git a/scripts/debsign.bash_completion b/scripts/debsign.bash_completion
index 21ea89e9..ebaaa7fd 100644
--- a/scripts/debsign.bash_completion
+++ b/scripts/debsign.bash_completion
@@ -19,10 +19,10 @@ _debsign()
             ;;
         *)
             COMPREPLY=( $(
-                    compgen -G "${cur}*.changes"
-                    compgen -G "${cur}*.buildinfo"
-                    compgen -G "${cur}*.dsc"
-                    compgen -G "${cur}*.commands"
+                    compgen -f -X "!*.changes"   -- "$cur"
+                    compgen -f -X "!*.buildinfo" -- "$cur"
+                    compgen -f -X "!*.dsc"       -- "$cur"
+                    compgen -f -X "!*.commands"  -- "$cur"
                     compgen -W "$options" | grep "^$cur"
                 ) )
             ;;
-- 
2.11.0



More information about the devscripts-devel mailing list