argc 1.24.0

A bash cli framework, also a bash-based command runner
Documentation
from subprocess import Popen, PIPE
from xonsh.completers.tools import *
from xonsh.completers._aliases import _add_one_completer

@contextual_command_completer
def _argc_completer(context):
    if len(context.args) == 0:
        return
    args = [v.value for v in context.args[0:context.arg_index]]
    args.append(context.raw_prefix)

    if args[0] not in __xonsh__.env['ARGC_XONSH_SCRIPTS']:
        return

    output, _ = Popen(['argc', '--argc-compgen', 'xonsh', '', *args], stdout=PIPE, stderr=PIPE).communicate()
    candidates = output.decode().split('\n')
    candidates.pop()
    result = set()
    skip = 0
    if len(candidates) == 0:
        result.add(RichCompletion(""))
        return result

    for v in candidates:
        parts = v.split('\t')
        value = parts[0]
        if parts[1] == "1":
            value = value + " "
        result.add(RichCompletion(value, display=parts[2], description=parts[3], prefix_len=len(args[-1]), append_closing_quote=False))
        
    return result

if 'ARGC_XONSH_SCRIPTS' not in __xonsh__.env:
    __xonsh__.env['ARGC_XONSH_SCRIPTS'] = []
    
if 'argc' not in __xonsh__.completers:
    _add_one_completer('argc', _argc_completer, 'start')