diff --git a/skeleton/project_codename/project_codename.py b/skeleton/project_codename/project_codename.py index 5912de4..d8f7265 100755 --- a/skeleton/project_codename/project_codename.py +++ b/skeleton/project_codename/project_codename.py @@ -13,6 +13,7 @@ import logging from logging.handlers import SysLogHandler import click import click_config_file +import yaml HOME_FOLDER = os.environ.get('HOME', os.environ.get('USERPROFILE', '/')) @@ -71,11 +72,36 @@ class __project_codename_camel__: data['last_update'] = time.time() with open(self.config['cache_file'], 'w', encoding='utf-8') as cache_file: json.dump(data, cache_file, indent=2) - self._log.debug( - "Saved cached data in '%s'", - self.config['cache_file'] + self._debug( + f"Saved cached data in '{self.config['cache_file']}'", ) + def _output(self, message): + if self.config['output_format'] == 'JSON': + return json.dumps(message, indent=2) + elif self.config['output_format'] == 'YAML': + return yaml.dump(message, Dumper=yaml.Dumper) + elif self.config['output_format'] == 'PLAIN': + return message + else: + self._log.warning( + "Output format '%s' not supported", + self.config['output_format'] + ) + return message + + def _info(self, message): + return self._log.info(self._output(message)) + + def _warning(self, message): + return self._log.warning(self._output(message)) + + def _error(self, message): + return self._log.error(self._output(message)) + + def _debug(self, message): + return self._log.debug(self._output(message)) + def _init_log(self): ''' Initialize log object ''' self._log = logging.getLogger("__project_codename__") @@ -127,6 +153,16 @@ class __project_codename_camel__: ), help='Set the debug level for the standard output.' ) +@click.option( + "--output-format", + "-o", + default="JSON", + type=click.Choice( + ["JSON", "YAML", "CSV", "PLAIN"], + case_sensitive=False, + ), + help='Set the output format.' +) @click.option( '--log-file', '-l', diff --git a/skeleton/requirements.txt b/skeleton/requirements.txt index 66bf966..8b330d4 100755 --- a/skeleton/requirements.txt +++ b/skeleton/requirements.txt @@ -1,2 +1,3 @@ click -click_config_file \ No newline at end of file +click_config_file +PyYAML