Skip to content

bash-utilities/help-to-complete

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

11 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Help To Complete

Builds tab-completion configurations from --help output

Byte size of Help To Complete Open Issues Open Pull Requests Latest commits



Requirements

This repository makes use of Git Submodules to track dependencies, to avoid incomplete downloads clone with the --recurse-submodules option...

git clone --recurse-submodules git@github.com:bash-utilities/help-to-complete.git

To update tracked Git Submodules issue the following commands...

git pull

git submodule update --init --merge --recursive

To force upgrade of Git Submodules...

git submodule update --init --merge --recursive --remote

Note, forcing and update of Git Submodule tracked dependencies may cause instabilities and/or merge conflicts; if however everything operates as expected after an update please consider submitting a Pull Request.


Quick Start

Perhaps as easy as one, 2.0,...


Clone

Clone this project...

mkdir -vp ~/git/hub/bash-utilities

cd ~/git/hub/bash-utilities

git clone --recurse-submodules git@github.com:bash-utilities/help-to-complete.git

Install

Install via make install command...

cd ~/git/hub/bash-utilities/help-to-complete

make install

Uninstall

Uninstall via uninstall Make target...

cd ~/git/hub/bash-utilities/help-to-complete

make uninstall

... Which will remove symbolic links for script(s) and manual page(s).


Upgrade

To update in the future use make upgrade command...

cd ~/git/hub/bash-utilities/help-to-complete

make upgrade

Documentation

After installation, documentation may be accessed via man command, eg...

man help-to-complete

Usage

Generally the only required parameter to define is --executable, eg...

sudo help-to-complete --executable script-name

However, it is possible to define where completion configurations are saved, as well as the option that prints help/usage information for an executable...

sudo help-to-complete --executable script-name\
                      --completion-dir /usr/share/bash-completion/completions\
                      --help-option '--help'

For example to save bash completion configurations to current repository may be similar to...

mkdir -vp "${PWD}/bash-completion"

help-to-complete --executable script-name\
                 --completion-dir "${PWD}/bash-completion"

API

  • -c or --clobber - Overwrites preexisting completion configuration

  • -h or --help - Prints this message and exits

  • -l or --license - Prints copyright for this script and exits

  • -v or --verbose - Prints messages about actions

  • -V or --version - Prints version for this script and exits

  • --completion-dir <directory> - Directory to that completion configuration will be saved to

  • --executable <executable> - Required name of executable to parse help documentation from

  • --help-option <parameter> - Option executable uses to print help/usage

  • --parameter-pattern <regexp> - Regular expression for parsing parameters from help/usage output


Notes

Help/usage of target executable should be formatted similar to output of help-to-complete script, which is mostly compatible with help2man parsing requirements, eg...

<description>


Usage: <name> [OPTIONS]...


Options:
-h    --help
    Prints this message and exits

-l    --license
    Prints copyright for this script and exits

-v    --verbose
    Prints messages about actions

-V    --version
    Prints version for this script and exits

-d    --directory "some/where"
    Directory path used by <name>

-e    --executable "ls"
    Executable called within <name>

-w    --words "spam|flavored|ham"
    Key word modifiers

-p    --pattern "^(-{1,2}[a-zA-Z]){1,}"
    Regular expression


Examples:
    <name> -v --words spam

Output of help-to-complete should be considered a starting-point, and depending upon executable further customization may be required.

This repository may not be feature complete and/or fully functional, Pull Requests that add features or fix bugs are certainly welcomed.


Contributing

Options for contributing to help-to-complete and bash-utilities


Forking

Start making a Fork of this repository to an account that you have write permissions for.

  • Add remote for fork URL. The URL syntax is git@github.com:<NAME>/<REPO>.git...
cd ~/git/hub/bash-utilities/help-to-complete

git remote add fork git@github.com:<NAME>/help-to-complete.git
  • Commit your changes and push to your fork, eg. to fix an issue...
cd ~/git/hub/bash-utilities/help-to-complete


git commit -F- <<'EOF'
:bug: Fixes #42 Issue


**Edits**


- `<SCRIPT-NAME>` script, fixes some bug reported in issue
EOF


git push fork main

Note, the -u option may be used to set fork as the default remote, eg. git push -u fork main however, this will also default the fork remote for pulling from too! Meaning that pulling updates from origin must be done explicitly, eg. git pull origin main

  • Then on GitHub submit a Pull Request through the Web-UI, the URL syntax is https://github.com/<NAME>/<REPO>/pull/new/<BRANCH>

Note; to decrease the chances of your Pull Request needing modifications before being accepted, please check the dot-github repository for detailed contributing guidelines.


Sponsor

Thanks for even considering it!

Via Liberapay you may sponsor__shields_io__liberapay on a repeating basis.

Regardless of if you're able to financially support projects such as array-splice that bash-utilities maintains, please consider sharing projects that are useful with others, because one of the goals of maintaining Open Source repositories is to provide value to the community.


Attribution


License

Builds tab-completion configurations from `--help` output
Copyright (C) 2021 S0AndS0

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, version 3 of the License.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.

For further details review full length version of AGPL-3.0 License.