From 7d18f5907912fe43bb9b34bd0fba0dc7ef119e10 Mon Sep 17 00:00:00 2001 From: Yoann Laissus Date: Sun, 9 Jul 2023 11:45:51 +0200 Subject: [PATCH] Add a config entry for BORG_CHECK_I_KNOW_WHAT_I_AM_DOING env var --- borgmatic/borg/environment.py | 15 +++++++++++++-- borgmatic/config/schema.yaml | 6 ++++++ tests/unit/borg/test_environment.py | 7 +++++++ 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/borgmatic/borg/environment.py b/borgmatic/borg/environment.py index 1b14369a..d32d07d7 100644 --- a/borgmatic/borg/environment.py +++ b/borgmatic/borg/environment.py @@ -11,11 +11,15 @@ OPTION_TO_ENVIRONMENT_VARIABLE = { 'temporary_directory': 'TMPDIR', } -DEFAULT_BOOL_OPTION_TO_ENVIRONMENT_VARIABLE = { +DEFAULT_BOOL_OPTION_TO_DOWNCASE_ENVIRONMENT_VARIABLE = { 'relocated_repo_access_is_ok': 'BORG_RELOCATED_REPO_ACCESS_IS_OK', 'unknown_unencrypted_repo_access_is_ok': 'BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK', } +DEFAULT_BOOL_OPTION_TO_UPPERCASE_ENVIRONMENT_VARIABLE = { + 'check_i_know_what_i_am_doing': 'BORG_CHECK_I_KNOW_WHAT_I_AM_DOING', +} + def make_environment(storage_config): ''' @@ -33,8 +37,15 @@ def make_environment(storage_config): for ( option_name, environment_variable_name, - ) in DEFAULT_BOOL_OPTION_TO_ENVIRONMENT_VARIABLE.items(): + ) in DEFAULT_BOOL_OPTION_TO_DOWNCASE_ENVIRONMENT_VARIABLE.items(): value = storage_config.get(option_name, False) environment[environment_variable_name] = 'yes' if value else 'no' + for ( + option_name, + environment_variable_name, + ) in DEFAULT_BOOL_OPTION_TO_UPPERCASE_ENVIRONMENT_VARIABLE.items(): + value = storage_config.get(option_name, False) + environment[environment_variable_name] = 'YES' if value else 'NO' + return environment diff --git a/borgmatic/config/schema.yaml b/borgmatic/config/schema.yaml index 3f1b3cb4..84b512ca 100644 --- a/borgmatic/config/schema.yaml +++ b/borgmatic/config/schema.yaml @@ -405,6 +405,12 @@ properties: Bypass Borg error about a previously unknown unencrypted repository. Defaults to false. example: true + check_i_know_what_i_am_doing: + type: boolean + description: | + Bypass Borg confirmation about check with repair option. + Defaults to false. + example: true extra_borg_options: type: object additionalProperties: false diff --git a/tests/unit/borg/test_environment.py b/tests/unit/borg/test_environment.py index 4cef39b9..203a6b05 100644 --- a/tests/unit/borg/test_environment.py +++ b/tests/unit/borg/test_environment.py @@ -25,6 +25,7 @@ def test_make_environment_without_configuration_should_only_set_default_environm assert environment == { 'BORG_RELOCATED_REPO_ACCESS_IS_OK': 'no', 'BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK': 'no', + 'BORG_CHECK_I_KNOW_WHAT_I_AM_DOING': 'NO', } @@ -34,6 +35,12 @@ def test_make_environment_with_relocated_repo_access_should_override_default(): assert environment.get('BORG_RELOCATED_REPO_ACCESS_IS_OK') == 'yes' +def test_make_environment_check_i_know_what_i_am_doing_should_override_default(): + environment = module.make_environment({'check_i_know_what_i_am_doing': True}) + + assert environment.get('BORG_CHECK_I_KNOW_WHAT_I_AM_DOING') == 'YES' + + def test_make_environment_with_integer_variable_value(): environment = module.make_environment({'borg_files_cache_ttl': 40}) assert environment.get('BORG_FILES_CACHE_TTL') == '40'