From 797126890ff1ecdc3a4e0e9ac0d5f8e7ac72e773 Mon Sep 17 00:00:00 2001 From: I-am-Gabi Date: Wed, 5 Oct 2016 20:50:58 -0300 Subject: [PATCH 1/4] Add a flag -l to print the actions that were taken #18 --- pysorter/core/pysorter.py | 7 ++++++- pysorter/core/sorter.py | 12 +++++++++--- pysorter/filesystem.py | 10 ++++++---- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/pysorter/core/pysorter.py b/pysorter/core/pysorter.py index 0e8e40f..d8301a1 100644 --- a/pysorter/core/pysorter.py +++ b/pysorter/core/pysorter.py @@ -73,12 +73,17 @@ def parse_args(args=None): action='store_true', dest='do_remove_empty_dirs') + parser.add_argument('-l', '--log', + help='Print all the actions that were taken to stdout.', + action='store_true', + dest='print_log') + parser.add_argument('-V', '--version', action='version', version=__version__, help='Prints out the current version of pysorter') - return validate_arguments(parser.parse_args(args)) + return validate_arguments(parser.parse_args(args)) def main(args=None): diff --git a/pysorter/core/sorter.py b/pysorter/core/sorter.py index dcf7f9d..bb7ba60 100644 --- a/pysorter/core/sorter.py +++ b/pysorter/core/sorter.py @@ -21,7 +21,8 @@ def __init__(self, do_process_dirs=False, do_recurse=False, - do_remove_empty_dirs=False): + do_remove_empty_dirs=False, + print_log=False): """ Construct a new instance of PySorter for organizing some directory using certain parameters @@ -43,6 +44,9 @@ def __init__(self, do_remove_empty_dirs : boolean toggles recursive empty directory removal + print_log : boolean + print all the actions that were taken to stdout + dest_dir: string the directory to organize your files into, instead of doing it in-place, if not set, it will be set to `source_dir` @@ -74,6 +78,8 @@ def __init__(self, self.do_recurse = do_recurse self.do_process_dirs = do_process_dirs + self.print_log = print_log + @fs.save_cwd def sortrule_destination(self, path): """ @@ -155,6 +161,6 @@ def process(self, path): log.info("move `%s` --> `%s`", path, dst) if fs.is_file(path): - fs.move_file(path, dst) + fs.move_file(path, dst, self.print_log) else: - fs.move_dir(path, dst) + fs.move_dir(path, dst, self.print_log) diff --git a/pysorter/filesystem.py b/pysorter/filesystem.py index cc8e14f..3c97bc2 100644 --- a/pysorter/filesystem.py +++ b/pysorter/filesystem.py @@ -93,10 +93,11 @@ def func(*args, **kwargs): # File related # -------------------------------------------------------------------------- -def move_file(src, dst): +def move_file(src, dst, print_log=False): if not os.path.isfile(src): raise OSError("Source path is not a file: {}".format(src)) - #print "mv {} --> {}".format(src, dst) + if print_log: + print("mv {} --> {}".format(src, dst)) shutil.move(src, dst) @@ -104,11 +105,12 @@ def move_file(src, dst): # Directory related # -------------------------------------------------------------------------- -def move_dir(src, dst): +def move_dir(src, dst, print_log=False): """Moves the source directory INTO the destination""" if not os.path.isdir(src): raise OSError("Source path is not a directory: {}".format(src)) - #print "mvd {} --> {}".format(src, dst) + if print_log: + print("mvd {} --> {}".format(src, dst)) shutil.move(src, dst) def remove_empty_dirs(path): From 61e7fe3a398ca2604035700405ef43eeb3a35531 Mon Sep 17 00:00:00 2001 From: I-am-Gabi Date: Fri, 7 Oct 2016 19:34:46 -0300 Subject: [PATCH 2/4] add test and move print to Pysorter.process method --- pysorter/core/pysorter.py | 2 +- pysorter/core/sorter.py | 14 +++++++++----- pysorter/filesystem.py | 12 ++++++------ pysorter/tests/test_sorter.py | 18 ++++++++++++++++++ 4 files changed, 34 insertions(+), 12 deletions(-) diff --git a/pysorter/core/pysorter.py b/pysorter/core/pysorter.py index d8301a1..2b9cbce 100644 --- a/pysorter/core/pysorter.py +++ b/pysorter/core/pysorter.py @@ -76,7 +76,7 @@ def parse_args(args=None): parser.add_argument('-l', '--log', help='Print all the actions that were taken to stdout.', action='store_true', - dest='print_log') + dest='do_print_log') parser.add_argument('-V', '--version', action='version', diff --git a/pysorter/core/sorter.py b/pysorter/core/sorter.py index bb7ba60..37be85a 100644 --- a/pysorter/core/sorter.py +++ b/pysorter/core/sorter.py @@ -22,7 +22,7 @@ def __init__(self, do_process_dirs=False, do_recurse=False, do_remove_empty_dirs=False, - print_log=False): + do_print_log=False): """ Construct a new instance of PySorter for organizing some directory using certain parameters @@ -44,7 +44,7 @@ def __init__(self, do_remove_empty_dirs : boolean toggles recursive empty directory removal - print_log : boolean + do_print_log : boolean print all the actions that were taken to stdout dest_dir: string @@ -78,7 +78,7 @@ def __init__(self, self.do_recurse = do_recurse self.do_process_dirs = do_process_dirs - self.print_log = print_log + self.do_print_log = do_print_log @fs.save_cwd def sortrule_destination(self, path): @@ -161,6 +161,10 @@ def process(self, path): log.info("move `%s` --> `%s`", path, dst) if fs.is_file(path): - fs.move_file(path, dst, self.print_log) + fs.move_file(path, dst) + if self.do_print_log: + print("mv {} --> {}".format(path, dst)) else: - fs.move_dir(path, dst, self.print_log) + fs.move_dir(path, dst) + if self.do_print_log: + print("mvd {} --> {}".format(src, dst)) diff --git a/pysorter/filesystem.py b/pysorter/filesystem.py index 3c97bc2..643b3fa 100644 --- a/pysorter/filesystem.py +++ b/pysorter/filesystem.py @@ -93,11 +93,11 @@ def func(*args, **kwargs): # File related # -------------------------------------------------------------------------- -def move_file(src, dst, print_log=False): +def move_file(src, dst): if not os.path.isfile(src): raise OSError("Source path is not a file: {}".format(src)) - if print_log: - print("mv {} --> {}".format(src, dst)) + #print "mv {} --> {}".format(src, dst) + shutil.move(src, dst) @@ -105,12 +105,12 @@ def move_file(src, dst, print_log=False): # Directory related # -------------------------------------------------------------------------- -def move_dir(src, dst, print_log=False): +def move_dir(src, dst, do_print_log=False): """Moves the source directory INTO the destination""" if not os.path.isdir(src): raise OSError("Source path is not a directory: {}".format(src)) - if print_log: - print("mvd {} --> {}".format(src, dst)) + #print "mvd {} --> {}".format(src, dst) + shutil.move(src, dst) def remove_empty_dirs(path): diff --git a/pysorter/tests/test_sorter.py b/pysorter/tests/test_sorter.py index c9d1dfc..8ad3d61 100644 --- a/pysorter/tests/test_sorter.py +++ b/pysorter/tests/test_sorter.py @@ -187,6 +187,24 @@ def test_print_version(capsys): except AssertionError: assert out.strip() == __version__ +@helper.tempdir +def test_do_print_log(d): + filetypes = { + r'\.pdf$': 'docs/' + } + + files = ['file_test.pdf'] + to_sort = 'files/' + + helper.initialize_dir(d, filetypes, helper.build_path_tree(files, to_sort)) + + args = [dir_to_sort, '-l', '--log', 'filetypes.py'] + + try: + pysorter.main(args) + except SystemExit: + out, _ = capsys.readouterr() + assert out == 'files/file_test.pdf --> files/pdf/file_test.pdf' @helper.tempdir def test_write_unknown_types_correct(d): From 2eb72afd9bd43e012f131692809b93ef41867b76 Mon Sep 17 00:00:00 2001 From: I-am-Gabi Date: Fri, 7 Oct 2016 19:40:11 -0300 Subject: [PATCH 3/4] fix test: variable name --- pysorter/tests/test_sorter.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pysorter/tests/test_sorter.py b/pysorter/tests/test_sorter.py index 8ad3d61..094fa30 100644 --- a/pysorter/tests/test_sorter.py +++ b/pysorter/tests/test_sorter.py @@ -198,13 +198,13 @@ def test_do_print_log(d): helper.initialize_dir(d, filetypes, helper.build_path_tree(files, to_sort)) - args = [dir_to_sort, '-l', '--log', 'filetypes.py'] + args = [to_sort, '-l', '--log', 'filetypes.py'] try: pysorter.main(args) except SystemExit: out, _ = capsys.readouterr() - assert out == 'files/file_test.pdf --> files/pdf/file_test.pdf' + assert out == 'mv files/file_test.pdf --> files/pdf/file_test.pdf' @helper.tempdir def test_write_unknown_types_correct(d): From be67153140f1c6dbce8e0f40905745c28709fbf8 Mon Sep 17 00:00:00 2001 From: I-am-Gabi Date: Fri, 7 Oct 2016 20:14:02 -0300 Subject: [PATCH 4/4] [WINP] fix changes requested --- pysorter/tests/test_sorter.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pysorter/tests/test_sorter.py b/pysorter/tests/test_sorter.py index 094fa30..2c35910 100644 --- a/pysorter/tests/test_sorter.py +++ b/pysorter/tests/test_sorter.py @@ -187,7 +187,7 @@ def test_print_version(capsys): except AssertionError: assert out.strip() == __version__ -@helper.tempdir +@pytest.mark.xfail def test_do_print_log(d): filetypes = { r'\.pdf$': 'docs/' @@ -203,7 +203,7 @@ def test_do_print_log(d): try: pysorter.main(args) except SystemExit: - out, _ = capsys.readouterr() + out, err = capsys.readouterr() assert out == 'mv files/file_test.pdf --> files/pdf/file_test.pdf' @helper.tempdir