From e8e9e911a92d39db37e562afd092535dbf2c7ae5 Mon Sep 17 00:00:00 2001 From: Henrik Sandklef Date: Tue, 25 Nov 2025 15:36:49 +0100 Subject: [PATCH 1/4] add yaml format --- lookup_license/format.py | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/lookup_license/format.py b/lookup_license/format.py index 0a5ff4e..49b5ff9 100644 --- a/lookup_license/format.py +++ b/lookup_license/format.py @@ -1,16 +1,20 @@ -import json - # SPDX-FileCopyrightText: 2024 Henrik Sandklef # # SPDX-License-Identifier: GPL-3.0-or-later +import json +import yaml + FORMAT_JSON = "json" +FORMAT_YAML = "yaml" FORMAT_TEXT = "text" class FormatterFactory(): @staticmethod def formatter(fmt): + if fmt.lower() == FORMAT_YAML: + return YamlFormatter() if fmt.lower() == FORMAT_JSON: return JsonFormatter() if fmt.lower() == FORMAT_TEXT: @@ -53,6 +57,23 @@ def format_cache(self, entries, verbose=False): def format_lookup_urls(self, looked_up_urls, verbose=False): return json.dumps(looked_up_urls, indent=4), None +class YamlFormatter(Formatter): + + def format_license(self, lic, verbose=False): + return yaml.safe_dump(lic), None + + def format_error(self, exception, verbose=False): + return yaml.safe_dump(exception), None + + def format_resources(self, resources, verbose=False): + return yaml.safe_dump(resources, indent=4) + + def format_cache(self, entries, verbose=False): + return yaml.safe_dump(entries), None + + def format_lookup_urls(self, looked_up_urls, verbose=False): + return yaml.safe_dump(looked_up_urls, indent=4), None + class TextFormatter(Formatter): def format_license(self, lic, verbose=False): From 930f984812491caf09c43e557e671a948c5ea731 Mon Sep 17 00:00:00 2001 From: Henrik Sandklef Date: Fri, 28 Nov 2025 20:06:56 +0100 Subject: [PATCH 2/4] add format info in help text --- lookup_license/__main__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lookup_license/__main__.py b/lookup_license/__main__.py index baf6bb7..14da0cd 100755 --- a/lookup_license/__main__.py +++ b/lookup_license/__main__.py @@ -38,7 +38,8 @@ def get_parser(): parser.add_argument('-of', '--output-format', type=str, - default='text') + help=f'Format for output. Available format: {", ".join([f'"{x}"' for x in FormatterFactory.formats()])}. Default "{FormatterFactory.default_format()}"', + default=FormatterFactory.default_format()) parser.add_argument('-f', '--file', action='store_true', From 1820c5ce4083f973441c57792adda0dff91cd3c3 Mon Sep 17 00:00:00 2001 From: Henrik Sandklef Date: Sun, 4 Jan 2026 15:48:09 +0100 Subject: [PATCH 3/4] add formats and methods --- lookup_license/format.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lookup_license/format.py b/lookup_license/format.py index 49b5ff9..5478ca5 100644 --- a/lookup_license/format.py +++ b/lookup_license/format.py @@ -8,6 +8,8 @@ FORMAT_JSON = "json" FORMAT_YAML = "yaml" FORMAT_TEXT = "text" +DEFAULT_FORMAT = FORMAT_TEXT +FORMATS = [FORMAT_JSON, FORMAT_YAML, FORMAT_TEXT] class FormatterFactory(): @@ -20,6 +22,14 @@ def formatter(fmt): if fmt.lower() == FORMAT_TEXT: return TextFormatter() + @staticmethod + def formats(): + return FORMATS + + @staticmethod + def default_format(): + return DEFAULT_FORMAT + class Formatter: def _ambig_response(self, lic): From e057edf8354bc63de228412246037a7f1dd9d401 Mon Sep 17 00:00:00 2001 From: Henrik Sandklef Date: Mon, 5 Jan 2026 10:02:41 +0100 Subject: [PATCH 4/4] break out output_formats --- lookup_license/__main__.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lookup_license/__main__.py b/lookup_license/__main__.py index 14da0cd..4a80cb4 100755 --- a/lookup_license/__main__.py +++ b/lookup_license/__main__.py @@ -20,6 +20,10 @@ def get_parser(): + default_output_format = FormatterFactory.default_format() + + output_formats = ', '.join([f'"{x}"' for x in FormatterFactory.formats()]) + parser = argparse.ArgumentParser( description=lookup_license.config.DESCRIPTION, epilog=lookup_license.config.EPILOG, @@ -38,8 +42,8 @@ def get_parser(): parser.add_argument('-of', '--output-format', type=str, - help=f'Format for output. Available format: {", ".join([f'"{x}"' for x in FormatterFactory.formats()])}. Default "{FormatterFactory.default_format()}"', - default=FormatterFactory.default_format()) + help=f'Format for output. Available format: {output_formats}. Default "{default_output_format}"', + default=default_output_format) parser.add_argument('-f', '--file', action='store_true',