29 lines
1.2 KiB
Python
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)))
|