Module piate.cli

Expand source code
import cloup

from piate.api.client import Client
from piate.api.credentials import Credentials
from piate.api.session import Session
from piate.cli.context import ContextObj
from piate.cli.format import Format
from piate.cli.inventories import (
    generate_inventory_get_command,
    generate_inventory_list_command,
)
from piate.cli.render import pages_response_iterator, page_response


@cloup.group()
@cloup.option(
    "--username",
    "-U",
    metavar="USERNAME",
    help="Username to request against the API",
    required=False,
)
@cloup.option(
    "--api-key",
    "-K",
    metavar="API_KEY",
    help="API Key to use to request against the API",
    required=False,
)
@cloup.option("--format", default="json", type=cloup.Choice(["json", "json-lines"]))
@cloup.pass_context
def run(ctx: cloup.Context, username: str, api_key: str, format: str):
    ctx.obj = ContextObj(
        client=Client(Session(Credentials(username=username, api_key=api_key))),
        format=Format(format),
    )


"""
Inventories
"""


@run.group()
def inventories():
    ...


generate_inventory_get_command(inventories, "language", has_official=True)
generate_inventory_list_command(inventories, "languages")

generate_inventory_get_command(inventories, "primarity")
generate_inventory_list_command(inventories, "primarities")

generate_inventory_get_command(inventories, "query-operator")
generate_inventory_list_command(inventories, "query-operators")

generate_inventory_get_command(inventories, "reliability")
generate_inventory_list_command(inventories, "reliabilities")

generate_inventory_get_command(inventories, "searchable-field")
generate_inventory_list_command(inventories, "searchable-fields")

generate_inventory_get_command(inventories, "term-type")
generate_inventory_list_command(inventories, "term-types")


""""
Domains
"""


@run.command("list-domains")
@cloup.pass_obj
def domains(obj: ContextObj):
    page_response(obj.client.domains.list(), obj.format)


"""
Collections
"""


@run.command("list-collections")
@cloup.pass_obj
def collections(obj: ContextObj):
    pages_response_iterator(obj.client.collections.pages(), obj.format)


"""
Institutions
"""


@run.command("list-institutions")
@cloup.pass_obj
def institutions(obj: ContextObj):
    pages_response_iterator(obj.client.institutions.pages(), obj.format)


"""
Entries
"""


@run.group("entries")
def entries():
    ...


@entries.command("search-entries")
def entries_search():
    raise NotImplementedError()


@entries.command("multi-search-entries")
def entries_multi_search():
    raise NotImplementedError()


if __name__ == "__main__":
    run()

Sub-modules

piate.cli.context
piate.cli.format
piate.cli.inventories
piate.cli.render