zephyr/scripts/west_commands/completion.py

51 lines
1.6 KiB
Python

# Copyright (c) 2019 Nordic Semiconductor ASA
#
# SPDX-License-Identifier: Apache-2.0
import argparse
import os
from west import log
from west.commands import WestCommand
# Relative to the folder where this script lives
COMPLETION_REL_PATH = 'completion/west-completion'
class Completion(WestCommand):
def __init__(self):
super().__init__(
'completion',
# Keep this in sync with the string in west-commands.yml.
'display shell completion scripts',
'Display shell completion scripts.',
accepts_unknown_args=False)
def do_add_parser(self, parser_adder):
parser = parser_adder.add_parser(
self.name,
help=self.help,
formatter_class=argparse.RawDescriptionHelpFormatter,
description=self.description)
# Remember to update completion/west-completion.bash if you add or
# remove flags
parser.add_argument('shell', nargs=1, choices=['bash'],
help='''Select the shell that which the completion
script is intended for.
Currently only bash is supported.''')
return parser
def do_run(self, args, unknown_args):
cf = os.path.join(os.path.dirname(os.path.realpath(__file__)),
*COMPLETION_REL_PATH.split('/'))
cf += '.' + args.shell[0]
try:
with open(cf, 'r') as f:
print(f.read())
except FileNotFoundError as e:
log.die('Unable to find completion file: {}'.format(e))