21
README.md
21
README.md
@@ -163,18 +163,33 @@ when possible.
|
||||
It lives in `$XDG_CONFIG_HOME/morituri/morituri.conf`
|
||||
|
||||
The configuration file follows python's ConfigParser syntax.
|
||||
There is a "main" section and zero or more sections starting with "drive:"
|
||||
|
||||
- main section:
|
||||
The possible sections are:
|
||||
|
||||
- main section: [main]
|
||||
- `path_filter_fat`: whether to filter path components for FAT file systems
|
||||
- `path_filter_special`: whether to filter path components for special
|
||||
characters
|
||||
|
||||
- drive section:
|
||||
- drive section: [drive:IDENTIFIER], one for each configured drive
|
||||
All these values are probed by morituri and should not be edited by hand.
|
||||
- `defeats_cache`: whether this drive can defeat the audio cache
|
||||
- `read_offset`: the read offset of the drive
|
||||
|
||||
- rip command section: [rip.COMMAND.SUBCOMMAND]
|
||||
Can be used to change the command options default values.
|
||||
|
||||
Example section to configure "rip cd rip" defaults:
|
||||
|
||||
[rip.cd.rip]
|
||||
unknown = True
|
||||
output_directory = ~/My Music
|
||||
track_template = new/%%A/%%y - %%d/%%t - %%n
|
||||
disc_template = %(track_template)s
|
||||
profile = flac
|
||||
|
||||
Note: to get a literal '%' character it must be doubled.
|
||||
|
||||
CONTRIBUTING
|
||||
------------
|
||||
- Please send pull requests through github.
|
||||
|
||||
@@ -34,6 +34,33 @@ class LogCommand(command.Command, log.Loggable):
|
||||
command.Command.__init__(self, parentCommand, **kwargs)
|
||||
self.logCategory = self.name
|
||||
|
||||
def parse(self, argv):
|
||||
cmd = self.getRootCommand()
|
||||
if hasattr(cmd, 'config'):
|
||||
config = cmd.config
|
||||
# find section name
|
||||
cmd = self
|
||||
section = []
|
||||
while cmd is not None:
|
||||
section.insert(0, cmd.name)
|
||||
cmd = cmd.parentCommand
|
||||
section = '.'.join(section)
|
||||
# get defaults from config
|
||||
defaults = {}
|
||||
for opt in self.parser.option_list:
|
||||
if opt.dest is None:
|
||||
continue
|
||||
if 'string' == opt.type:
|
||||
val = config.get(section, opt.dest)
|
||||
elif opt.action in ('store_false', 'store_true'):
|
||||
val = config.getboolean(section, opt.dest)
|
||||
else:
|
||||
val = None
|
||||
if val is not None:
|
||||
defaults[opt.dest] = val
|
||||
self.parser.set_defaults(**defaults)
|
||||
command.Command.parse(self, argv)
|
||||
|
||||
# command.Command has a fake debug method, so choose the right one
|
||||
|
||||
def debug(self, format, *args):
|
||||
|
||||
@@ -224,11 +224,13 @@ Log files will log the path to tracks relative to this directory.
|
||||
help="output directory; will be included in file paths in result "
|
||||
"files "
|
||||
"(defaults to absolute path to current directory; set to "
|
||||
"empty if you want paths to be relative instead) ")
|
||||
"empty if you want paths to be relative instead; "
|
||||
"configured value: %default) ")
|
||||
self.parser.add_option('-W', '--working-directory',
|
||||
action="store", dest="working_directory",
|
||||
help="working directory; morituri will change to this directory "
|
||||
"and files will be created relative to it when not absolute ")
|
||||
"and files will be created relative to it when not absolute "
|
||||
"(configured value: %default) ")
|
||||
|
||||
rcommon.addTemplate(self)
|
||||
|
||||
@@ -239,8 +241,8 @@ Log files will log the path to tracks relative to this directory.
|
||||
|
||||
self.parser.add_option('', '--profile',
|
||||
action="store", dest="profile",
|
||||
help="profile for encoding (default '%s', choices '%s')" % (
|
||||
default, "', '".join(encode.PROFILES.keys())),
|
||||
help="profile for encoding (default '%%default', choices '%s')" % (
|
||||
"', '".join(encode.PROFILES.keys())),
|
||||
default=default)
|
||||
self.parser.add_option('-U', '--unknown',
|
||||
action="store_true", dest="unknown",
|
||||
@@ -270,6 +272,11 @@ Install pycdio and run 'rip offset find' to detect your drive's offset.
|
||||
options.offset)
|
||||
if self.options.output_directory is None:
|
||||
self.options.output_directory = os.getcwd()
|
||||
else:
|
||||
self.options.output_directory = os.path.expanduser(self.options.output_directory)
|
||||
|
||||
if self.options.working_directory is not None:
|
||||
self.options.working_directory = os.path.expanduser(self.options.working_directory)
|
||||
|
||||
if self.options.logger:
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user