These scripts are automatically generated from YAML files which can be found
under specs/
.
The format supports nested subcommands, specifying enums for possible parameters/option values and dynamic completion calling an external command.
The generation is done with the appspec
tool (see "Developing" below).
Currently it supports bash and zsh completions.
cpan-upload
- upload a distribution to the CPANcpan
- easily interact with CPAN from the command linecpanm
- Install CPAN modulesdancer2
- Dancer2 command line interfacedzil
- do stuff with your distfallocate
- Preallocate or deallocate space to a filefatpack
- Pack perl script and modules into standalone scriptfile
- determine file typefzf
- a command-line fuzzy finderh2xs
- convert .h C header files to Perl extensionshtpasswd
- Manage user files for basic authenticationhypnotoad
- Hypnotoad HTTP and WebSocket serverjq
- Command-line JSON processorjson_pp
- JSON::PP command utilityjson_xs
- JSON::XS commandline utilitylocate
- Find files by namelwp-request
- Simple command line user agent (Aliases GET, HEAD, POST)mojo
- The Mojolicious command systemmorbo
- Morbo HTTP and WebSocket development servermpath
- display the full path to a perl module (installed locally)pip
- A tool for installing and managing Python packagesplackup
- Run PSGI application with Plack handlerspod2html
- convert .pod files to .html filesprove
- Run tests through a TAP harnessstarman
- High-performance preforking PSGI/Plack web servertower-cli
- Ansible Tower Commandlineyamllint
- A linter for YAML filesysh
- The YAML Test Shellzild
- Dist::Zilla Mixed Up
git clone https://github.com/perlpunk/shell-completions
Look into the specs/commandname.yaml
for specific usage instructions.
For a specific script, just source it:
$ source /path/to/shell-completions/bash/commandname.bash
Put this in your .bashrc
for using all completions:
for i in /path/to/shell-completions/bash/*.bash; do source $i; done
You can enable this by putting the following in your ~/.inputrc
:
set show-all-if-ambiguous on
See GNU Readline Init File Syntax.
For activating the completions, you can do:
% fpath=(/path/to/shell-completions/zsh $fpath)
% compinit
To just try out completion for one specific script, you can also do:
% source /path/to/shell-completions/zsh/_commandname
% compdef _commandname commandname
Put this in your .zshrc
for activating all completions:
# before the compinit call
fpath=('/path/to/shell-completions/zsh' $fpath)
This way zsh won't load all functions at startup, but the completions will get autoloaded dynamically when the command is first used.
When developing a new completion, after a change it's enough to source it,
without calling compinit
again:
% source /path/to/shell-completions/zsh/_commandname
The appspec
tool is used to generate the completions. You don't need it
if you just want to use the completions.
If you want to modify or add a new completion, install the App::AppSpec
perl module, or use the standalone script:
% git clone https://github.com/perlpunk/App-AppSpec-p5 -b standalone appspec
% PATH=$PWD/appspec/bin:$PATH
For more details see https://github.com/perlpunk/App-AppSpec-p5.
Create a new specification specs/commandname.yaml
and type:
make commandname
- https://github.com/zsh-users/zsh-completions - Over 130 completion scripts for zsh
- https://github.com/unixorn/awesome-zsh-plugins - A collection of ZSH frameworks, plugins & themes
- https://github.com/complete-shell - A different approach for generating and installing completions for bash