From 3edfd2acbdf2becda09f0d2ac107265983bf5104 Mon Sep 17 00:00:00 2001 From: Badr BADRI <57548585+pythops@users.noreply.github.com> Date: Sun, 21 Jun 2020 19:33:48 +0200 Subject: [PATCH 1/8] Add ls option to cli --- tmuxp/cli.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tmuxp/cli.py b/tmuxp/cli.py index 123a1f67f8e..78b2d49e7cc 100644 --- a/tmuxp/cli.py +++ b/tmuxp/cli.py @@ -10,6 +10,7 @@ import logging import os import sys +from pathlib import Path import click import kaptan @@ -924,3 +925,11 @@ def command_convert(config): buf.write(newconfig) buf.close() print('New config saved to <%s>.' % newfile) + + +@cli.command(name='ls', short_help='List configured sessions in $HOME/.tmuxp dir.') +def command_ls(): + tmuxp_dir = Path.home() / '.tmuxp' + if tmuxp_dir.exists() and tmuxp_dir.is_dir(): + for f in tmuxp_dir.iterdir(): + print(f.stem) From 82cfc69b93ecb4e4095bf50a42cddf0e6c7a1534 Mon Sep 17 00:00:00 2001 From: Badr BADRI <57548585+pythops@users.noreply.github.com> Date: Sat, 27 Jun 2020 17:33:46 +0200 Subject: [PATCH 2/8] Add tests for ls option --- tests/test_cli.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/tests/test_cli.py b/tests/test_cli.py index 2e94efa1518..c63730a6251 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -4,6 +4,7 @@ import json import os +from pathlib import Path import pytest @@ -13,7 +14,13 @@ import libtmux from libtmux.common import has_lt_version from tmuxp import cli, config -from tmuxp.cli import get_config_dir, is_pure_name, load_workspace, scan_config +from tmuxp.cli import ( + command_ls, + get_config_dir, + is_pure_name, + load_workspace, + scan_config, +) from .fixtures._util import curjoin, loadfixture @@ -574,3 +581,15 @@ def check_cmd(config_arg): assert str(user_config) in check_cmd(str(configdir.join('myconfig.yaml'))) assert 'file not found' in check_cmd('.tmuxp.json') + +def test_ls_cli(monkeypatch, tmpdir): + tmpdir.join('.tmuxp/session_1.yaml').ensure() + tmpdir.join('.tmuxp/session_2.yaml').ensure() + tmpdir.join('.tmuxp/session_3.json').ensure() + + monkeypatch.setenv("HOME", str(tmpdir)) + + runner = CliRunner() + + cli_output = runner.invoke(command_ls).output + assert cli_output == "session_1\nsession_2\nsession_3\n" From 10e5561e96026b8c6947411720ba292a30bf67d2 Mon Sep 17 00:00:00 2001 From: Badr BADRI <57548585+pythops@users.noreply.github.com> Date: Sat, 27 Jun 2020 19:02:30 +0200 Subject: [PATCH 3/8] Use single quotes --- tests/test_cli.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_cli.py b/tests/test_cli.py index c63730a6251..a44ff8f485f 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -592,4 +592,4 @@ def test_ls_cli(monkeypatch, tmpdir): runner = CliRunner() cli_output = runner.invoke(command_ls).output - assert cli_output == "session_1\nsession_2\nsession_3\n" + assert cli_output == 'session_1\nsession_2\nsession_3\n' From e453ce830a5a62219a7a1b3edd68a4756b2f588a Mon Sep 17 00:00:00 2001 From: Tony Narlock Date: Fri, 10 Jul 2020 06:17:12 -0500 Subject: [PATCH 4/8] tmuxp ls: Alphabetize --- tmuxp/cli.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tmuxp/cli.py b/tmuxp/cli.py index 78b2d49e7cc..723622c8ebd 100644 --- a/tmuxp/cli.py +++ b/tmuxp/cli.py @@ -931,5 +931,5 @@ def command_convert(config): def command_ls(): tmuxp_dir = Path.home() / '.tmuxp' if tmuxp_dir.exists() and tmuxp_dir.is_dir(): - for f in tmuxp_dir.iterdir(): + for f in sorted(tmuxp_dir.iterdir()): print(f.stem) From 9e3b36c2c089b53c7fb8531eade2e57c087df358 Mon Sep 17 00:00:00 2001 From: Tony Narlock Date: Fri, 10 Jul 2020 06:34:48 -0500 Subject: [PATCH 5/8] Ignore directories, files not covered in home dir --- tmuxp/cli.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tmuxp/cli.py b/tmuxp/cli.py index 723622c8ebd..7f2598495d5 100644 --- a/tmuxp/cli.py +++ b/tmuxp/cli.py @@ -27,6 +27,8 @@ logger = logging.getLogger(__name__) +VALID_CONFIG_DIR_FILE_EXTENSIONS = ['.yaml', '.yml', '.json'] + def get_cwd(): return os.getcwd() @@ -327,7 +329,7 @@ def scan_config(config, config_dir=None): x for x in [ '%s%s' % (join(config_dir, config), ext) - for ext in ['.yaml', '.yml', '.json'] + for ext in VALID_CONFIG_DIR_FILE_EXTENSIONS ] if exists(x) ] @@ -932,4 +934,6 @@ def command_ls(): tmuxp_dir = Path.home() / '.tmuxp' if tmuxp_dir.exists() and tmuxp_dir.is_dir(): for f in sorted(tmuxp_dir.iterdir()): + if f.is_dir() or f.suffix not in VALID_CONFIG_DIR_FILE_EXTENSIONS: + continue print(f.stem) From 77c45af8583c3a8de346f18671e77feb04e95961 Mon Sep 17 00:00:00 2001 From: Tony Narlock Date: Fri, 10 Jul 2020 06:35:20 -0500 Subject: [PATCH 6/8] tmuxp ls: Update tests --- tests/test_cli.py | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/tests/test_cli.py b/tests/test_cli.py index a44ff8f485f..c6b7f7c0a9a 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -4,7 +4,7 @@ import json import os -from pathlib import Path +import pathlib import pytest @@ -582,14 +582,32 @@ def check_cmd(config_arg): assert 'file not found' in check_cmd('.tmuxp.json') -def test_ls_cli(monkeypatch, tmpdir): - tmpdir.join('.tmuxp/session_1.yaml').ensure() - tmpdir.join('.tmuxp/session_2.yaml').ensure() - tmpdir.join('.tmuxp/session_3.json').ensure() +def test_ls_cli(monkeypatch, tmpdir): monkeypatch.setenv("HOME", str(tmpdir)) - runner = CliRunner() + filenames = [ + '.git/', + '.gitignore/', + 'session_1.yaml', + 'session_2.yaml', + 'session_3.json', + 'session_4.txt', + ] + + # should ignore: + # - directories should be ignored + # - extensions not covered in VALID_CONFIG_DIR_FILE_EXTENSIONS + ignored_filenames = ['.git/', '.gitignore/', 'session_4.txt'] + stems = [pathlib.PurePath(f).stem for f in filenames if f not in ignored_filenames] + + for filename in filenames: + location = tmpdir.join('.tmuxp/{}'.format(filename)) + if filename.endswith('/'): + location.ensure_dir() + else: + location.ensure() + runner = CliRunner() cli_output = runner.invoke(command_ls).output - assert cli_output == 'session_1\nsession_2\nsession_3\n' + assert cli_output == '\n'.join(stems) + '\n' From 40a0cf1529407d8e7a82a43ea23d7eb2c6683224 Mon Sep 17 00:00:00 2001 From: Tony Narlock Date: Fri, 10 Jul 2020 06:42:34 -0500 Subject: [PATCH 7/8] tmuxp ls: Do it without pathlib This way only python 2.7 is needed --- tests/test_cli.py | 3 +-- tmuxp/cli.py | 12 ++++++------ 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/tests/test_cli.py b/tests/test_cli.py index c6b7f7c0a9a..1d5882fe5ce 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -4,7 +4,6 @@ import json import os -import pathlib import pytest @@ -599,7 +598,7 @@ def test_ls_cli(monkeypatch, tmpdir): # - directories should be ignored # - extensions not covered in VALID_CONFIG_DIR_FILE_EXTENSIONS ignored_filenames = ['.git/', '.gitignore/', 'session_4.txt'] - stems = [pathlib.PurePath(f).stem for f in filenames if f not in ignored_filenames] + stems = [os.path.splitext(f)[0] for f in filenames if f not in ignored_filenames] for filename in filenames: location = tmpdir.join('.tmuxp/{}'.format(filename)) diff --git a/tmuxp/cli.py b/tmuxp/cli.py index 7f2598495d5..b3d912b4899 100644 --- a/tmuxp/cli.py +++ b/tmuxp/cli.py @@ -10,7 +10,6 @@ import logging import os import sys -from pathlib import Path import click import kaptan @@ -931,9 +930,10 @@ def command_convert(config): @cli.command(name='ls', short_help='List configured sessions in $HOME/.tmuxp dir.') def command_ls(): - tmuxp_dir = Path.home() / '.tmuxp' - if tmuxp_dir.exists() and tmuxp_dir.is_dir(): - for f in sorted(tmuxp_dir.iterdir()): - if f.is_dir() or f.suffix not in VALID_CONFIG_DIR_FILE_EXTENSIONS: + tmuxp_dir = get_config_dir() + if os.path.exists(tmuxp_dir) and os.path.isdir(tmuxp_dir): + for f in sorted(os.listdir(tmuxp_dir)): + stem, ext = os.path.splitext(f) + if os.path.isdir(f) or ext not in VALID_CONFIG_DIR_FILE_EXTENSIONS: continue - print(f.stem) + print(stem) From 5e7b9526477eb1d518ad2f844e586f0fc4f3e1da Mon Sep 17 00:00:00 2001 From: Tony Narlock Date: Fri, 10 Jul 2020 07:22:30 -0500 Subject: [PATCH 8/8] tmuxp ls: Fix help message --- tmuxp/cli.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tmuxp/cli.py b/tmuxp/cli.py index b3d912b4899..f724a765afa 100644 --- a/tmuxp/cli.py +++ b/tmuxp/cli.py @@ -928,7 +928,9 @@ def command_convert(config): print('New config saved to <%s>.' % newfile) -@cli.command(name='ls', short_help='List configured sessions in $HOME/.tmuxp dir.') +@cli.command( + name='ls', short_help='List configured sessions in {}.'.format(get_config_dir()) +) def command_ls(): tmuxp_dir = get_config_dir() if os.path.exists(tmuxp_dir) and os.path.isdir(tmuxp_dir):