Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Takes a Python list or dictionary input and automatically generates simple, yet functioning, bashcompletion code.

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 MANIFEST.in
Octocat-spinner-32 README.md
Octocat-spinner-32 bashcomplete.py
Octocat-spinner-32 setup.py
README.md

Overview

python-bashcomplete takes:

  • Lists of strings and dictionaries, or
  • Nested dictionaries

and compiles simple, yet functional bashcomplete code for any program that invokes bashcomplete.BashComplete() with a list or dictionary.

Setup

pip install python-bashcomplete

Example structures

Autocompletes one level:

test = ['level1a', 'level1b']

Autocompletes two possibilities, both of which have sublevels:

test = {
    'level1a': ['1', '2', '3'],
    'level1b': ['4', '5', '6']
}

Autocompletes three possibilities, only two of which have sublevels:

test = [
    {
        'level1a': ['1', '2', '3']
    },
    {
        'level1b': ['4', '5', '6']
    },
    'level1c'
]

Autocompletes only one level. Final string values are ignored:

test = {
    'level1a':{'a'},
    'level1b':{'b'}
}

Autocomplete with autogenerated words:

test = {
    'files': ['`ls -1`'],
    'devices': ['`ls -1 /dev`']
}

Generation

Add the following lines to your command-line program:

import bashcomplete
bashcomplete.BashComplete(test)

where test is your data structure. This will generate <filename>.bash_complete in your current folder using the filename of the executing program.

If you wish to constrain the autocomplete words to only what has been defined, use:

bashcomplete.BashComplete(test, constrain=True)

If you wish to create a .bash_complete file with another name use:

bashcomplete.BashComplete(test, filename='myprogram.py', output_filename='myprogram_py_cloudversion')

Usage

Use the generated <filename>.bash_complete by adding:

. /path/to/<filename>.bash_complete

to your .profile. From this point on, any run of <filename> will use the generated bash completion.

Something went wrong with that request. Please try again.