#!/usr/bin/env python # vim:fileencoding=utf-8 # License: GPL v3 Copyright: 2015, Kovid Goyal import sys def icat(args): from kitty.icat import main main(args) def list_fonts(args): from kitty.fonts.list import main main(args) def remote_control(args): from kitty.remote_control import main main(args) def runpy(args): sys.argv = ['kitty'] + args[2:] exec(args[1]) def launch(args): import runpy sys.argv = args[1:] runpy.run_path(args[1], run_name='__main__') def run_kitten(args): kitten = args[1] sys.argv = args[1:] from kittens.runner import run_kitten run_kitten(kitten) def namespaced(args): func = namespaced_entry_points[args[1]] func(args[1:]) entry_points = { # These two are here for backwards compat 'icat': icat, 'list-fonts': list_fonts, 'runpy': runpy, 'launch': launch, 'kitten': run_kitten, '@': remote_control, '+': namespaced, } namespaced_entry_points = {k: v for k, v in entry_points.items() if k[0] not in '+@'} def main(): first_arg = '' if len(sys.argv) < 2 else sys.argv[1] func = entry_points.get(first_arg) if func is None: if first_arg.startswith('@'): remote_control(['@', first_arg[1:]] + sys.argv[2:]) elif first_arg.startswith('+'): namespaced(['+', first_arg[1:]] + sys.argv[2:]) else: from kitty.main import main main() else: func(sys.argv[1:]) if __name__ == '__main__': main()