loam/cli.py
def bash_complete(self, path, cmd, *cmds):
        """Write bash complete script.

        Args:
            path (path-like): desired path of the complete script.
            cmd (str): command name that should be completed.
            cmds (str): extra command names that should be completed.
        """
        path = pathlib.Path(path)
        subcmds = list(self.subcmds.keys())
        with path.open('w') as bcf:
            # main function
            print('_{}() {{'.format(cmd), file=bcf)
            print('COMPREPLY=()', file=bcf)
            print(r'local cur=${COMP_WORDS[COMP_CWORD]}', end='\n\n', file=bcf)
            optstr = ' '.join(self._bash_comp_command(None))
            print(r'local options="{}"'.format(optstr), end='\n\n', file=bcf)
            if subcmds:
                print('local commands="{}"'.format(' '.join(subcmds)),
                      file=bcf)
                print('declare -A suboptions', file=bcf)
            for sub in subcmds:
                optstr = ' '.join(self._bash_comp_command(sub))
                print('suboptions[{}]="{}"'.format(sub, optstr), file=bcf)
            condstr = 'if'
            for sub in subcmds:
                print(condstr, r'[[ "${COMP_LINE}" == *"', sub, '"* ]] ; then',
                      file=bcf)
                print(r'COMPREPLY=( `compgen -W "${suboptions[', sub,
                      r']}" -- ${cur}` )', sep='', file=bcf)
                condstr = 'elif'
            print(condstr, r'[[ ${cur} == -* ]] ; then', file=bcf)
            print(r'COMPREPLY=( `compgen -W "${options}" -- ${cur}`)',
                  file=bcf)
            if subcmds:
                print(r'else', file=bcf)
                print(r'COMPREPLY=( `compgen -W "${commands}" -- ${cur}`)',
                      file=bcf)
            print('fi', file=bcf)
            print('}', end='\n\n', file=bcf)
            print('complete -F _{0} {0}'.format(cmd), *cmds, file=bcf)
def bash_complete(self, path, cmd, *cmds):
        path = pathlib.Path(path)
        subcmds = list(self.subcmds.keys())
        with path.open('w') as bcf:
            # main function
            print('_{}() {{'.format(cmd), file=bcf)
            print('COMPREPLY=()', file=bcf)
            print(r'local cur=${COMP_WORDS[COMP_CWORD]}', end='\n\n', file=bcf)
            optstr = ' '.join(self._bash_comp_command(None))
            print(r'local options="{}"'.format(optstr), end='\n\n', file=bcf)
            if subcmds:
                print('local commands="{}"'.format(' '.join(subcmds)),
                      file=bcf)
                print('declare -A suboptions', file=bcf)
            for sub in subcmds:
                optstr = ' '.join(self._bash_comp_command(sub))
                print('suboptions[{}]="{}"'.format(sub, optstr), file=bcf)
            condstr = 'if'
            for sub in subcmds:
                print(condstr, r'[[ "${COMP_LINE}" == *"', sub, '"* ]] ; then',
                      file=bcf)
                print(r'COMPREPLY=( `compgen -W "${suboptions[', sub,
                      r']}" -- ${cur}` )', sep='', file=bcf)
                condstr = 'elif'
            print(condstr, r'[[ ${cur} == -* ]] ; then', file=bcf)
            print(r'COMPREPLY=( `compgen -W "${options}" -- ${cur}`)',
                  file=bcf)
            if subcmds:
                print(r'else', file=bcf)
                print(r'COMPREPLY=( `compgen -W "${commands}" -- ${cur}`)',
                      file=bcf)
            print('fi', file=bcf)
            print('}', end='\n\n', file=bcf)
            print('complete -F _{0} {0}'.format(cmd), *cmds, file=bcf)
def bash_complete ( self , path , cmd , * cmds ) : path = pathlib . Path ( path ) subcmds = list ( self . subcmds . keys ( ) ) with path . open ( 'w' ) as bcf : # main function print ( '_{}() {{' . format ( cmd ) , file = bcf ) print ( 'COMPREPLY=()' , file = bcf ) print ( r'local cur=${COMP_WORDS[COMP_CWORD]}' , end = '\n\n' , file = bcf ) optstr = ' ' . join ( self . _bash_comp_command ( None ) ) print ( r'local options="{}"' . format ( optstr ) , end = '\n\n' , file = bcf ) if subcmds : print ( 'local commands="{}"' . format ( ' ' . join ( subcmds ) ) , file = bcf ) print ( 'declare -A suboptions' , file = bcf ) for sub in subcmds : optstr = ' ' . join ( self . _bash_comp_command ( sub ) ) print ( 'suboptions[{}]="{}"' . format ( sub , optstr ) , file = bcf ) condstr = 'if' for sub in subcmds : print ( condstr , r'[[ "${COMP_LINE}" == *"' , sub , '"* ]] ; then' , file = bcf ) print ( r'COMPREPLY=( `compgen -W "${suboptions[' , sub , r']}" -- ${cur}` )' , sep = '' , file = bcf ) condstr = 'elif' print ( condstr , r'[[ ${cur} == -* ]] ; then' , file = bcf ) print ( r'COMPREPLY=( `compgen -W "${options}" -- ${cur}`)' , file = bcf ) if subcmds : print ( r'else' , file = bcf ) print ( r'COMPREPLY=( `compgen -W "${commands}" -- ${cur}`)' , file = bcf ) print ( 'fi' , file = bcf ) print ( '}' , end = '\n\n' , file = bcf ) print ( 'complete -F _{0} {0}' . format ( cmd ) , * cmds , file = bcf )
Write bash complete script.

        Args:
            path (path-like): desired path of the complete script.
            cmd (str): command name that should be completed.
            cmds (str): extra command names that should be completed.
Write bash complete script .