diff options
author | James McCoy <jamessan@debian.org> | 2018-12-27 23:43:13 -0500 |
---|---|---|
committer | James McCoy <jamessan@debian.org> | 2018-12-27 23:43:13 -0500 |
commit | 379b17f64bf92a0deb82c58c8f1a881e92ff274b (patch) | |
tree | c5f07d410104f04eb9e9e1a61ff47fbab5db141d | |
parent | e0ec53ab19cd9ff527fdd63f6a0c1e8f0fb3f82d (diff) |
Initial implementation of helper
Signed-off-by: James McCoy <jamessan@debian.org>
-rwxr-xr-x | dh_vim-addon | 51 |
1 files changed, 50 insertions, 1 deletions
diff --git a/dh_vim-addon b/dh_vim-addon index 545f8e1..741cc48 100755 --- a/dh_vim-addon +++ b/dh_vim-addon @@ -12,6 +12,7 @@ dh_vim-addon - debhelper addon to help package Vim/Neovim addons use strict; use warnings; use Debian::Debhelper::Dh_Lib; +use File::Spec; our $VERSION = '0.1'; @@ -61,7 +62,7 @@ used in the names of the files to install. =item debian/I<package>.neovim-opt-addon -This file follows the same format as F<vim-addon>, however they files will be +This file follows the same format as F<vim-addon>, however the files will be installed as an optional addon in I<package>. =back @@ -71,3 +72,51 @@ installed as an optional addon in I<package>. init(); # PROMISE: DH NOOP WITHOUT vim-addon vim-opt-addon neovim-addon neovim-opt-addon + +my %pkgfiledir = ( + 'vim-addon' => '/usr/share/vim/vimfiles/pack/dist-bundle/start', + 'vim-opt-addon' => '/usr/share/vim/vimfiles/pack/dist-bundle/opt', + 'neovim-addon' => '/usr/share/nvim/site/pack/dist-bundle/start', + 'neovim-opt-addon' => '/usr/share/nvim/site/pack/dist-bundle/opt', +); + +my $addon_root = qr@/(?:(?:autoload|colors|compiler|doc|ftplugin|indent|plugin|spell|syntax)/|(?:ftdetect|scripts)\.vim)@; +my @packages = getpackages(); +on_items_in_parallel(\@packages, sub { + foreach my $package (@_) { + my $tmp = tmpdir($package); + + foreach my $pkgfilebase (keys %pkgfiledir) { + my $pkgfile = pkgfile($package, $pkgfilebase); + my $skip_process = process_pkg($package) ? 0 : 1; + my @files; + @files = filearray($pkgfile, $tmp, \&glob_expand_error_handler_reject) if $pkgfile; + + log_installed_files($package, @files); + + next if $skip_process or !@files; + + my %tagdirs; + my $dest = $pkgfiledir{$pkgfilebase}; + my $base = (grep { /.*?$addon_root/ } @files)[0]; + error("Cannot find base of addon directory. No plugin/, colors/, doc/, syntax/, ftplugin/, autoload/, ftdetect.vim, or scripts.vim present.\n") unless $base; + + $base =~ s@$addon_root.*@@; + foreach my $file (@files) { + next if excludefile($file); + + (my $relpath = $file) =~ s@$base/@@; + my $destpath = File::Spec->join($dest, $package, $relpath); + make_symlink($destpath, $file, $tmp); + + if ($destpath =~ m@(.*/doc)/.*\.(?:txt|..x)(?:\.gz)?$@) { + $tagdirs{$1} = 1; + } + } + + if (scalar(%tagdirs)) { + doit('helpztags', sort keys %tagdirs); + } + } + } +}); |