Skip to content

Commit 808a4ea

Browse files
authored
Merge pull request #21 from PhonePe/bash_completion
Added support for generating shell completion file
2 parents 1c1fbfa + 3b49522 commit 808a4ea

3 files changed

Lines changed: 8 additions & 2 deletions

File tree

drove.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,15 @@ def build_parser() -> argparse.ArgumentParser:
1818
parser.add_argument("--username", "-u", help="Drove cluster username")
1919
parser.add_argument("--password", "-p", help="Drove cluster password")
2020
parser.add_argument("--debug", "-d", help="Print details of errors", default=False, action="store_true")
21+
parser.add_argument("--print-completion", choices=["bash", "zsh", "tcsh"], help="Print shell completion script for the given shell")
2122
return parser
2223

2324
def get_parser():
2425
parser = build_parser()
2526
client = None
2627
client = drovecli.DroveCli(parser)
2728
return client.parser
28-
29+
2930

3031
def run():
3132
parser = build_parser()

drovecli.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import droveclient
33
from plugins import DrovePlugin
44
from types import SimpleNamespace
5-
5+
import shtab
66

77

88
class DroveCli:
@@ -24,6 +24,10 @@ def run(self):
2424
args = self.parser.parse_args()
2525
self.debug = args.debug
2626

27+
if args.print_completion:
28+
print(shtab.complete(self.parser, shell=args.print_completion))
29+
exit(0)
30+
2731
# Load plugins
2832
if args.debug:
2933
print("Selected plugin: " + args.plugin)

requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ Requests==2.32.5
22
tabulate==0.9.0
33
tenacity==9.1.2
44
urllib3==2.5.0
5+
shtab==1.8.0

0 commit comments

Comments
 (0)