# -*- coding: utf-8 -*- # set_settings_parameter # # Adding/changing 'Parameter key'='Parameter value' in 'Settings file' # Parameter key/value can't be empty # # Script is available only for TrassirOS # # Version: 1.1 # Author: A.A.Trubilin, DSSL # E-mail: a.trubilin@dssl.ru """ <parameters> <company>AATrubilin</company> <title>set_settings_parameter</title> <version>1.1</version> </parameters> """ import re import os import host
SETTINGS_FILE = "/home/trassir/nvr-system-settings.ini" PARAMETR_KEY = "skip_edit_check" PARAMETR_VALUE = "1"
class OK(Exception): pass
if os.name == "nt": # Check if script runs on TrassirOS raise OSError("This script is unavailable for WinOS")
def set_settings(settings_file, key, value): """Set new settings or replace old
Args: settings_file (str) : Setting file full path key (str) : Setting key value (str) : Setting value
Raised: NameError if file not found ValueError if parameter or value not setted """ if not os.path.isfile(settings_file): # Check if file exists raise NameError("File {} not found".format(settings_file))
if not key: # Check if parameter setted raise ValueError("Empty parameter key")
if not value: # Check if value setted raise ValueError("Empty parameter value")
regex_pattern = r"{}(.*)=(.*)".format(key) new_data = "{}={}".format(key, value) with open(settings_file, "r+") as setting_file: settings_data = setting_file.read() setting_file.seek(0) if re.search(regex_pattern, settings_data): # If found parameter in setting file - replace it settings_data_new = re.sub(regex_pattern, new_data, settings_data) else: # Else just add to end of file settings_data_new = settings_data + "\n{}\n".format(new_data) setting_file.write(settings_data_new) setting_file.truncate() host.message("Setting {} success".format(new_data)) return True
def check_setting(settings_file, key): """Check setted parameter
Args: settings_file (str) : Setting file full path key (str) : Setting key """ with open(settings_file, "r") as f: for line in f: if key in line: raise OK(line) raise RuntimeError("Parameter %s not found" % key)
set_settings(SETTINGS_FILE, PARAMETR_KEY, PARAMETR_VALUE) check_setting(SETTINGS_FILE, PARAMETR_KEY)
|