Bail if "--excludes" argument is provided, as it's now deprecated in favor of configuration file.
This commit is contained in:
parent
0691cda46f
commit
8ef6c6fcbe
4 changed files with 31 additions and 33 deletions
|
@ -28,8 +28,7 @@ def parse_arguments(*arguments):
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--excludes',
|
'--excludes',
|
||||||
dest='excludes_filename',
|
dest='excludes_filename',
|
||||||
default=DEFAULT_EXCLUDES_FILENAME if os.path.exists(DEFAULT_EXCLUDES_FILENAME) else None,
|
help='Excludes filename, deprecated in favor of excludes_patterns within configuration',
|
||||||
help='Excludes filename',
|
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-v', '--verbosity',
|
'-v', '--verbosity',
|
||||||
|
@ -46,7 +45,7 @@ def main(): # pragma: no cover
|
||||||
convert.guard_configuration_upgraded(LEGACY_CONFIG_FILENAME, args.config_filename)
|
convert.guard_configuration_upgraded(LEGACY_CONFIG_FILENAME, args.config_filename)
|
||||||
config = validate.parse_configuration(args.config_filename, validate.schema_filename())
|
config = validate.parse_configuration(args.config_filename, validate.schema_filename())
|
||||||
repository = config.location['repository']
|
repository = config.location['repository']
|
||||||
remote_path = config.location.get('remote_path')
|
remote_path = config.location['remote_path']
|
||||||
|
|
||||||
borg.initialize(config.storage)
|
borg.initialize(config.storage)
|
||||||
borg.create_archive(
|
borg.create_archive(
|
||||||
|
|
|
@ -77,3 +77,21 @@ def guard_configuration_upgraded(source_config_filename, destination_config_file
|
||||||
'''
|
'''
|
||||||
if os.path.exists(source_config_filename) and not os.path.exists(destination_config_filename):
|
if os.path.exists(source_config_filename) and not os.path.exists(destination_config_filename):
|
||||||
raise LegacyConfigurationNotUpgraded()
|
raise LegacyConfigurationNotUpgraded()
|
||||||
|
|
||||||
|
|
||||||
|
class LegacyExcludesFilenamePresent(FileNotFoundError):
|
||||||
|
def __init__(self):
|
||||||
|
super(LegacyExcludesFilenamePresent, self).__init__(
|
||||||
|
'''borgmatic changed its configuration file format in version 1.1.0 from INI-style
|
||||||
|
to YAML. This better supports validation, and has a more natural way to express
|
||||||
|
lists of values. The new configuration file incorporates excludes, so you no
|
||||||
|
longer need to provide an excludes filename on the command-line with an
|
||||||
|
"--excludes" argument.
|
||||||
|
|
||||||
|
Please remove the "--excludes" argument and run borgmatic again.'''
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def guard_excludes_filename_omitted(excludes_filename):
|
||||||
|
if excludes_filename != None:
|
||||||
|
raise LegacyExcludesFilenamePresent()
|
||||||
|
|
|
@ -7,18 +7,14 @@ from borgmatic.commands import borgmatic as module
|
||||||
|
|
||||||
|
|
||||||
def test_parse_arguments_with_no_arguments_uses_defaults():
|
def test_parse_arguments_with_no_arguments_uses_defaults():
|
||||||
flexmock(os.path).should_receive('exists').and_return(True)
|
|
||||||
|
|
||||||
parser = module.parse_arguments()
|
parser = module.parse_arguments()
|
||||||
|
|
||||||
assert parser.config_filename == module.DEFAULT_CONFIG_FILENAME
|
assert parser.config_filename == module.DEFAULT_CONFIG_FILENAME
|
||||||
assert parser.excludes_filename == module.DEFAULT_EXCLUDES_FILENAME
|
assert parser.excludes_filename == None
|
||||||
assert parser.verbosity is None
|
assert parser.verbosity is None
|
||||||
|
|
||||||
|
|
||||||
def test_parse_arguments_with_filename_arguments_overrides_defaults():
|
def test_parse_arguments_with_filename_arguments_overrides_defaults():
|
||||||
flexmock(os.path).should_receive('exists').and_return(True)
|
|
||||||
|
|
||||||
parser = module.parse_arguments('--config', 'myconfig', '--excludes', 'myexcludes')
|
parser = module.parse_arguments('--config', 'myconfig', '--excludes', 'myexcludes')
|
||||||
|
|
||||||
assert parser.config_filename == 'myconfig'
|
assert parser.config_filename == 'myconfig'
|
||||||
|
@ -26,38 +22,14 @@ def test_parse_arguments_with_filename_arguments_overrides_defaults():
|
||||||
assert parser.verbosity is None
|
assert parser.verbosity is None
|
||||||
|
|
||||||
|
|
||||||
def test_parse_arguments_with_missing_default_excludes_file_sets_filename_to_none():
|
|
||||||
flexmock(os.path).should_receive('exists').and_return(False)
|
|
||||||
|
|
||||||
parser = module.parse_arguments()
|
|
||||||
|
|
||||||
assert parser.config_filename == module.DEFAULT_CONFIG_FILENAME
|
|
||||||
assert parser.excludes_filename is None
|
|
||||||
assert parser.verbosity is None
|
|
||||||
|
|
||||||
|
|
||||||
def test_parse_arguments_with_missing_overridden_excludes_file_retains_filename():
|
|
||||||
flexmock(os.path).should_receive('exists').and_return(False)
|
|
||||||
|
|
||||||
parser = module.parse_arguments('--excludes', 'myexcludes')
|
|
||||||
|
|
||||||
assert parser.config_filename == module.DEFAULT_CONFIG_FILENAME
|
|
||||||
assert parser.excludes_filename == 'myexcludes'
|
|
||||||
assert parser.verbosity is None
|
|
||||||
|
|
||||||
|
|
||||||
def test_parse_arguments_with_verbosity_flag_overrides_default():
|
def test_parse_arguments_with_verbosity_flag_overrides_default():
|
||||||
flexmock(os.path).should_receive('exists').and_return(True)
|
|
||||||
|
|
||||||
parser = module.parse_arguments('--verbosity', '1')
|
parser = module.parse_arguments('--verbosity', '1')
|
||||||
|
|
||||||
assert parser.config_filename == module.DEFAULT_CONFIG_FILENAME
|
assert parser.config_filename == module.DEFAULT_CONFIG_FILENAME
|
||||||
assert parser.excludes_filename == module.DEFAULT_EXCLUDES_FILENAME
|
assert parser.excludes_filename == None
|
||||||
assert parser.verbosity == 1
|
assert parser.verbosity == 1
|
||||||
|
|
||||||
|
|
||||||
def test_parse_arguments_with_invalid_arguments_exits():
|
def test_parse_arguments_with_invalid_arguments_exits():
|
||||||
flexmock(os.path).should_receive('exists').and_return(True)
|
|
||||||
|
|
||||||
with pytest.raises(SystemExit):
|
with pytest.raises(SystemExit):
|
||||||
module.parse_arguments('--posix-me-harder')
|
module.parse_arguments('--posix-me-harder')
|
||||||
|
|
|
@ -92,3 +92,12 @@ def test_guard_configuration_upgraded_does_not_raise_when_neither_config_present
|
||||||
flexmock(os.path).should_receive('exists').with_args('config.yaml').and_return(False)
|
flexmock(os.path).should_receive('exists').with_args('config.yaml').and_return(False)
|
||||||
|
|
||||||
module.guard_configuration_upgraded('config', 'config.yaml')
|
module.guard_configuration_upgraded('config', 'config.yaml')
|
||||||
|
|
||||||
|
|
||||||
|
def test_guard_excludes_filename_omitted_raises_when_filename_provided():
|
||||||
|
with pytest.raises(module.LegacyExcludesFilenamePresent):
|
||||||
|
module.guard_excludes_filename_omitted(excludes_filename='/etc/borgmatic/excludes')
|
||||||
|
|
||||||
|
|
||||||
|
def test_guard_excludes_filename_omitted_does_not_raise_when_filename_not_provided():
|
||||||
|
module.guard_excludes_filename_omitted(excludes_filename=None)
|
||||||
|
|
Loading…
Reference in a new issue