openSUSE-release-tools/osclib/config_command.py

29 lines
1.2 KiB
Python

class ConfigCommand(object):
def __init__(self, api):
self.api = api
def perform(self, projects, key=None, value=None, append=False, clear=False):
project_max_format = '{:<' + str(len(max(projects, key=len))) + '} {}'
for project in projects:
meta = self.api.get_prj_pseudometa(project)
meta.setdefault('config', {})
if clear:
if key:
meta['config'].pop(key, None)
else:
meta.pop('config', None)
self.api.set_prj_pseudometa(project, meta)
elif value:
value_project = value
if append:
value_project = ' '.join([meta['config'].get(key, ''), value_project.strip()])
meta['config'][key] = value_project.strip()
self.api.set_prj_pseudometa(project, meta)
keys = [key] if key else meta.get('config', {}).keys()
for key_print in keys:
print('{} = {}'.format(
project_max_format.format(project, key_print) if len(projects) > 1 else key_print,
meta['config'].get(key_print)))