nubia_complete/main.py (55 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. # import argparse import logging import sys from nubia_complete.completer import run_complete from nubia_complete.shell import generate_shell_setup logger = logging.getLogger(__name__) def main(): sys.exit(run(sys.argv)) def run(args): opts_parser = argparse.ArgumentParser( description="A shell completion utility for nubia programs" ) subparsers = opts_parser.add_subparsers(help="sub-command help", dest="mode") opts_parser.add_argument( "--loglevel", type=str, default="INFO", choices=["CRITICAL", "ERROR", "WARNING", "INFO", "DEBUG"], help="logging level", ) generate_parser = subparsers.add_parser( "generate-shell-setup", help="Generates a bash/zsh setup script that you can source", ) complete_parser = subparsers.add_parser("complete", help="Triggers completions") generate_parser.add_argument( "--target-binary-name", type=str, required=True, help="The name of the nubia program we want to generate a completer for", ) generate_parser.add_argument( "--command-model-path", type=str, required=True, help="The location on which to find the command model", ) complete_parser.add_argument( "--command-model-path", type=str, required=True, help="The location on which to find the command model", ) args = opts_parser.parse_args() # Setting up logging log_level = logging.getLevelName(args.loglevel) logging.basicConfig(level=log_level) if args.mode == "generate-shell-setup": return generate_shell_setup(args.target_binary_name, args.command_model_path) elif args.mode == "complete": return run_complete(args) else: print("Not Implemented!") return 2 if __name__ == "__main__": main()