package Pod::Weaver::Section::Completion::GetoptLongComplete; our $DATE = '2016-04-30'; # DATE our $VERSION = '0.08'; # VERSION use 5.010001; use Moose; with 'Pod::Weaver::Role::AddTextToSection'; with 'Pod::Weaver::Role::Section'; with 'Pod::Weaver::Role::SectionText::SelfCompletion'; use List::Util qw(first); sub weave_section { my ($self, $document, $input) = @_; my $filename = $input->{filename} || 'file'; my $command_name; if ($filename =~ m!^(bin|script)/(.+)$!) { $command_name = $2; } else { $self->log_debug(["skipped file %s (not an executable)", $filename]); return; } # file looks like a completer script, don't bother generating completer for # completer :) if ($command_name =~ /\A_/) { $self->log_debug(["skipped script %s (a completer itself)", $filename]); return; } # find file content in zilla object, not directly in filesystem, because the # file might be generated dynamically by dzil. my $file = first { $_->name eq $filename } @{ $input->{zilla}->files }; unless ($file) { $self->log_fatal(["can't find file %s in zilla object", $filename]); } my $content = $file->content; #unless ($content =~ /\A#!.+perl/) { # $self->log_debug(["skipped file %s (not a Perl script)", # $filename]); # return; #} unless ($content =~ /(use|require)\s+Getopt::Long::Complete\b/) { $self->log_debug(["skipped file %s (does not use Getopt::Long::Complete)", $filename]); return; } my $text = $self->section_text_self_completion({command_name=>$command_name}); $self->add_text_to_section($document, $text, 'COMPLETION'); } no Moose; 1; # ABSTRACT: Add a COMPLETION section for Getopt::Long::Complete-based scripts __END__ =pod =encoding UTF-8 =head1 NAME Pod::Weaver::Section::Completion::GetoptLongComplete - Add a COMPLETION section for Getopt::Long::Complete-based scripts =head1 VERSION This document describes version 0.08 of Pod::Weaver::Section::Completion::GetoptLongComplete (from Perl distribution Pod-Weaver-Section-Completion-GetoptLongComplete), released on 2016-04-30. =head1 SYNOPSIS In your C: [Completion::GetoptLongComplete] =head1 DESCRIPTION This section plugin adds a COMPLETION section for Getopt::Long::Complete-based scripts. The section contains information on how to activate shell tab completion for the scripts. =for Pod::Coverage weave_section =head1 HOMEPAGE Please visit the project's homepage at L. =head1 SOURCE Source repository is at L. =head1 BUGS Please report any bugs or feature requests on the bugtracker website L When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature. =head1 SEE ALSO L =head1 AUTHOR perlancar =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2016 by perlancar@cpan.org. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut