Skip to content

Commit f059341

Browse files
committed
!squash more
1 parent 102e028 commit f059341

File tree

3 files changed

+49
-10
lines changed

3 files changed

+49
-10
lines changed

src/tmuxp/cli/__init__.py

+14
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,13 @@ def create_parser() -> argparse.ArgumentParser:
9393
)
9494
create_freeze_subparser(freeze_parser)
9595

96+
try:
97+
import argcomplete
98+
99+
argcomplete.autocomplete(parser)
100+
except ImportError:
101+
pass
102+
96103
return parser
97104

98105

@@ -123,6 +130,13 @@ def cli(_args: t.Optional[t.List[str]] = None) -> None:
123130
sys.exit()
124131

125132
parser = create_parser()
133+
134+
try:
135+
import argcomplete
136+
137+
argcomplete.autocomplete(parser)
138+
except ImportError:
139+
pass
126140
args = parser.parse_args(_args, namespace=ns)
127141

128142
setup_logger(logger=logger, level=args.log_level.upper())

src/tmuxp/cli/completions.py

+26-6
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import os
2+
import typing as t
23

34
from libtmux.server import Server
45
from tmuxp import config
@@ -8,6 +9,7 @@
89

910
try:
1011
import argcomplete
12+
import argcomplete.completers
1113
except ImportError:
1214

1315
class ArgComplete:
@@ -24,22 +26,40 @@ def __call__(self, *args: object, **kwargs: object) -> object:
2426

2527

2628
class ConfigFileCompleter(argcomplete.completers.FilesCompleter):
27-
2829
"""argcomplete completer for tmuxp files."""
2930

30-
def __call__(self, prefix, **kwargs):
31-
32-
completion = argcomplete.completers.FilesCompleter.__call__(
31+
def __init__(
32+
self,
33+
allowednames: t.Sequence[str] = (
34+
"yml",
35+
"yaml",
36+
"json",
37+
),
38+
directories: bool = False,
39+
**kwargs: object
40+
):
41+
if isinstance(allowednames, (str, bytes)):
42+
allowednames = [allowednames]
43+
44+
self.allowednames = [x.lstrip("*").lstrip(".") for x in allowednames]
45+
self.directories = directories
46+
# super().__init__(
47+
# self, allowednames=allowednames, directories=directories, **kwargs
48+
# )
49+
50+
def __call__(self, prefix: str, **kwargs):
51+
completion: t.List[str] = argcomplete.completers.FilesCompleter.__call__(
3352
self, prefix, **kwargs
3453
)
3554

36-
completion += [os.path.join(config_dir, c) for c in config.in_dir(config_dir)]
55+
completion.extend(
56+
[os.path.join(config_dir, c) for c in config.in_dir(config_dir)]
57+
)
3758

3859
return completion
3960

4061

4162
class TmuxinatorCompleter(argcomplete.completers.FilesCompleter):
42-
4363
"""argcomplete completer for Tmuxinator files."""
4464

4565
def __call__(self, prefix, **kwargs):

src/tmuxp/cli/load.py

+9-4
Original file line numberDiff line numberDiff line change
@@ -568,11 +568,16 @@ def create_load_subparser(parser: argparse.ArgumentParser) -> argparse.ArgumentP
568568
)
569569

570570
try:
571-
import shtab
571+
import argcomplete
572+
import argcomplete.completers
572573

573-
config_file.complete = shtab.FILE # type: ignore
574-
tmux_config_file.complete = shtab.FILE # type: ignore
575-
log_file.complete = shtab.FILE # type: ignore
574+
from tmuxp.cli.completions import ConfigFileCompleter
575+
576+
config_file.completer = ConfigFileCompleter() # type: ignore
577+
tmux_config_file.completer = ( # type: ignore
578+
argcomplete.completers.FilesCompleter
579+
)
580+
log_file.completer = argcomplete.completers.FilesCompleter # type: ignore
576581
except ImportError:
577582
pass
578583

0 commit comments

Comments
 (0)