from docutils.parsers.rst import Directive
from docutils.nodes import paragraph


class ContributorsDirective(Directive):
    required_arguments = 1
    has_content = True

    def run(self):
        role = self.arguments[0]

        roles = ["authors", "translators", "artists"]
        if role not in roles:
            raise Exception(f"Argument must be in {roles}")

        const = self.state.document.settings.env.config.const
        if role == "authors":
            people = const.AUTHORS
        elif role == "translators":
            people = const.TRANSLATORS
        else:
            people = const.ARTISTS

        output = ", ".join(people)
        return [paragraph(text=output)]


def setup(app):
    app.add_directive("contributors", ContributorsDirective)
    return {"parallel_read_safe": True, "parallel_write_safe": True}
