From 2d7f8acc230bbb8e96df1c7c1ee89f48f6235b50 Mon Sep 17 00:00:00 2001 From: James Whale Date: Thu, 7 Jan 2021 21:40:35 +0000 Subject: [PATCH 1/7] added python version to readme --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 28155a5..4a0d80e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # hb\_organiser [![PyPI](https://img.shields.io/pypi/v/hb-organiser.svg)](https://pypi.python.org/pypi/hb-organiser) +[![image](https://img.shields.io/pypi/pyversions/hb-organiser.svg)](https://python.org/pypi/hb-organiser) ![Unittests](https://github.com/WhaleJ84/hb_organiser/workflows/Unittests/badge.svg) [![codecov](https://codecov.io/gh/WhaleJ84/hb_organiser/branch/main/graph/badge.svg?token=IJSKBUAP81)](https://codecov.io/gh/WhaleJ84/hb_organiser) ![Pylint](https://github.com/WhaleJ84/hb_organiser/workflows/Pylint/badge.svg) From d4fc0604359ee2c367551e335f1bd13ff15ebd76 Mon Sep 17 00:00:00 2001 From: James Whale Date: Sun, 10 Jan 2021 09:22:20 +0000 Subject: [PATCH 2/7] changed image to use link rather than storing it locally --- README.md | 6 +++--- media/hb_organiser_demo.png | Bin 115659 -> 0 bytes 2 files changed, 3 insertions(+), 3 deletions(-) delete mode 100644 media/hb_organiser_demo.png diff --git a/README.md b/README.md index 4a0d80e..9953258 100644 --- a/README.md +++ b/README.md @@ -2,15 +2,15 @@ [![PyPI](https://img.shields.io/pypi/v/hb-organiser.svg)](https://pypi.python.org/pypi/hb-organiser) [![image](https://img.shields.io/pypi/pyversions/hb-organiser.svg)](https://python.org/pypi/hb-organiser) -![Unittests](https://github.com/WhaleJ84/hb_organiser/workflows/Unittests/badge.svg) +[![Unittests](https://github.com/WhaleJ84/hb_organiser/workflows/Unittests/badge.svg)](https://github.com/WhaleJ84/hb_organiser/actions?query=workflow%3AUnittests) [![codecov](https://codecov.io/gh/WhaleJ84/hb_organiser/branch/main/graph/badge.svg?token=IJSKBUAP81)](https://codecov.io/gh/WhaleJ84/hb_organiser) -![Pylint](https://github.com/WhaleJ84/hb_organiser/workflows/Pylint/badge.svg) +[![Pylint](https://github.com/WhaleJ84/hb_organiser/workflows/Pylint/badge.svg)](https://github.com/WhaleJ84/hb_organiser/actions?query=workflow%3APylint) Organises Humble Bundle bundles based on their platform. Designed to work around the structure created via Talonius' [hb-downloader](https://github.com/talonius/hb-downloader). Other automated HB downloaders may not work with this out of the box. -![Copying files](media/hb_organiser_demo.png) +![An image of hb-organiser copying files](https://i.imgur.com/Ti1wuri.png) ## Install diff --git a/media/hb_organiser_demo.png b/media/hb_organiser_demo.png deleted file mode 100644 index aa3636f9e446282ed3022dc60b85b6524f16fe2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 115659 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

n_Q^$ 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 From 673c711a670a2b295079307ae1035e226ef2d6d7 Mon Sep 17 00:00:00 2001 From: James Whale Date: Sun, 10 Jan 2021 09:26:40 +0000 Subject: [PATCH 3/7] added tests for multiple python versions --- .github/workflows/unittests.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/unittests.yml b/.github/workflows/unittests.yml index 70286e0..a8ced3f 100644 --- a/.github/workflows/unittests.yml +++ b/.github/workflows/unittests.yml @@ -13,6 +13,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: + python-version: [2.7, 3.5, 3.6, 3.7, 3.8, 3.9] distro: - ubuntu2004 @@ -20,10 +21,10 @@ jobs: - name: Checkout code uses: actions/checkout@v2 - - name: Set up Python3 + - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v2 with: - python-version: '3.x' + python-version: ${{ matrix.python-version }} - name: Install coverage run: | From 2bdc4f9d4eaeac740826b05bb7473500506e4674 Mon Sep 17 00:00:00 2001 From: James Whale Date: Sun, 10 Jan 2021 09:40:03 +0000 Subject: [PATCH 4/7] removed python versions without fstrings --- .github/workflows/unittests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/unittests.yml b/.github/workflows/unittests.yml index a8ced3f..a4fdca1 100644 --- a/.github/workflows/unittests.yml +++ b/.github/workflows/unittests.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: [2.7, 3.5, 3.6, 3.7, 3.8, 3.9] + python-version: [3.6, 3.7, 3.8, 3.9] distro: - ubuntu2004 From d4f703136d4adbd331319262695f7e8dab02ae0d Mon Sep 17 00:00:00 2001 From: James Whale Date: Sun, 10 Jan 2021 17:59:09 +0000 Subject: [PATCH 5/7] added changes and unit tests to fix issue 15 --- hb_organiser/bundle_objects.py | 6 ++++ hb_organiser/cli.py | 15 ++++++--- hb_organiser/organiser.py | 61 +++++++++++++++++++--------------- tests/test_cli.py | 57 +++++++++++++++++++++++++++++++ 4 files changed, 107 insertions(+), 32 deletions(-) create mode 100644 tests/test_cli.py diff --git a/hb_organiser/bundle_objects.py b/hb_organiser/bundle_objects.py index efd5bed..608fd6d 100644 --- a/hb_organiser/bundle_objects.py +++ b/hb_organiser/bundle_objects.py @@ -20,6 +20,12 @@ def __init__(self, name, path): """ self.name = name self.path = join(path, self.name) + + # FileNotFound error thrown if `/path/to/file` given instead of `/path/to/file/` + # As it creates `/path/to/file/file`. This appears to resolve that + if self.path.split('/')[-2] == self.name: + self.path = path + self.items = len(glob(f"{self.path}/**", recursive=True))-1 diff --git a/hb_organiser/cli.py b/hb_organiser/cli.py index f8515b7..7b22064 100644 --- a/hb_organiser/cli.py +++ b/hb_organiser/cli.py @@ -3,7 +3,7 @@ Contains the code pertaining to the CLI. All back-end logic is located elsewhere. """ import argparse -from sys import exit as sys_exit +from sys import argv from hb_organiser.check import source_exists from hb_organiser.config import Config @@ -11,7 +11,7 @@ from hb_organiser.logger import logger -def cli(): +def cli(args): """ Contains the code pertaining to the CLI. All back-end logic is located elsewhere. @@ -35,8 +35,11 @@ def cli(): help="destination directory of sorted bundles. overrides location specified in config file. " "if no destination is given, a dry run will occur - displaying what would have happened." ) - args = parser.parse_args() + # args = parser.parse_args() + return parser.parse_args(args) + +def verify_args(args): if args.source: source = args.source else: @@ -58,10 +61,12 @@ def cli(): logger.debug('No destination given via CLI or config. Defaulting to None') if not source_exists(source): - sys_exit(1) + return False organiser = HBOrganiser(source, destination, args.platform) organiser.loop_through_bundles() + return True if __name__ == '__main__': - cli() + arguments = cli(argv[1:]) + verify_args(arguments) diff --git a/hb_organiser/organiser.py b/hb_organiser/organiser.py index d7da577..13e5f9b 100644 --- a/hb_organiser/organiser.py +++ b/hb_organiser/organiser.py @@ -44,8 +44,7 @@ def ensure_directory_exists(self, target, task=None): print(f"{task} MKDIR: {destination}") Path(destination).mkdir(parents=True, exist_ok=True) - @staticmethod - def copy_file(source, destination, task=None): + def copy_file(self, source, destination, task=None): """ Copies the source to the destination. Before each operation, the source file is logged. @@ -61,31 +60,39 @@ def copy_file(source, destination, task=None): :type task: str :return: """ - if not isfile(destination): - # TODO: Fix this duplicate code section. - # Was nastily thrown in to fix a bug - try: - if source in open('queue.txt'): - print(f"{task} COPY: {source} {destination}") - log = open('queue.txt', 'w') - log.write(source) - log.close() - copyfile(source, destination) - log = open('queue.txt', 'w') - log.write('') - log.close() - except FileNotFoundError: - pass - print(f"{task} COPY: {source} {destination}") - log = open('queue.txt', 'w') - log.write(source) - log.close() - copyfile(source, destination) - log = open('queue.txt', 'w') - log.write('') - log.close() - else: - print(f"{task} SKIP: {destination}") + complete = 'DONE' + try: + if source not in open('queue.txt') and not isfile(destination): + print(f"{task} COPYING: {source} {destination}\r", end="", flush=True) + complete = 'COPIED' + log = open('queue.txt', 'w') + log.write(source) + log.close() + elif source in open('queue.txt'): + print(f"{task} RE-COPING: {source} {destination}\r", end="", flush=True) + complete = 'RE-COPIED' + else: + print(f"{task} SKIPPED: {destination}") + return True + except FileNotFoundError: + print(f"{task} INFO: Creating queue.txt") + open('queue.txt', 'x') + self.copy_file(source, destination, task) + + copyfile(source, destination) + print(f"{task} {complete}: {source} {destination}\r", flush=True) + + entries = [] + log = open('queue.txt') + for entry in log: + if source not in entry: + entries.append(entry) + log.close() + + log = open('queue.txt', 'w') + log.writelines(entries) + log.close() + return True def loop_through_bundles(self): """ diff --git a/tests/test_cli.py b/tests/test_cli.py new file mode 100644 index 0000000..cd6112c --- /dev/null +++ b/tests/test_cli.py @@ -0,0 +1,57 @@ +from os.path import abspath +from unittest import TestCase + +from hb_organiser.cli import * + + +class HBOrganiserCliTesCase(TestCase): + def setUp(self) -> None: + pass + + def tearDown(self) -> None: + pass + + def test_verify_args_returns_true_on_good_relative_source_path_with_trailing_forward_slash(self): + setup = cli(['-s', 'tests/test_libraries/library/', 'all']) + result = verify_args(setup) + HBOrganiserCliTesCase.assertTrue(self, result) + + def test_verify_args_returns_true_on_good_absolute_source_path_with_trailing_forward_slash(self): + setup = cli(['-s', abspath('tests/test_libraries/library/'), 'all']) + result = verify_args(setup) + HBOrganiserCliTesCase.assertTrue(self, result) + + def test_verify_args_returns_true_on_good_relative_source_path_without_trailing_forward_slash(self): + setup = cli(['-s', 'tests/test_libraries/library', 'all']) + result = verify_args(setup) + HBOrganiserCliTesCase.assertTrue(self, result) + + def test_verify_args_returns_true_on_good_absolute_source_path_without_trailing_forward_slash(self): + setup = cli(['-s', abspath('tests/test_libraries/library'), 'all']) + result = verify_args(setup) + HBOrganiserCliTesCase.assertTrue(self, result) + + def test_verify_args_returns_false_on_source_bad_path(self): + setup = cli(['-s', 'tests/test_libraries/fake_library', 'all']) + result = verify_args(setup) + HBOrganiserCliTesCase.assertFalse(self, result) + + def test_verify_args_returns_true_on_good_relative_destination_path_with_trailing_forward_slash(self): + setup = cli(['-s', 'tests/test_libraries/library/', '-d', 'tests/test_destination/', 'all']) + result = verify_args(setup) + HBOrganiserCliTesCase.assertTrue(self, result) + + def test_verify_args_returns_true_on_good_absolute_destination_path_with_trailing_forward_slash(self): + setup = cli(['-s', 'tests/test_libraries/library/', '-d', abspath('tests/test_destination/'), 'all']) + result = verify_args(setup) + HBOrganiserCliTesCase.assertTrue(self, result) + + def test_verify_args_returns_true_on_good_relative_destination_path_without_trailing_forward_slash(self): + setup = cli(['-s', 'tests/test_libraries/library/', '-d', 'tests/test_destination', 'all']) + result = verify_args(setup) + HBOrganiserCliTesCase.assertTrue(self, result) + + def test_verify_args_returns_true_on_good_absolute_destination_path_without_trailing_forward_slash(self): + setup = cli(['-s', 'tests/test_libraries/library/', '-d', abspath('tests/test_destination'), 'all']) + result = verify_args(setup) + HBOrganiserCliTesCase.assertTrue(self, result) From c9508398370e8a7e7e91fa86b106963295b48081 Mon Sep 17 00:00:00 2001 From: James Whale Date: Sun, 10 Jan 2021 18:47:30 +0000 Subject: [PATCH 6/7] further tested fix via module and tests --- hb_organiser/cli.py | 14 ++++++++------ hb_organiser/organiser.py | 2 +- tests/test_cli.py | 27 +++++++++------------------ 3 files changed, 18 insertions(+), 25 deletions(-) diff --git a/hb_organiser/cli.py b/hb_organiser/cli.py index 7b22064..f094c39 100644 --- a/hb_organiser/cli.py +++ b/hb_organiser/cli.py @@ -11,7 +11,7 @@ from hb_organiser.logger import logger -def cli(args): +def cli(args=None): """ Contains the code pertaining to the CLI. All back-end logic is located elsewhere. @@ -35,11 +35,14 @@ def cli(args): help="destination directory of sorted bundles. overrides location specified in config file. " "if no destination is given, a dry run will occur - displaying what would have happened." ) - # args = parser.parse_args() - return parser.parse_args(args) + + if args is not None: + args = parser.parse_args(args) + else: + args = parser.parse_args() -def verify_args(args): +# def verify_args(args): if args.source: source = args.source else: @@ -68,5 +71,4 @@ def verify_args(args): if __name__ == '__main__': - arguments = cli(argv[1:]) - verify_args(arguments) + cli(argv[1:]) diff --git a/hb_organiser/organiser.py b/hb_organiser/organiser.py index 13e5f9b..9bec843 100644 --- a/hb_organiser/organiser.py +++ b/hb_organiser/organiser.py @@ -135,5 +135,5 @@ def loop_through_bundles(self): task += 1 return True except KeyboardInterrupt: - print('INFO: Manual intervention. exiting.') + print('\nINFO: Manual intervention. exiting.') return False diff --git a/tests/test_cli.py b/tests/test_cli.py index cd6112c..da58f4e 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -12,46 +12,37 @@ def tearDown(self) -> None: pass def test_verify_args_returns_true_on_good_relative_source_path_with_trailing_forward_slash(self): - setup = cli(['-s', 'tests/test_libraries/library/', 'all']) - result = verify_args(setup) + result = cli(['-s', 'tests/test_libraries/library/', 'all']) HBOrganiserCliTesCase.assertTrue(self, result) def test_verify_args_returns_true_on_good_absolute_source_path_with_trailing_forward_slash(self): - setup = cli(['-s', abspath('tests/test_libraries/library/'), 'all']) - result = verify_args(setup) + result = cli(['-s', abspath('tests/test_libraries/library/'), 'all']) HBOrganiserCliTesCase.assertTrue(self, result) def test_verify_args_returns_true_on_good_relative_source_path_without_trailing_forward_slash(self): - setup = cli(['-s', 'tests/test_libraries/library', 'all']) - result = verify_args(setup) + result = cli(['-s', 'tests/test_libraries/library', 'all']) HBOrganiserCliTesCase.assertTrue(self, result) def test_verify_args_returns_true_on_good_absolute_source_path_without_trailing_forward_slash(self): - setup = cli(['-s', abspath('tests/test_libraries/library'), 'all']) - result = verify_args(setup) + result = cli(['-s', abspath('tests/test_libraries/library'), 'all']) HBOrganiserCliTesCase.assertTrue(self, result) def test_verify_args_returns_false_on_source_bad_path(self): - setup = cli(['-s', 'tests/test_libraries/fake_library', 'all']) - result = verify_args(setup) + result = cli(['-s', 'tests/test_libraries/fake_library', 'all']) HBOrganiserCliTesCase.assertFalse(self, result) def test_verify_args_returns_true_on_good_relative_destination_path_with_trailing_forward_slash(self): - setup = cli(['-s', 'tests/test_libraries/library/', '-d', 'tests/test_destination/', 'all']) - result = verify_args(setup) + result = cli(['-s', 'tests/test_libraries/library/', '-d', 'tests/test_destination/', 'all']) HBOrganiserCliTesCase.assertTrue(self, result) def test_verify_args_returns_true_on_good_absolute_destination_path_with_trailing_forward_slash(self): - setup = cli(['-s', 'tests/test_libraries/library/', '-d', abspath('tests/test_destination/'), 'all']) - result = verify_args(setup) + result = cli(['-s', 'tests/test_libraries/library/', '-d', abspath('tests/test_destination/'), 'all']) HBOrganiserCliTesCase.assertTrue(self, result) def test_verify_args_returns_true_on_good_relative_destination_path_without_trailing_forward_slash(self): - setup = cli(['-s', 'tests/test_libraries/library/', '-d', 'tests/test_destination', 'all']) - result = verify_args(setup) + result = cli(['-s', 'tests/test_libraries/library/', '-d', 'tests/test_destination', 'all']) HBOrganiserCliTesCase.assertTrue(self, result) def test_verify_args_returns_true_on_good_absolute_destination_path_without_trailing_forward_slash(self): - setup = cli(['-s', 'tests/test_libraries/library/', '-d', abspath('tests/test_destination'), 'all']) - result = verify_args(setup) + result = cli(['-s', 'tests/test_libraries/library/', '-d', abspath('tests/test_destination'), 'all']) HBOrganiserCliTesCase.assertTrue(self, result) From 63baf26f0c945ab22a0a98b79a597c60a445d7f4 Mon Sep 17 00:00:00 2001 From: James Whale Date: Sun, 10 Jan 2021 18:57:06 +0000 Subject: [PATCH 7/7] added pip package files --- Pipfile | 1 + Pipfile.lock | 63 +++++++++++++++++++++-- build/lib/hb_organiser/bundle_objects.py | 6 +++ build/lib/hb_organiser/cli.py | 17 ++++-- build/lib/hb_organiser/organiser.py | 63 +++++++++++++---------- build/lib/tests/test_cli.py | 48 +++++++++++++++++ dist/hb_organiser-1.0.8-py3-none-any.whl | Bin 0 -> 11021 bytes dist/hb_organiser-1.0.8.tar.gz | Bin 0 -> 9623 bytes hb_organiser.egg-info/PKG-INFO | 14 +++-- hb_organiser.egg-info/SOURCES.txt | 3 +- setup.py | 13 +++-- 11 files changed, 180 insertions(+), 48 deletions(-) create mode 100644 build/lib/tests/test_cli.py create mode 100644 dist/hb_organiser-1.0.8-py3-none-any.whl create mode 100644 dist/hb_organiser-1.0.8.tar.gz diff --git a/Pipfile b/Pipfile index 2dad568..5f8e281 100644 --- a/Pipfile +++ b/Pipfile @@ -10,6 +10,7 @@ setuptools = "*" wheel = "*" pylint = "*" twine = "*" +coverage = "*" [requires] python_version = "3.8" diff --git a/Pipfile.lock b/Pipfile.lock index 0d3d976..52f0ae4 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "b79093da6732a4f9bf2d2ba42dbf8cb8a6052be89ebe0586e9ac1b34f3c71c21" + "sha256": "0e715a3a28481465bcea149f48fa39a2246f91a298a0ed3bd91f2dc1b59e93c7" }, "pipfile-spec": 6, "requires": { @@ -93,6 +93,61 @@ ], "version": "==0.4.4" }, + "coverage": { + "hashes": [ + "sha256:08b3ba72bd981531fd557f67beee376d6700fba183b167857038997ba30dd297", + "sha256:2757fa64e11ec12220968f65d086b7a29b6583d16e9a544c889b22ba98555ef1", + "sha256:3102bb2c206700a7d28181dbe04d66b30780cde1d1c02c5f3c165cf3d2489497", + "sha256:3498b27d8236057def41de3585f317abae235dd3a11d33e01736ffedb2ef8606", + "sha256:378ac77af41350a8c6b8801a66021b52da8a05fd77e578b7380e876c0ce4f528", + "sha256:38f16b1317b8dd82df67ed5daa5f5e7c959e46579840d77a67a4ceb9cef0a50b", + "sha256:3911c2ef96e5ddc748a3c8b4702c61986628bb719b8378bf1e4a6184bbd48fe4", + "sha256:3a3c3f8863255f3c31db3889f8055989527173ef6192a283eb6f4db3c579d830", + "sha256:3b14b1da110ea50c8bcbadc3b82c3933974dbeea1832e814aab93ca1163cd4c1", + "sha256:535dc1e6e68fad5355f9984d5637c33badbdc987b0c0d303ee95a6c979c9516f", + "sha256:6f61319e33222591f885c598e3e24f6a4be3533c1d70c19e0dc59e83a71ce27d", + "sha256:723d22d324e7997a651478e9c5a3120a0ecbc9a7e94071f7e1954562a8806cf3", + "sha256:76b2775dda7e78680d688daabcb485dc87cf5e3184a0b3e012e1d40e38527cc8", + "sha256:782a5c7df9f91979a7a21792e09b34a658058896628217ae6362088b123c8500", + "sha256:7e4d159021c2029b958b2363abec4a11db0ce8cd43abb0d9ce44284cb97217e7", + "sha256:8dacc4073c359f40fcf73aede8428c35f84639baad7e1b46fce5ab7a8a7be4bb", + "sha256:8f33d1156241c43755137288dea619105477961cfa7e47f48dbf96bc2c30720b", + "sha256:8ffd4b204d7de77b5dd558cdff986a8274796a1e57813ed005b33fd97e29f059", + "sha256:93a280c9eb736a0dcca19296f3c30c720cb41a71b1f9e617f341f0a8e791a69b", + "sha256:9a4f66259bdd6964d8cf26142733c81fb562252db74ea367d9beb4f815478e72", + "sha256:9a9d4ff06804920388aab69c5ea8a77525cf165356db70131616acd269e19b36", + "sha256:a2070c5affdb3a5e751f24208c5c4f3d5f008fa04d28731416e023c93b275277", + "sha256:a4857f7e2bc6921dbd487c5c88b84f5633de3e7d416c4dc0bb70256775551a6c", + "sha256:a607ae05b6c96057ba86c811d9c43423f35e03874ffb03fbdcd45e0637e8b631", + "sha256:a66ca3bdf21c653e47f726ca57f46ba7fc1f260ad99ba783acc3e58e3ebdb9ff", + "sha256:ab110c48bc3d97b4d19af41865e14531f300b482da21783fdaacd159251890e8", + "sha256:b239711e774c8eb910e9b1ac719f02f5ae4bf35fa0420f438cdc3a7e4e7dd6ec", + "sha256:be0416074d7f253865bb67630cf7210cbc14eb05f4099cc0f82430135aaa7a3b", + "sha256:c46643970dff9f5c976c6512fd35768c4a3819f01f61169d8cdac3f9290903b7", + "sha256:c5ec71fd4a43b6d84ddb88c1df94572479d9a26ef3f150cef3dacefecf888105", + "sha256:c6e5174f8ca585755988bc278c8bb5d02d9dc2e971591ef4a1baabdf2d99589b", + "sha256:c89b558f8a9a5a6f2cfc923c304d49f0ce629c3bd85cb442ca258ec20366394c", + "sha256:cc44e3545d908ecf3e5773266c487ad1877be718d9dc65fc7eb6e7d14960985b", + "sha256:cc6f8246e74dd210d7e2b56c76ceaba1cc52b025cd75dbe96eb48791e0250e98", + "sha256:cd556c79ad665faeae28020a0ab3bda6cd47d94bec48e36970719b0b86e4dcf4", + "sha256:ce6f3a147b4b1a8b09aae48517ae91139b1b010c5f36423fa2b866a8b23df879", + "sha256:ceb499d2b3d1d7b7ba23abe8bf26df5f06ba8c71127f188333dddcf356b4b63f", + "sha256:cef06fb382557f66d81d804230c11ab292d94b840b3cb7bf4450778377b592f4", + "sha256:e448f56cfeae7b1b3b5bcd99bb377cde7c4eb1970a525c770720a352bc4c8044", + "sha256:e52d3d95df81c8f6b2a1685aabffadf2d2d9ad97203a40f8d61e51b70f191e4e", + "sha256:ee2f1d1c223c3d2c24e3afbb2dd38be3f03b1a8d6a83ee3d9eb8c36a52bee899", + "sha256:f2c6888eada180814b8583c3e793f3f343a692fc802546eed45f40a001b1169f", + "sha256:f51dbba78d68a44e99d484ca8c8f604f17e957c1ca09c3ebc2c7e3bbd9ba0448", + "sha256:f54de00baf200b4539a5a092a759f000b5f45fd226d6d25a76b0dff71177a714", + "sha256:fa10fee7e32213f5c7b0d6428ea92e3a3fdd6d725590238a3f92c0de1c78b9d2", + "sha256:fabeeb121735d47d8eab8671b6b031ce08514c86b7ad8f7d5490a7b6dcd6267d", + "sha256:fac3c432851038b3e6afe086f777732bcf7f6ebbfd90951fa04ee53db6d0bcdd", + "sha256:fda29412a66099af6d6de0baa6bd7c52674de177ec2ad2630ca264142d69c6c7", + "sha256:ff1330e8bc996570221b450e2d539134baa9465f5cb98aff0e0f73f34172e0ae" + ], + "index": "pypi", + "version": "==5.3.1" + }, "cryptography": { "hashes": [ "sha256:0003a52a123602e1acee177dc90dd201f9bb1e73f24a070db7d36c588e8f5c7d", @@ -275,10 +330,10 @@ }, "tqdm": { "hashes": [ - "sha256:556c55b081bd9aa746d34125d024b73f0e2a0e62d5927ff0e400e20ee0a03b9a", - "sha256:b8b46036fd00176d0870307123ef06bb851096964fa7fc578d789f90ce82c3e4" + "sha256:54985cecd51071f3faa2a07a862c24be1426f925353d82b3dde03f7609d63248", + "sha256:86ca00c4942c3b3dc7ed31bae44cd2db38ef85ca05a7920f6a6c52ad7fcac904" ], - "version": "==4.55.1" + "version": "==4.55.2" }, "twine": { "hashes": [ diff --git a/build/lib/hb_organiser/bundle_objects.py b/build/lib/hb_organiser/bundle_objects.py index efd5bed..608fd6d 100644 --- a/build/lib/hb_organiser/bundle_objects.py +++ b/build/lib/hb_organiser/bundle_objects.py @@ -20,6 +20,12 @@ def __init__(self, name, path): """ self.name = name self.path = join(path, self.name) + + # FileNotFound error thrown if `/path/to/file` given instead of `/path/to/file/` + # As it creates `/path/to/file/file`. This appears to resolve that + if self.path.split('/')[-2] == self.name: + self.path = path + self.items = len(glob(f"{self.path}/**", recursive=True))-1 diff --git a/build/lib/hb_organiser/cli.py b/build/lib/hb_organiser/cli.py index f8515b7..f094c39 100644 --- a/build/lib/hb_organiser/cli.py +++ b/build/lib/hb_organiser/cli.py @@ -3,7 +3,7 @@ Contains the code pertaining to the CLI. All back-end logic is located elsewhere. """ import argparse -from sys import exit as sys_exit +from sys import argv from hb_organiser.check import source_exists from hb_organiser.config import Config @@ -11,7 +11,7 @@ from hb_organiser.logger import logger -def cli(): +def cli(args=None): """ Contains the code pertaining to the CLI. All back-end logic is located elsewhere. @@ -35,8 +35,14 @@ def cli(): help="destination directory of sorted bundles. overrides location specified in config file. " "if no destination is given, a dry run will occur - displaying what would have happened." ) - args = parser.parse_args() + if args is not None: + args = parser.parse_args(args) + else: + args = parser.parse_args() + + +# def verify_args(args): if args.source: source = args.source else: @@ -58,10 +64,11 @@ def cli(): logger.debug('No destination given via CLI or config. Defaulting to None') if not source_exists(source): - sys_exit(1) + return False organiser = HBOrganiser(source, destination, args.platform) organiser.loop_through_bundles() + return True if __name__ == '__main__': - cli() + cli(argv[1:]) diff --git a/build/lib/hb_organiser/organiser.py b/build/lib/hb_organiser/organiser.py index d7da577..9bec843 100644 --- a/build/lib/hb_organiser/organiser.py +++ b/build/lib/hb_organiser/organiser.py @@ -44,8 +44,7 @@ def ensure_directory_exists(self, target, task=None): print(f"{task} MKDIR: {destination}") Path(destination).mkdir(parents=True, exist_ok=True) - @staticmethod - def copy_file(source, destination, task=None): + def copy_file(self, source, destination, task=None): """ Copies the source to the destination. Before each operation, the source file is logged. @@ -61,31 +60,39 @@ def copy_file(source, destination, task=None): :type task: str :return: """ - if not isfile(destination): - # TODO: Fix this duplicate code section. - # Was nastily thrown in to fix a bug - try: - if source in open('queue.txt'): - print(f"{task} COPY: {source} {destination}") - log = open('queue.txt', 'w') - log.write(source) - log.close() - copyfile(source, destination) - log = open('queue.txt', 'w') - log.write('') - log.close() - except FileNotFoundError: - pass - print(f"{task} COPY: {source} {destination}") - log = open('queue.txt', 'w') - log.write(source) - log.close() - copyfile(source, destination) - log = open('queue.txt', 'w') - log.write('') - log.close() - else: - print(f"{task} SKIP: {destination}") + complete = 'DONE' + try: + if source not in open('queue.txt') and not isfile(destination): + print(f"{task} COPYING: {source} {destination}\r", end="", flush=True) + complete = 'COPIED' + log = open('queue.txt', 'w') + log.write(source) + log.close() + elif source in open('queue.txt'): + print(f"{task} RE-COPING: {source} {destination}\r", end="", flush=True) + complete = 'RE-COPIED' + else: + print(f"{task} SKIPPED: {destination}") + return True + except FileNotFoundError: + print(f"{task} INFO: Creating queue.txt") + open('queue.txt', 'x') + self.copy_file(source, destination, task) + + copyfile(source, destination) + print(f"{task} {complete}: {source} {destination}\r", flush=True) + + entries = [] + log = open('queue.txt') + for entry in log: + if source not in entry: + entries.append(entry) + log.close() + + log = open('queue.txt', 'w') + log.writelines(entries) + log.close() + return True def loop_through_bundles(self): """ @@ -128,5 +135,5 @@ def loop_through_bundles(self): task += 1 return True except KeyboardInterrupt: - print('INFO: Manual intervention. exiting.') + print('\nINFO: Manual intervention. exiting.') return False diff --git a/build/lib/tests/test_cli.py b/build/lib/tests/test_cli.py new file mode 100644 index 0000000..da58f4e --- /dev/null +++ b/build/lib/tests/test_cli.py @@ -0,0 +1,48 @@ +from os.path import abspath +from unittest import TestCase + +from hb_organiser.cli import * + + +class HBOrganiserCliTesCase(TestCase): + def setUp(self) -> None: + pass + + def tearDown(self) -> None: + pass + + def test_verify_args_returns_true_on_good_relative_source_path_with_trailing_forward_slash(self): + result = cli(['-s', 'tests/test_libraries/library/', 'all']) + HBOrganiserCliTesCase.assertTrue(self, result) + + def test_verify_args_returns_true_on_good_absolute_source_path_with_trailing_forward_slash(self): + result = cli(['-s', abspath('tests/test_libraries/library/'), 'all']) + HBOrganiserCliTesCase.assertTrue(self, result) + + def test_verify_args_returns_true_on_good_relative_source_path_without_trailing_forward_slash(self): + result = cli(['-s', 'tests/test_libraries/library', 'all']) + HBOrganiserCliTesCase.assertTrue(self, result) + + def test_verify_args_returns_true_on_good_absolute_source_path_without_trailing_forward_slash(self): + result = cli(['-s', abspath('tests/test_libraries/library'), 'all']) + HBOrganiserCliTesCase.assertTrue(self, result) + + def test_verify_args_returns_false_on_source_bad_path(self): + result = cli(['-s', 'tests/test_libraries/fake_library', 'all']) + HBOrganiserCliTesCase.assertFalse(self, result) + + def test_verify_args_returns_true_on_good_relative_destination_path_with_trailing_forward_slash(self): + result = cli(['-s', 'tests/test_libraries/library/', '-d', 'tests/test_destination/', 'all']) + HBOrganiserCliTesCase.assertTrue(self, result) + + def test_verify_args_returns_true_on_good_absolute_destination_path_with_trailing_forward_slash(self): + result = cli(['-s', 'tests/test_libraries/library/', '-d', abspath('tests/test_destination/'), 'all']) + HBOrganiserCliTesCase.assertTrue(self, result) + + def test_verify_args_returns_true_on_good_relative_destination_path_without_trailing_forward_slash(self): + result = cli(['-s', 'tests/test_libraries/library/', '-d', 'tests/test_destination', 'all']) + HBOrganiserCliTesCase.assertTrue(self, result) + + def test_verify_args_returns_true_on_good_absolute_destination_path_without_trailing_forward_slash(self): + result = cli(['-s', 'tests/test_libraries/library/', '-d', abspath('tests/test_destination'), 'all']) + HBOrganiserCliTesCase.assertTrue(self, result) diff --git a/dist/hb_organiser-1.0.8-py3-none-any.whl b/dist/hb_organiser-1.0.8-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..3c897573dcd1294e88f0a5a48c94e3c57e60fb3d GIT binary patch literal 11021 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.8 +Requires-Python: >=3.6 Description-Content-Type: text/markdown diff --git a/hb_organiser.egg-info/SOURCES.txt b/hb_organiser.egg-info/SOURCES.txt index d2323d1..370152d 100644 --- a/hb_organiser.egg-info/SOURCES.txt +++ b/hb_organiser.egg-info/SOURCES.txt @@ -13,4 +13,5 @@ hb_organiser.egg-info/dependency_links.txt hb_organiser.egg-info/entry_points.txt hb_organiser.egg-info/top_level.txt tests/__init__.py -tests/test_checks.py \ No newline at end of file +tests/test_checks.py +tests/test_cli.py \ No newline at end of file diff --git a/setup.py b/setup.py index 5faf2ad..df4ee37 100644 --- a/setup.py +++ b/setup.py @@ -1,20 +1,23 @@ -import setuptools +from setuptools import find_packages, setup with open("README.md", "r", encoding="utf-8") as fh: long_description = fh.read() -setuptools.setup( +setup( name="hb_organiser", - version="1.0.7", + version="1.0.8", author="James Whale", author_email="james@james-whale.com", description="Organises Humble Bundle bundles based on their platform.", long_description=long_description, long_description_content_type="text/markdown", url="https://github.com/WhaleJ84/hb_organiser", - packages=setuptools.find_packages(), + packages=find_packages(), classifiers=[ + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", "License :: OSI Approved :: MIT License", "Operating System :: POSIX :: Linux", "Natural Language :: English", @@ -24,5 +27,5 @@ 'hb_organiser=hb_organiser.cli:cli', ], }, - python_requires='>=3.8', + python_requires='>=3.6', )