This is a large PR. Sorry for the size but I wanted to submit something coherent. I'll try to add line-comments here on GitHub once I created the PR. I hope it's possible.
Most of the code is adding unit-tests. I tried to refrain from making changes to the codes, but there are some exceptions:
A few places contained bugs and I had to fix them in order to get the tests to pass.
Some minor refactoring was necessary in order to make testing possible (or easier).
The shell script is gone and has been replaced with "entry-points". This has several advantages:
The application can be bundled and install using the standard python method (pip, setup.py, ...).
Dependencies can be resolved automatically. It's no longer need to bundle third party libraries.
CLI Argument parsing has been split up for the different commands. This separates the commands into separate modules, and the main executable almost builds itself.
I've done my best to keep the commit messages helpful and make atomic commits so it should be a bit easier to follow.
This is a large PR. Sorry for the size but I wanted to submit something coherent. I'll try to add line-comments here on GitHub once I created the PR. I hope it's possible.
Most of the code is adding unit-tests. I tried to refrain from making changes to the codes, but there are some exceptions:
I've done my best to keep the commit messages helpful and make atomic commits so it should be a bit easier to follow.
If you have any questions, feel free to ask.