perlancar

NAME

Shell::Completer - Easily add tab completion to existing CLI program

VERSION

This document describes version 0.002 of Shell::Completer (from Perl distribution Shell-Completer), released on 2016-10-20.

SYNOPSIS

Suppose you have a CLI named process-users that accepts some command-line options and arguments. To add tab completion for process-users, write _process-users as follows:

 #!/usr/bin/env perl
 use Shell::Completer;
 declare_completer(
     options => {
         'help|h'     => undef,               # no completion, no option value
         'verbose!'   => undef,               #
         'on-fail=s'  => ['skip', 'die'],     # complete from a list of words
         'template=s' => _file(file_ext_filter=>['tmpl', 'html']),
                                              # complete from *.tmpl or *.html files
         '<>'         => _user(),             # complete from list of users
     },
 );

Install it (on bash):

 % complete -C _process-users process-users

or use shcompgen.

Now you can do completion for process-users:

 % process-users -on<tab>
 % process-users --on-fail _

 % process-users --on-fail <tab>
 die     skip
 % process-users --on-fail s<tab>
 % process-users --on-fail skip _

 % process-users b<tab>
 bob     bobby

DESCRIPTION

EARLY RELEASE, EXPERIMENTAL.

This module lets you easily add shell tab completion to an existing CLI program.

COMPLETION FUNCTIONS

All these functions accept a hash argument.

_dir

Complete from directories. See Complete::File's complete_dir for more details.

_file

Complete from files. See Complete::File's complete_file for more details.

_gid

Complete from list of Unix GID's. See Complete::Unix's complete_gid for more details.

_group

Complete from list of Unix group names. See Complete::Unix's complete_group for more details.

_uid

Complete from list of Unix UID's. See Complete::Unix's complete_uid for more details.

_pid

Complete from list of running PID's. See Complete::Unix's complete_pid for more details.

_user

Complete from list of Unix user names. See Complete::Unix's complete_user for more details.

TODOS AND IDEAS

Add more completion functions.

Override | operator to combine answers, e.g.:

 'user|U=s' => _user() | _uid(),

FUNCTIONS

declare_completer(%args)

HOMEPAGE

Please visit the project's homepage at https://metacpan.org/release/Shell-Completer.

SOURCE

Source repository is at https://github.com/perlancar/perl-Shell-Completer.

BUGS

Please report any bugs or feature requests on the bugtracker website https://rt.cpan.org/Public/Dist/Display.html?Name=Shell-Completer

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.

SEE ALSO

Getopt::Long::Complete if you want to write a CLI program that can complete itself.

shcompgen from App::shcompgen.

AUTHOR

perlancar <perlancar@cpan.org>

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.