def write_cli_docs(all_kitten_names): from kitty.cli import option_spec_as_rst with open('generated/cli-kitty.rst', 'w') as f: f.write(option_spec_as_rst(appname='kitty').replace( 'kitty --to', 'kitty @ --to')) as_rst = partial(option_spec_as_rst, heading_char='_') from kitty.remote_control import global_options_spec, cli_msg, cmap, all_commands with open('generated/cli-kitty-at.rst', 'w') as f: p = partial(print, file=f) p('kitty @\n' + '-' * 80) p('.. program::', 'kitty @') p('\n\n' + as_rst( global_options_spec, message=cli_msg, usage='command ...', appname='kitty @')) from kitty.cmds import cli_params_for for cmd_name in all_commands: func = cmap[cmd_name] p(f'.. _at_{func.name}:\n') p('kitty @', func.name + '\n' + '-' * 120) p('.. program::', 'kitty @', func.name) p('\n\n' + as_rst(*cli_params_for(func))) from kittens.runner import get_kitten_cli_docs for kitten in all_kitten_names: data = get_kitten_cli_docs(kitten) if data: with open(f'generated/cli-kitten-{kitten}.rst', 'w') as f: p = partial(print, file=f) p('.. program::', f'kitty +kitten {kitten}') p('\n\n' + option_spec_as_rst( data['options'], message=data['help_text'], usage=data['usage'], appname=f'kitty +kitten {kitten}', heading_char='^'))
def complete_kitten(ans: Completions, kitten: str, words: Sequence[str], new_word: bool) -> None: try: completer = get_kitten_completer(kitten) except SystemExit: completer = None if completer is not None: completer(ans, words, new_word) return try: cd = get_kitten_cli_docs(kitten) except SystemExit: cd = None if cd is None: return options = cd['options']() seq = parse_option_spec(options)[0] option_map = {} for opt in seq: if not isinstance(opt, str): for alias in opt['aliases']: option_map[alias] = opt complete_alias_map(ans, words, new_word, option_map, { 'icat': complete_icat_args, 'diff': complete_diff_args, }.get(kitten))
def write_cli_docs(all_kitten_names: Iterable[str]) -> None: from kitty.cli import option_spec_as_rst from kitty.launch import options_spec as launch_options_spec with open('generated/launch.rst', 'w') as f: f.write( option_spec_as_rst(appname='launch', ospec=launch_options_spec, heading_char='_', message='''\ Launch an arbitrary program in a new kitty window/tab. Note that if you specify a program-to-run you can use the special placeholder :code:`@selection` which will be replaced by the current selection. ''')) with open('generated/cli-kitty.rst', 'w') as f: f.write( option_spec_as_rst(appname='kitty').replace( 'kitty --to', 'kitty @ --to')) as_rst = partial(option_spec_as_rst, heading_char='_') from kitty.rc.base import all_command_names, command_for_name from kitty.remote_control import cli_msg, global_options_spec with open('generated/cli-kitty-at.rst', 'w') as f: p = partial(print, file=f) p('kitty @') p('-' * 80) p('.. program::', 'kitty @') p('\n\n' + as_rst(global_options_spec, message=cli_msg, usage='command ...', appname='kitty @')) from kitty.rc.base import cli_params_for for cmd_name in sorted(all_command_names()): func = command_for_name(cmd_name) p(f'.. _at_{func.name}:\n') p('kitty @', func.name) p('-' * 120) p('.. program::', 'kitty @', func.name) p('\n\n' + as_rst(*cli_params_for(func))) from kittens.runner import get_kitten_cli_docs for kitten in all_kitten_names: data = get_kitten_cli_docs(kitten) if data: with open(f'generated/cli-kitten-{kitten}.rst', 'w') as f: p = partial(print, file=f) p('.. program::', 'kitty +kitten', kitten) p('\nSource code for', kitten) p('-' * 72) p(f'\nThe source code for this kitten is `available on GitHub <https://github.com/kovidgoyal/kitty/tree/master/kittens/{kitten}>`_.' ) p('\nCommand Line Interface') p('-' * 72) p('\n\n' + option_spec_as_rst(data['options'], message=data['help_text'], usage=data['usage'], appname=f'kitty +kitten {kitten}', heading_char='^'))
def complete_kitten(ans, kitten, words, new_word): try: cd = get_kitten_cli_docs(kitten) except SystemExit: cd = None if cd is None: return options = cd['options']() seq = parse_option_spec(options)[0] option_map = {} for opt in seq: if not isinstance(opt, str): for alias in opt['aliases']: option_map[alias] = opt complete_alias_map(ans, words, new_word, option_map, {'icat': complete_icat_args}.get(kitten))
def write_cli_docs(all_kitten_names): from kitty.launch import options_spec as launch_options_spec from kitty.cli import option_spec_as_rst with open('generated/launch.rst', 'w') as f: f.write( option_spec_as_rst(appname='launch', ospec=launch_options_spec, heading_char='_', message='''\ Launch an arbitrary program in a new kitty window/tab. Note that if you specify a program-to-run you can use the special placeholder :code:`@selection` which will be replaced by the current selection. ''')) with open('generated/cli-kitty.rst', 'w') as f: f.write( option_spec_as_rst(appname='kitty').replace( 'kitty --to', 'kitty @ --to')) as_rst = partial(option_spec_as_rst, heading_char='_') from kitty.remote_control import global_options_spec, cli_msg, cmap, all_commands with open('generated/cli-kitty-at.rst', 'w') as f: p = partial(print, file=f) p('kitty @\n' + '-' * 80) p('.. program::', 'kitty @') p('\n\n' + as_rst(global_options_spec, message=cli_msg, usage='command ...', appname='kitty @')) from kitty.cmds import cli_params_for for cmd_name in all_commands: func = cmap[cmd_name] p(f'.. _at_{func.name}:\n') p('kitty @', func.name + '\n' + '-' * 120) p('.. program::', 'kitty @', func.name) p('\n\n' + as_rst(*cli_params_for(func))) from kittens.runner import get_kitten_cli_docs for kitten in all_kitten_names: data = get_kitten_cli_docs(kitten) if data: with open(f'generated/cli-kitten-{kitten}.rst', 'w') as f: p = partial(print, file=f) p('.. program::', f'kitty +kitten {kitten}') p('\n\n' + option_spec_as_rst(data['options'], message=data['help_text'], usage=data['usage'], appname=f'kitty +kitten {kitten}', heading_char='^'))