From 83b6e26446b70c2c721188cfb825eb71ecf63ecb Mon Sep 17 00:00:00 2001 From: Thomas Borgen Date: Sun, 9 Aug 2020 23:02:56 +0200 Subject: [PATCH 1/3] removes unused json import, replaces sys calls with argparse. renames variables with snake case. use preffered .format for string formatting --- openvpn/persistEnvironment.py | 56 ++++++++++++++++++++++------------- 1 file changed, 35 insertions(+), 21 deletions(-) diff --git a/openvpn/persistEnvironment.py b/openvpn/persistEnvironment.py index 9e4b97c72..07c87878e 100644 --- a/openvpn/persistEnvironment.py +++ b/openvpn/persistEnvironment.py @@ -1,30 +1,44 @@ +import argparse import os -import sys -import json +parser = argparse.ArgumentParser( + description='Store env vars into runnable .sh file with export statements', +) +parser.add_argument( + 'env_var_script_file', + type=str, + help='Path to variables-script.sh', +) -# Verify script arguments -if len(sys.argv) != 2: - sys.exit( - 'Invalid number of arguments. Usage:\n persistEnvironment.py /path/to/varibles-script.sh') +args = parser.parse_args() -envVarsScriptFile = sys.argv[1] +wanted_variables = { + 'OPENVPN_PROVIDER', + 'ENABLE_UFW', + 'PUID', + 'PGID', + 'DROP_DEFAULT_ROUTE', + 'GLOBAL_APPLY_PERMISSIONS', + 'DOCKER_LOG', +} -wantedVariables = ['OPENVPN_PROVIDER', 'ENABLE_UFW', 'PUID', 'PGID', 'DROP_DEFAULT_ROUTE', 'GLOBAL_APPLY_PERMISSIONS', 'DOCKER_LOG'] +variables_to_persist = {} -variablesToPersist = {} - -for variable in os.environ: - if variable.startswith('TRANSMISSION_'): - variablesToPersist[variable] = os.environ.get(variable) - if variable.startswith('WEBPROXY_'): - variablesToPersist[variable] = os.environ.get(variable) - if variable in wantedVariables: - variablesToPersist[variable] = os.environ.get(variable) +for env_var in os.environ: + if env_var.startswith('TRANSMISSION_'): + variables_to_persist[env_var] = os.environ.get(env_var) + elif env_var.startswith('WEBPROXY_'): + variables_to_persist[env_var] = os.environ.get(env_var) + elif env_var in wanted_variables: + variables_to_persist[env_var] = os.environ.get(env_var) # Dump resulting settings to file -with open(envVarsScriptFile, 'w') as file: - for variable in variablesToPersist: - file.write('export ' + variable + '=' + - variablesToPersist[variable] + '\n') +with open(args.env_var_script_file, 'w') as script_file: + for var_name, var_value in variables_to_persist.items(): + script_file.write( + 'export {env_var} = {env_var_value}\n'.format( + env_var=var_name, + env_var_value=var_value, + ), + ) From d46fd7631cef079e1ee84a2bdd911493c0b24637 Mon Sep 17 00:00:00 2001 From: Thomas Borgen Date: Sun, 9 Aug 2020 23:12:17 +0200 Subject: [PATCH 2/3] replace calls to sys for arguments with argparse --- transmission/updateSettings.py | 38 ++++++++++++++++++++++++++-------- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/transmission/updateSettings.py b/transmission/updateSettings.py index 332db1025..80ba516be 100644 --- a/transmission/updateSettings.py +++ b/transmission/updateSettings.py @@ -1,23 +1,43 @@ +import argparse +import json import os import sys -import json -# Verify script arguments -if len(sys.argv) != 3: - sys.exit('Invalid number of arguments. Usage:\n updateSettings.py defaultSettingsFile.json outputSettingsFile.json') +parser = argparse.ArgumentParser( + description='Updates output settings file based on a default file', +) -default_settings = sys.argv[1] -transmission_settings = sys.argv[2] +parser.add_argument( + 'input_file', + type=str, + help='Path to default settings json file', +) +parser.add_argument( + 'output_file', + type=str, + help='Path to output settings json file', +) + +args = parser.parse_args() +default_settings = args.input_file +transmission_settings = args.output_file + +# Fail if default settings file doesnt exist. if not os.path.isfile(default_settings): - sys.exit('Invalid arguments, default settings file does not exist') + sys.exit( + 'Invalid arguments, default settings file{file} does not exist'.format( + file=default_settings, + ), + ) + # Define which file to base the config on if os.path.isfile(transmission_settings): - configuration_baseline=transmission_settings + configuration_baseline = transmission_settings else: - configuration_baseline=default_settings + configuration_baseline = default_settings print('Using config baseline ' + configuration_baseline) From c02e6c08cc00b733fe07dd84415d1c5d1abdc16d Mon Sep 17 00:00:00 2001 From: Thomas Borgen Date: Sun, 9 Aug 2020 23:26:34 +0200 Subject: [PATCH 3/3] some cleanup --- transmission/updateSettings.py | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/transmission/updateSettings.py b/transmission/updateSettings.py index 80ba516be..4bb81efb8 100644 --- a/transmission/updateSettings.py +++ b/transmission/updateSettings.py @@ -3,7 +3,6 @@ import json import os import sys - parser = argparse.ArgumentParser( description='Updates output settings file based on a default file', ) @@ -39,18 +38,33 @@ if os.path.isfile(transmission_settings): else: configuration_baseline = default_settings -print('Using config baseline ' + configuration_baseline) +print('Using config baseline', configuration_baseline) # Read config base -with open(configuration_baseline, 'r') as f: - settings_dict = json.load(f) +with open(configuration_baseline, 'r') as input_file: + settings_dict = json.load(input_file) + + +def setting_as_env(setting: str) -> str: + """Get a transmission settings environment variable name.""" + return 'TRANSMISSION_{setting}'.format( + setting=setting.upper().replace('-', '_'), + ) + # For each setting, check if an environment variable is set to override it for setting in settings_dict: - setting_env_name = 'TRANSMISSION_' + setting.upper().replace('-', '_') + setting_env_name = setting_as_env(setting) if setting_env_name in os.environ: - print('Overriding ' + setting + ' because ' + setting_env_name + ' is set to ' + os.environ.get(setting_env_name)) - settings_dict[setting] = os.environ.get(setting_env_name) + env_value = os.environ.get(setting_env_name) + print( + 'Overriding {setting} because {env_name} is set to {value}'.format( + setting=setting, + env_name=setting_env_name, + value=env_value, + ), + ) + settings_dict[setting] = env_value # Dump resulting settings to file with open(transmission_settings, 'w') as fp: