diff --git a/ckanext/dcat/cli.py b/ckanext/dcat/cli.py index 83d8b539..c0343174 100644 --- a/ckanext/dcat/cli.py +++ b/ckanext/dcat/cli.py @@ -6,7 +6,12 @@ import ckan.plugins.toolkit as tk import ckanext.dcat.utils as utils -from ckanext.dcat.processors import RDFParser, RDFSerializer, DEFAULT_RDF_PROFILES +from ckanext.dcat.processors import ( + RDFParser, + RDFSerializer, + DEFAULT_RDF_PROFILES, + RDF_PROFILES_CONFIG_OPTION, +) @click.group() @@ -24,6 +29,17 @@ def generate_static(output): utils.generate_static_json(output) +def _get_profiles(profiles): + if profiles: + profiles = profiles.split() + elif tk.config.get(RDF_PROFILES_CONFIG_OPTION): + profiles = tk.aslist(tk.config[RDF_PROFILES_CONFIG_OPTION]) + else: + profiles = None + + return profiles + + @dcat.command(context_settings={"show_default": True}) @click.argument("input", type=click.File(mode="r")) @click.option( @@ -40,8 +56,8 @@ def generate_static(output): @click.option( "-p", "--profiles", - default=" ".join(DEFAULT_RDF_PROFILES), - help="RDF profiles to use", + help=f"RDF profiles to use. If not provided will be read from config, " + "if not present there, the default will be used: {DEFAULT_RDF_PROFILES}", ) @click.option( "-P", "--pretty", is_flag=True, help="Make the output more human readable" @@ -63,8 +79,8 @@ def consume(input, output, format, profiles, pretty, compat_mode): """ contents = input.read() - if profiles: - profiles = profiles.split() + profiles = _get_profiles(profiles) + parser = RDFParser(profiles=profiles, compatibility_mode=compat_mode) parser.parse(contents, _format=format) @@ -92,8 +108,8 @@ def consume(input, output, format, profiles, pretty, compat_mode): @click.option( "-p", "--profiles", - default=" ".join(DEFAULT_RDF_PROFILES), - help="RDF profiles to use", + help=f"RDF profiles to use. If not provided will be read from config, " + "if not present there, the default will be used: {DEFAULT_RDF_PROFILES}", ) @click.option( "-m", "--compat_mode", is_flag=True, help="Compatibility mode (deprecated)" @@ -112,12 +128,9 @@ def produce(input, output, format, profiles, compat_mode): """ contents = input.read() - if profiles: - profiles = profiles.split() - serializer = RDFSerializer( - profiles=profiles, - compatibility_mode=compat_mode - ) + profiles = _get_profiles(profiles) + + serializer = RDFSerializer(profiles=profiles, compatibility_mode=compat_mode) dataset = json.loads(contents) if isinstance(dataset, list):