NAME

Bash::Completion::Plugin - base class for Bash::Completion plugins

VERSION

version 0.003

SYNOPSIS

## Example plugin for xpto command
package Bash::Completion::Plugin::XPTO;

use strict;
use warnings;
use parent 'Bash::Completion::Plugin';
use Bash::Completion::Utils qw( command_in_path );

sub should_activate {
  return [grep { command_in_path(_) } ('xpto')];
}


## Optionally, for full control of the generated bash code
sub generate_bash_setup {
  return q{complete -C 'bash-complete complete XPTO' xpto};
}

## Use plugin arguments
sub generate_bash_setup {
  return q{complete -C 'bash-complete complete XPTO arg1 arg2 arg3' xpto};
}
## $plugin->args will have ['arg1', 'arg2', 'arg3']


sub complete {
  my ($self, $r) = @_;

  my @options = ('-h', '--help');
  $r->candidates(prefix_match($r->word, @options));
}
1;

DESCRIPTION

WARNING: the most important class for Plugin writers is the Request
class. Please note that the Request class interface is Alpha-quality
software, and I will update it before 1.0.

A base class for Bash::Completion plugins that provides the default implementations for the required plugin methods.

See the "SYNOPSIS" for an example of a plugin.

ATTRIBUTES

args

An list reference with plugin arguments.

METHODS

new

A basic plugin constructor. Accepts a list of key/values. Accepted keys:

args

A list reference with parameters to this plugin.

should_activate

The method should_activate() is used by the automatic setup of completion rules in the .bashrc. It should return a reference to a list of commands that the plugin is can complete.

If this method returns a reference to an empty list (the default), the plugin will not be used.

A common implementation of this method is to check the PATH for the command we want to provide completion, and return the com only if that command is found.

The Bash::Completion::Utils library has a command_in_path() that can be pretty useful here.

For example:

sub should_activate {
  return [grep { command_in_path($_) } qw( perldoc pod )];
}

generate_bash_setup

This method receives the list of commands that where found by "should_activate" and must return a list of options to use when creating the bash complete command.

For example, if a plugin returns [qw( nospace default )], the following bash code is generated:

complete -C 'bash-complete complete PluginName' -o nospace -o default command

By default this method returns a reference to an empty list.

Alternatively, and for complete control, you can return a string with the entire bash code to activate the plugin.

complete

The plugin completion logic. The class Bash::Completion will call this method with a Bash::Completion::Request object, and your code should use the Request candidates() method to set the possible completions.

The Bash::Completion::Utils library has two functions, match_perl_module() and prefix_math() that can be pretty useful here.

AUTHOR

Pedro Melo <melo@cpan.org>

COPYRIGHT AND LICENSE

This software is Copyright (c) 2010 by Pedro Melo.

This is free software, licensed under:

The Artistic License 2.0 (GPL Compatible)