nubia/internal/commands/builtin.py (51 lines of code) (raw):

#!/usr/bin/env python3 # Copyright (c) Facebook, Inc. and its affiliates. # All rights reserved. # # This source code is licensed under the BSD-style license found in the # LICENSE file in the root directory of this source tree. # from nubia.internal import context from nubia.internal.cmdbase import Command from nubia.internal.interactive import IOLoop from nubia.internal.io.eventbus import Message class Connect(Command): """ A pseudo command that implicitly gets called to start the interactive mode """ cmds = {"connect": "Start the interactive mode"} def __init__(self): super(Connect, self).__init__() self._built_in = True async def run_interactive(self, cmd, args, raw): return await self._run() async def run_cli(self, args): return await self._run() async def _run(self): await self._command_registry.dispatch_message(Message.CONNECTED) return 0 def get_command_names(self): return self.cmds.keys() def add_arguments(self, parser): parser.add_parser("connect") def get_help(self, cmd, *args): return self.cmds[cmd] class Exit(Command): HELP = "Exits the program" cmd = ["quit", "q", "exit"] def __init__(self): super(Exit, self).__init__() self._built_in = True def run_interactive(self, cmd, args, raw): raise EOFError() return 0 def get_command_names(self): return self.cmd def get_help(self, cmd, *args): return self.HELP class Verbose(Command): """ Changes verbosity level in interactive mode """ HELP = "Prints or changes verbosity level, accepts integer or True/False" CMD = ":verbose" def __init__(self): super(Verbose, self).__init__() self._built_in = True def run_interactive(self, cmd, args, raw): ctx = context.get_context() if args: ctx.set_verbose(args) else: print("Current verbosity: {}".format(ctx.args.verbose)) def get_command_names(self): return [self.CMD] def get_help(self, cmd, *args): return self.HELP