loam/cli.py
def zsh_complete(self, path, cmd, *cmds, sourceable=False):
        """Write zsh compdef script.

        Args:
            path (path-like): desired path of the compdef script.
            cmd (str): command name that should be completed.
            cmds (str): extra command names that should be completed.
            sourceable (bool): if True, the generated file will contain an
                explicit call to ``compdef``, which means it can be sourced
                to activate CLI completion.
        """
        grouping = internal.zsh_version() >= (5, 4)
        path = pathlib.Path(path)
        firstline = ['#compdef', cmd]
        firstline.extend(cmds)
        subcmds = list(self.subcmds.keys())
        with path.open('w') as zcf:
            print(*firstline, end='\n\n', file=zcf)
            # main function
            print('function _{} {{'.format(cmd), file=zcf)
            print('local line', file=zcf)
            print('_arguments -C', end=BLK, file=zcf)
            if subcmds:
                # list of subcommands and their description
                substrs = ["{}\\:'{}'".format(sub, self.subcmds[sub].help)
                           for sub in subcmds]
                print('"1:Commands:(({}))"'.format(' '.join(substrs)),
                      end=BLK, file=zcf)
            self._zsh_comp_command(zcf, None, grouping)
            if subcmds:
                print("'*::arg:->args'", file=zcf)
                print('case $line[1] in', file=zcf)
                for sub in subcmds:
                    print('{sub}) _{cmd}_{sub} ;;'.format(sub=sub, cmd=cmd),
                          file=zcf)
                print('esac', file=zcf)
            print('}', file=zcf)
            # all subcommand completion handlers
            for sub in subcmds:
                print('\nfunction _{}_{} {{'.format(cmd, sub), file=zcf)
                print('_arguments', end=BLK, file=zcf)
                self._zsh_comp_command(zcf, sub, grouping)
                print('}', file=zcf)
            if sourceable:
                print('\ncompdef _{0} {0}'.format(cmd), *cmds, file=zcf)
def zsh_complete(self, path, cmd, *cmds, sourceable=False):
        grouping = internal.zsh_version() >= (5, 4)
        path = pathlib.Path(path)
        firstline = ['#compdef', cmd]
        firstline.extend(cmds)
        subcmds = list(self.subcmds.keys())
        with path.open('w') as zcf:
            print(*firstline, end='\n\n', file=zcf)
            # main function
            print('function _{} {{'.format(cmd), file=zcf)
            print('local line', file=zcf)
            print('_arguments -C', end=BLK, file=zcf)
            if subcmds:
                # list of subcommands and their description
                substrs = ["{}\\:'{}'".format(sub, self.subcmds[sub].help)
                           for sub in subcmds]
                print('"1:Commands:(({}))"'.format(' '.join(substrs)),
                      end=BLK, file=zcf)
            self._zsh_comp_command(zcf, None, grouping)
            if subcmds:
                print("'*::arg:->args'", file=zcf)
                print('case $line[1] in', file=zcf)
                for sub in subcmds:
                    print('{sub}) _{cmd}_{sub} ;;'.format(sub=sub, cmd=cmd),
                          file=zcf)
                print('esac', file=zcf)
            print('}', file=zcf)
            # all subcommand completion handlers
            for sub in subcmds:
                print('\nfunction _{}_{} {{'.format(cmd, sub), file=zcf)
                print('_arguments', end=BLK, file=zcf)
                self._zsh_comp_command(zcf, sub, grouping)
                print('}', file=zcf)
            if sourceable:
                print('\ncompdef _{0} {0}'.format(cmd), *cmds, file=zcf)
def zsh_complete ( self , path , cmd , * cmds , sourceable = False ) : grouping = internal . zsh_version ( ) >= ( 5 , 4 ) path = pathlib . Path ( path ) firstline = [ '#compdef' , cmd ] firstline . extend ( cmds ) subcmds = list ( self . subcmds . keys ( ) ) with path . open ( 'w' ) as zcf : print ( * firstline , end = '\n\n' , file = zcf ) # main function print ( 'function _{} {{' . format ( cmd ) , file = zcf ) print ( 'local line' , file = zcf ) print ( '_arguments -C' , end = BLK , file = zcf ) if subcmds : # list of subcommands and their description substrs = [ "{}\\:'{}'" . format ( sub , self . subcmds [ sub ] . help ) for sub in subcmds ] print ( '"1:Commands:(({}))"' . format ( ' ' . join ( substrs ) ) , end = BLK , file = zcf ) self . _zsh_comp_command ( zcf , None , grouping ) if subcmds : print ( "'*::arg:->args'" , file = zcf ) print ( 'case $line[1] in' , file = zcf ) for sub in subcmds : print ( '{sub}) _{cmd}_{sub} ;;' . format ( sub = sub , cmd = cmd ) , file = zcf ) print ( 'esac' , file = zcf ) print ( '}' , file = zcf ) # all subcommand completion handlers for sub in subcmds : print ( '\nfunction _{}_{} {{' . format ( cmd , sub ) , file = zcf ) print ( '_arguments' , end = BLK , file = zcf ) self . _zsh_comp_command ( zcf , sub , grouping ) print ( '}' , file = zcf ) if sourceable : print ( '\ncompdef _{0} {0}' . format ( cmd ) , * cmds , file = zcf )
Write zsh compdef script.

        Args:
            path (path-like): desired path of the compdef script.
            cmd (str): command name that should be completed.
            cmds (str): extra command names that should be completed.
            sourceable (bool): if True, the generated file will contain an
                explicit call to ``compdef``, which means it can be sourced
                to activate CLI completion.
Write zsh compdef script .