Create update-settings.py
This commit is contained in:
parent
e1f3666777
commit
54004f98af
82
update-settings.py
Normal file
82
update-settings.py
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
|
||||||
|
env = os.environ.get
|
||||||
|
|
||||||
|
smtp_settings = [
|
||||||
|
('username', ''),
|
||||||
|
('password', ''),
|
||||||
|
('host', 'localhost'),
|
||||||
|
('port', '25'),
|
||||||
|
('security', 'none'),
|
||||||
|
('to', ''),
|
||||||
|
('from', ''),
|
||||||
|
]
|
||||||
|
|
||||||
|
required = ['to', 'from']
|
||||||
|
|
||||||
|
settings = env('ISSO_SETTINGS')
|
||||||
|
if not settings:
|
||||||
|
raise Exception('No ISSO_SETTINGS defined')
|
||||||
|
|
||||||
|
settings = settings.split(';')
|
||||||
|
|
||||||
|
|
||||||
|
def backup_name(setting):
|
||||||
|
return setting + '.bak'
|
||||||
|
|
||||||
|
|
||||||
|
def purge_backup(setting):
|
||||||
|
# if there is a backup file, delete it
|
||||||
|
backup_setting = backup_name(setting)
|
||||||
|
if os.path.exists(backup_setting):
|
||||||
|
try:
|
||||||
|
os.remove(backup_setting)
|
||||||
|
except OSError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def create_backup(setting):
|
||||||
|
# make a backup
|
||||||
|
shutil.copyfile(setting, backup_name(setting))
|
||||||
|
|
||||||
|
|
||||||
|
def load_values():
|
||||||
|
values = []
|
||||||
|
for name, default in smtp_settings:
|
||||||
|
label = 'ISSO_SMTP_%s' % name.upper()
|
||||||
|
value = env(label, default)
|
||||||
|
if name in required and not value.strip():
|
||||||
|
raise Exception('Required environment variable is not set: %s' %
|
||||||
|
label)
|
||||||
|
values.append([label, value])
|
||||||
|
return values
|
||||||
|
|
||||||
|
|
||||||
|
def replace_placeholders(setting, values):
|
||||||
|
with open(setting, 'r') as _file:
|
||||||
|
content = _file.read()
|
||||||
|
|
||||||
|
for label, value in values:
|
||||||
|
content = content.replace(label, value)
|
||||||
|
|
||||||
|
# make a backup
|
||||||
|
create_backup(setting)
|
||||||
|
|
||||||
|
with open(setting, 'w') as _file:
|
||||||
|
_file.write(content)
|
||||||
|
|
||||||
|
return content
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
values = load_values()
|
||||||
|
|
||||||
|
for setting in settings:
|
||||||
|
print("Replacing settings %s" % setting)
|
||||||
|
replace_placeholders(setting, values)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
Loading…
Reference in New Issue
Block a user