complete-module - Complete with installed Perl module names
This document describes version 0.150 of complete-module (from Perl distribution App-CompleteCLIs), released on 2021-05-09.
Usage:
% complete-module [--debug] [--exclude-dir] [--exclude-leaf] [--find-pm] [--find-pmc] [--find-pod] [--find-prefix] [--format=name] [--include-dir] [--include-leaf] [--json] [--log-level=level] [--(no)naked-res] [--no-find-pm] [--no-find-pmc] [--no-find-pod] [--no-find-prefix] [--no-recurse] [--nofind-pm] [--nofind-pmc] [--nofind-pod] [--nofind-prefix] [--norecurse] [--ns-prefix=s] [--ns-prefixes-json=s] [--ns-prefixes=s+] [--page-result[=program]] [--path-sep=s] [--quiet] [-r] [--recurse] [--recurse-matching=s] [--trace] [--verbose] [--view-result[=program]] <word>
For each directory in @INC (coderefs are ignored), find Perl modules and module prefixes which have word as prefix. So for example, given Te as word, will return e.g. [Template, Template::, Term::, Test, Test::, Text::]. Given Text:: will return [Text::ASCIITable, Text::Abbrev, ...] and so on.
@INC
word
Te
[Template, Template::, Term::, Test, Test::, Text::]
Text::
[Text::ASCIITable, Text::Abbrev, ...]
This function has a bit of overlapping functionality with Module::List, but this function is geared towards shell tab completion. Compared to Module::List, here are some differences: 1) list modules where prefix is incomplete; 2) interface slightly different; 3) (currently) doesn't do recursing; 4) contains conveniences for completion, e.g. map casing, expand intermediate paths (see Complete for more details on those features), autoselection of path separator character, some shortcuts, and so on.
Complete
* marks required options.
*
Namespace prefix.
This is useful if you want to complete module under a specific namespace (instead of the root). For example, if you set `ns_prefix` to `Dist::Zilla::Plugin` (or `Dist::Zilla::Plugin::`) and word is `F`, you can get `['FakeRelease', 'FileFinder::', 'FinderCode']` (those are modules under the `Dist::Zilla::Plugin::` namespace).
Namespace prefixes (JSON-encoded).
See --ns-prefixes.
--ns-prefixes
Namespace prefixes.
If you specify this instead of `ns_prefix`, then the routine will search from all the prefixes instead of just one.
Can be specified multiple times.
Path separator.
For convenience in shell (bash) completion, instead of defaulting to `::` all the time, will look at `word`. If word does not contain any `::` then will default to `/`. This is because `::` (contains colon) is rather problematic as it is by default a word-break character in bash and the word needs to be quoted to avoid word-breaking by bash.
Default value:
"level-by-level"
Valid values:
["level-by-level","all-at-once"]
Word to complete.
""
Can also be specified as the 1st command-line argument.
Shortcut for --log-level=debug.
Set log level.
Shortcut for --log-level=error.
Shortcut for --log-level=trace.
Shortcut for --log-level=info.
Choose output format, e.g. json, text.
undef
Set output format to json.
When outputing as JSON, strip result envelope.
0
By default, when outputing as JSON, the full enveloped result is returned, e.g.:
[200,"OK",[1,2,3],{"func.extra"=>4}]
The reason is so you can get the status (1st element), status message (2nd element) as well as result metadata/extra result (4th element) instead of just the result (3rd element). However, sometimes you want just the result, e.g. when you want to pipe the result for more post-processing. In this case you can use `--naked-res` so you just get:
[1,2,3]
Filter output through a pager.
View output using a viewer.
Display help message and exit.
Display program's version and exit.
This script has shell tab completion capability with support for several shells.
To activate bash completion for this script, put:
complete -C complete-module complete-module
in your bash startup (e.g. ~/.bashrc). Your next shell session will then recognize tab completion for the command. Or, you can also directly execute the line above in your shell to activate immediately.
It is recommended, however, that you install modules using cpanm-shcompgen which can activate shell completion for scripts immediately.
To activate tcsh completion for this script, put:
complete complete-module 'p/*/`complete-module`/'
in your tcsh startup (e.g. ~/.tcshrc). Your next shell session will then recognize tab completion for the command. Or, you can also directly execute the line above in your shell to activate immediately.
It is also recommended to install shcompgen (see above).
For fish and zsh, install shcompgen as described above.
Please visit the project's homepage at https://metacpan.org/release/App-CompleteCLIs.
Source repository is at https://github.com/perlancar/perl-App-CompleteCLIs.
Please report any bugs or feature requests on the bugtracker website https://rt.cpan.org/Public/Dist/Display.html?Name=App-CompleteCLIs
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.
perlancar <perlancar@cpan.org>
This software is copyright (c) 2021, 2020, 2019, 2017, 2016, 2015, 2014 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.
To install App::CompleteCLIs, copy and paste the appropriate command in to your terminal.
cpanm
cpanm App::CompleteCLIs
CPAN shell
perl -MCPAN -e shell install App::CompleteCLIs
For more information on module installation, please visit the detailed CPAN module installation guide.