def save(self): saved_files = [] for f, settings in self.file_settings: if len(settings) > 2 and settings[2]: saved_files.append(f) settings[1] = Merge.merge(*settings[1:]) while len(settings) > 2: settings.pop() if os.path.exists(f): with open(f, 'r') as fo: data = fo.read().split(Yaml.SEPARATOR)[0] else: data = '' parent = os.path.dirname(f) if not os.path.exists(parent): from echomesh.util import Log Log.logger(__name__).info('Creating directory %s.', parent) os.makedirs(parent) with open(f, 'wb') as fw: if data: fw.write(data) fw.write(Yaml.SEPARATOR) fw.write(Yaml.encode_one(settings[1])) self.arg_settings = Merge.difference_strict( self.arg_settings, self.changed) self.recalculate() return saved_files
def save(self): saved_files = [] for f, settings in self.file_settings: if len(settings) > 2 and settings[2]: saved_files.append(f) settings[1] = Merge.merge(*settings[1:]) while len(settings) > 2: settings.pop() if os.path.exists(f): with open(f, 'r') as fo: data = fo.read().split(Yaml.SEPARATOR)[0] else: data = '' parent = os.path.dirname(f) if not os.path.exists(parent): from echomesh.util import Log Log.logger(__name__).info('Creating directory %s.', parent) os.makedirs(parent) with open(f, 'wb') as fw: if data: fw.write(data) fw.write(Yaml.SEPARATOR) fw.write(Yaml.encode_one(settings[1])) self.arg_settings = Merge.difference_strict(self.arg_settings, self.changed) self.recalculate() return saved_files
def recalculate(self): self.args = None self.changed = {} for _, settings in self.file_settings: self.args = Merge.merge(self.args, *settings) self.changed = Merge.merge(self.changed, *settings[2:]) arg = copy.deepcopy(self.arg_settings) clean_arg = Merge.difference_strict(arg, self.changed) self.args = Merge.merge_for_settings(self.args, clean_arg) return self.args
def recalculate(self): self.config = None self.changed = {} for _, configs in self.file_configs: self.config = Merge.merge(self.config, *configs) self.changed = Merge.merge(self.changed, *configs[2:]) arg = copy.deepcopy(self.arg_config) clean_arg = Merge.difference_strict(arg, self.changed) self.config = Merge.merge_for_config(self.config, clean_arg) return self.config
def save(self): saved_files = [] for f, configs in self.file_configs: if len(configs) > 2 and configs[2]: saved_files.append(f) configs[1] = Merge.merge(*configs[1:]) while len(configs) > 2: configs.pop() with open(f, 'r') as fo: data = fo.read().split(Yaml.SEPARATOR)[0] with open(f, 'wb') as fw: fw.write(data) fw.write(Yaml.SEPARATOR) fw.write(Yaml.encode_one(configs[1])) self.arg_config = Merge.difference_strict(self.arg_config, self.changed) self.recalculate() return saved_files