#!/usr/bin/perl -w =head1 NAME dh_bash-completion - install bash completions for package =cut use strict; use File::Find; use Debian::Debhelper::Dh_Lib; =head1 SYNOPSIS B [S>] =head1 DESCRIPTION dh_bash-completion is a debhelper program that is responsible for installing completions for bash, usable installing the "bash-completion" package. If a file named debian/package.bash-completion exists, then different actions are performed, depending on its format. It can be a proper completion snippet, and in that case it would be installed in the completion directory, and no other actions would be performed. It can also be a list of files, with an optionally specified name to call the completion snippet after. The file format is as follows: my/path/to/foo-completion # this would be installed as "foo-completion" my/path/to/bar-completion baz # this would be installed as "baz" =cut init(); my $srcdir = '.'; $srcdir = $dh{SOURCEDIR}."/" if defined $dh{SOURCEDIR}; PKG: foreach my $package (@{$dh{DOPACKAGES}}) { next if is_udeb($package); my $tmp = tmpdir($package); my $bc_dir = "$tmp/etc/bash_completion.d"; my $completions = pkgfile($package,"bash-completion"); my @install; my $name; if ($completions) { if (! -d "$bc_dir") { doit("install", "-d", "$bc_dir"); } # try parsing a list of files @install = filedoublearray($completions); foreach my $set (@install) { my @filelist; my @tmp = @$set; if (@$set > 1) { $name = pop @$set; } else { $name = basename($tmp[0]); } verbose_print "installing $tmp[0] as $name"; my @found; foreach my $glob (@$set) { @found = glob "$srcdir/$glob"; if (!compat(6)) { # Fall back to looking into debian/tmp if (!@found || !-e $found[0]) { @found = glob "debian/tmp/$glob"; } } if (!@found || !-e $found[0]) { warning "file-list parsing failed, installing as proper snippet"; doit("install", "-p", "-m644", $completions, "$bc_dir/$package"); next PKG } push @filelist, @found; } if (! compat(4)) { # check added in v5 # glob now, relative to srcdir if (!@filelist) { error("$package missing files (@$set), aborting"); } } foreach my $src (@filelist) { doit("install", "-p", "-m644", $src, "$bc_dir/$name"); } } } } =head1 SEE ALSO L This program is a part of bash-completion. L =head1 AUTHOR David Paleino =cut