Commit Graph

850 Commits

Author SHA1 Message Date
Samantha Baldwin
976e1bdca2 remove configure.configure, use __version__, remove getRevision() (#94)
* remove configure.configure, use __version__, remove getRevision()

* remove empty configure/ directory

* remove morituri.configure imports
2016-12-31 16:41:18 +01:00
Matt Robinson
cf55d5e51e Update suggested commands given by drive list
If the drive offset or cache status are unknown, 'drive list' suggests
running 'rip offset find' or 'rip drive analyze'.  Update these to
refer to whipper instead.
2016-12-31 14:21:03 +00:00
Samantha Baldwin
d1ed80d62a argparse & logging (#92)
* introduce logcommand.Lager, Whipper(); use argparse for whipper image commands, stub logging

* update Lager docstring to mention config.Config()

* make incorrect subcommand and --version work on toplevel command

* migrate accurip show, expand Lager, do not attempt to return from Lager.__init__.

* migrate offset find, add Lager.error

* correct offset find drive symlink handling

* migrate drive

* change Lager.__init__(prog) to arg from kwarg

* but actually

* remove Whipper.usage

* add and use Lager.device_option() context manager

* help I married an axe murderer

* use unified options namespace for entire command tree

* migrate whipper cd without comprehensive config loading

* switch to logging module

- use logging instead of flog for non-extern modules
- use WHIPPER_DEBUG and WHIPPER_LOGFILE env variables

* convert self.log calls to logger.debug

* convert self.error calls to logger.error

* remove log.Loggable, use logger not logging

* Logging conversion continues

- Convert log.* calls to logger.*
- Remove morituri.common.log imports

* remove morituri.common.log from tests

* remove extern/flog, bare minimum Debug conversion

* update README for logging changes

* update soxi to use logging

* refactor Lager for more declarative subcommands

* Refactor Lager.device_option:

- inline into __init__
- throw IOError instead of Exception for missing drives
- remove CommandError checking in rip/main

* rename rip to whipper in rip.main

* convert rip.debug commands

* Rename logcommand.Lager to command.BaseCommand

- remove command.CommandError occurrences
- remove python-command external module

* remove submodules from README, update rclog formatter

* update minor ambiguity in readme for command invocation

* update version number to match setup.py

* remove gitmodules

* update version number in tests as well (boo)

* convert logger.error to logger.critical

* Change morituri.rip to morituri.command

- mv common.command to command.basecommand
- move TEMPLATES used only by rip.cd out of rip.common
- update entry point for command to command.main

* update basecommand documentation

* go pyflaking: import fixing

* replace self.stdout with sys.stdout

* remove BaseCommand.config, alphabetise imports

* convert self.stdXXX leftovers

* convert last getRootCommand to config.Config

* convert last getExceptionMessage's to str

* change musicbrainz useragent to whipper
2016-12-20 23:11:30 +01:00
Samantha Baldwin
ee9a58fcbb soxi: remove self._path unused variable, mark dep as 'soxi' (#89) 2016-12-15 23:05:14 +01:00
Samantha Baldwin
d455b77e8a Merge pull request #80 from chrysn-pull-requests/error-reporting-enhancements-noassert
Error reporting enhancements (conditional-raise-instead-of-assert version)
2016-12-15 15:37:31 -05:00
Samantha Baldwin
a443f3006b Merge pull request #67 from chrysn-pull-requests/sox-audiolengthtask
Use soxi instead of gstreamer to determine a track's length
2016-12-15 15:00:07 -05:00
chrysn
f9af58ed3e main: show TaskException instead of raising them
a TaskException already wraps another exception; raising it gives a
hard-to-read multi-line message instead of showing the clean wrapped
original backtrace; for comparison, an asserton error in image.py line
253:

exception AssertionError at /home/chrysn/git/whipper/morituri/image/image.py:253: stop(): Track length was not found; look for earlier errors in debug log (set RIP_DEBUG=4)
Traceback (most recent call last):
  File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 497, in _startWrap
    task.start(self)
  File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 395, in start
    BaseMultiTask.start(self, runner)
  File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 330, in start
    self.next()
  File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 401, in next
    BaseMultiTask.next(self)
  File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 351, in next
    self.stop()
  File "/home/chrysn/git/whipper/morituri/image/image.py", line 253, in stop
    assert taskk.length is not None, "Track length was not found; look for earlier errors in debug log (set RIP_DEBUG=4)"
AssertionError: Track length was not found; look for earlier errors in debug log (set RIP_DEBUG=4)

vs.

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/home/chrysn/git/whipper/morituri/rip/main.py", line 27, in main
    ret = c.parse(sys.argv[1:])
  File "/home/chrysn/git/whipper/morituri/rip/main.py", line 94, in parse
    logcommand.LogCommand.parse(self, argv)
  File "/home/chrysn/git/whipper/morituri/common/logcommand.py", line 62, in parse
    command.Command.parse(self, argv)
  File "/home/chrysn/git/whipper/morituri/extern/command/command.py", line 401, in parse
    return self.subCommands[command].parse(args[1:])
  File "/home/chrysn/git/whipper/morituri/common/logcommand.py", line 62, in parse
    command.Command.parse(self, argv)
  File "/home/chrysn/git/whipper/morituri/extern/command/command.py", line 401, in parse
    return self.subCommands[command].parse(args[1:])
  File "/home/chrysn/git/whipper/morituri/common/logcommand.py", line 62, in parse
    command.Command.parse(self, argv)
  File "/home/chrysn/git/whipper/morituri/extern/command/command.py", line 363, in parse
    ret = self.do(args)
  File "/home/chrysn/git/whipper/morituri/rip/image.py", line 184, in do
    cueImage.setup(runner)
  File "/home/chrysn/git/whipper/morituri/image/image.py", line 75, in setup
    runner.run(verify)
  File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 490, in run
    raise TaskException(task.exception, message=msg)
morituri.extern.task.task.TaskException: (AssertionError('Track length was not found; look for earlier errors in debug log (set RIP_DEBUG=4)',), 'exception AssertionError at /home/chrysn/git/whipper/morituri/image/image.py:253: stop(): Track length was not found; look for earlier errors in debug log (set RIP_DEBUG=4)\nTraceback (most recent call last):\n  File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 497, in _startWrap\n    task.start(self)\n  File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 395, in start\n    BaseMultiTask.start(self, runner)\n  File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 330, in start\n    self.next()\n  File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 401, in next\n    BaseMultiTask.next(self)\n  File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 351, in next\n    self.stop()\n  File "/home/chrysn/git/whipper/morituri/image/image.py", line 253, in stop\n    assert taskk.length is not None, "Track length was not found; look for earlier errors in debug log (set RIP_DEBUG=4)"\nAssertionError: Track length was not found; look for earlier errors in debug log (set RIP_DEBUG=4)\n')
2016-11-29 13:30:17 +01:00
chrysn
6581812d19 image: add check to give more meaningful error message 2016-11-29 13:30:11 +01:00
chrysn
bacda81408 AudioLengthTest: adapt to new soxi backend
* Use extensions soxi understands (ie. ".flac")
* Actually test for result correctness on files with odd characters in
  their names by copying the test track
* Relax the requirements on the "track absent" task to only raise some
  TaskError (the previously tested behavior was backend dependent, and
  the application did not actually depend on that behavior)
2016-11-29 12:56:18 +01:00
chrysn
89d6c8fef8 AudioLengthPath: move unit test in parallel to code 2016-11-29 12:56:18 +01:00
chrysn
ba10b573a2 Use soxi instead of gstreamer to determine a track's length
Contributes-To: https://github.com/JoeLametta/whipper/issues/29
2016-11-29 12:56:18 +01:00
Samantha Baldwin
39aa68909e do not recalculate musicbrainz disc id for every getMusicBrainzDiscId() call (#69) 2016-11-08 13:16:52 +01:00
Samantha Baldwin
bccba71b42 refactor morituri.common.directory to shed Directory() and bulk 2016-11-02 17:52:14 -04:00
Samantha Baldwin
1e0176553b tersify pkg_resources/directory calls since we don't care about errors 2016-11-02 16:44:48 -04:00
Samantha Baldwin
b73048bb70 undelete overzealously removed plugin initialisation 2016-11-02 16:36:31 -04:00
JoeLametta
c279e8b214 Raise Exception when track rip runs out of attempts
Should fix #57
2016-10-30 10:24:31 +01:00
JoeLametta
9f6095a23b Fix error in logger.py
Solves #58
2016-10-30 09:07:32 +01:00
JoeLametta
f6924edf48 Logger update
* improved code clarity
* added a bit of documentation
* removed peak level's erroneous percent sign
* removed morituri compatibility code paths
2016-10-27 20:53:06 +02:00
Samantha Baldwin
d7f8557426 replace cdrdao.py with much simpler version (#52)
* replace cdrdao.py with much simpler version
* more pythonic syntax for cdrdao.read_toc(fast_toc=) switching
* fix silly typo
2016-10-22 10:32:18 +02:00
Samantha Baldwin
8721ba1caf standardise program/sox.py formatting, add test case, docstring (#53)
* standardise program/sox.py formatting, add test case
* add program/sox.peak_level() docstring
* update .travis.yml to include sox as a test dependency
* move sox from test dependency to normal dependency
* update README to mention sox, remove small autoconf mention
* use .splitlines() instead of .split('n')
2016-10-21 23:54:13 +02:00
Samantha Baldwin
566414c939 nuke-autohell (#54)
* remove m4 directory
* remove leftover Makefile.am after confirming its uselessness
* remove another useless autoconf Makefile.am
2016-10-21 11:33:05 +02:00
JoeLametta
4636c55233 Update CI tests
* slightly updated the README file
* updated morituri version number in cue tests
* commented out a portion of testAccurateRipChecksum (it should be updated/fixed later on)
2016-10-20 09:57:05 +02:00
Samantha Baldwin
063876b575 use setuptools, remove autohell, use raw make for src/ 2016-10-19 17:54:01 -04:00
Samantha Baldwin
b2ca3167eb Sox (#48)
* update README to force python2
* add support for PRE_EMPHASIS detection; mark pre-emphasis as FLAGS PRE in .cue
* correct typo, s/ivar/type/ for pre_emphasis element in track table
* add SoxPeakTask, program/sox module, sox.peak_level()
* use sox peak detection in lieu of gstreamer
2016-10-17 15:42:17 +02:00
Merlijn Wajer
bce359f9d5 Use Fast version of AccurateRipChecksumTask
There are still some changes required to make whipper handle ARv2 checksums,
currently doesn't call the Task for a V2 checksum. V1 should keep working as-is.
2016-10-15 19:15:27 +02:00
Merlijn Wajer
9ae279c811 Add and use FastAccurateRipChecksumTask 2016-10-15 19:15:27 +02:00
Merlijn Wajer
d1f0165cf3 Add accuraterip-checksum program 2016-10-15 19:15:27 +02:00
JoeLametta
2983fc3d03 Removed examples and gtk related files 2016-10-15 17:28:21 +02:00
JoeLametta
8b5ce57fcd Definitive fix to getConfig
Previous commit was wrong.
2016-10-14 23:46:30 +02:00
JoeLametta
985cf2d288 Fix previous commit
Configuration file path was declared but never explicitly created (even when not available).
Should be fixed now.
2016-10-14 23:37:17 +02:00
JoeLametta
746dc6599d Issue24 (#42)
* Address issue #24
* Remove getReadCaches() & replace it with getCache()

Now whipper always follows XDG specifications. All changes were documented into the README file.

The changes introduced here aren't backward compatible so, after updating whipper, you may need to configure it again (old config file are retained, though).
2016-10-09 17:26:06 +02:00
JoeLametta
183cd1b397 Remove python-deps leftovers 2016-09-19 11:40:15 +02:00
JoeLametta
67ea220604 Make pycdio dependency not overridable 2016-09-05 17:14:11 +02:00
JoeLametta
3f15dcbd4d Fix merge conflict 2016-08-28 18:33:21 +02:00
JoeLametta
38810796ba Remove thomasvs' python-deps (#31)
* Crude removal of thomasvs' python-deps
* Fix previous commit
2016-08-27 17:33:18 +02:00
JoeLametta
122e22d595 Add support for and include used logger info into whipper's logfile (#30) 2016-08-27 17:27:41 +02:00
JoeLametta
8c83c4a4cb Merge logger codebase with morituri-yamllogger's one 2016-08-25 19:28:47 +02:00
JoeLametta
84c2d2439c Commented out broken tests 2016-08-17 00:30:21 +02:00
JoeLametta
52181a92a4 Logger PEP8 fix
E122 continuation line missing indentation or outdented
2016-07-27 14:46:19 +02:00
JoeLametta
ae3d4da2e5 Really fix 9099da2
Too many parentheses: I got confused
This one should finally solve:

```python
TypeError: unsupported operand type(s) for %: 'NoneType' and 'tuple'
```
2016-07-27 12:09:16 +02:00
JoeLametta
742879ac94 Allow overriding pycdio dependency
Keep in mind overriding isn’t the suggested behavior.
2016-07-25 09:56:00 +02:00
JoeLametta
b5c22da76d Address issue #23
Moved to its own branch.

It should work.
In the future this commit could be improved providing a way to override
pycdio hard dependency.
2016-07-24 22:53:26 +02:00
JoeLametta
578b657b0c Revert "Address issue #23"
This reverts commit 71422bd96b.
2016-07-24 22:47:04 +02:00
Samantha Baldwin
b97e0a72e3 PRE_EMPHASIS (#27)
* update README to force python2

* add support for PRE_EMPHASIS detection; mark pre-emphasis as FLAGS PRE in .cue

* correct typo, s/ivar/type/ for pre_emphasis element in track table
2016-07-24 22:43:29 +02:00
JoeLametta
71422bd96b Address issue #23
Should work.
In the future this commit could be improved providing a way to override
pycdio hard dependency (command line argument).
2016-07-23 11:47:10 +02:00
JoeLametta
9099da2ace Fix previous commit
Hopefully this one fixes a privately reported regression introduced
with the previous commit.

```python
TypeError: unsupported operand type(s) for %: 'NoneType' and 'tuple'
```
2016-07-22 16:41:44 +02:00
JoeLametta
c801e88c5a Logger: log layout restructuring 2016-07-06 17:33:52 +02:00
JoeLametta
f1e080b7af Logger cosmetic fixes (again)
Missing line break, consistent AccurateRip summary result output.
2016-07-04 10:13:41 +02:00
JoeLametta
1a9f78e160 Logger cosmetic fixes 2016-07-01 11:29:00 +02:00
JoeLametta
0a142036ef Improve musicbrainzngs' results handling
Changes:

* whipper is now capable of handling musicbrainzngs’ bad server
responses (it throws an exception).
* whipper is now aware of musicbrainzngs’ possible “cdstub” response
and should handle it fine (ignoring the result because the informations
received are incomplete e/o unverified).

This commit should fix JoeLametta/whipper#22
2016-06-14 22:42:09 +02:00