#!/usr/bin/env python
# -*- encoding: utf-8 -*-

import json

import click


def format_entry(a):
    entry = "**"
    if 'displayname' in a:
        entry += a['displayname']
    if 'affiliation' in a:
        entry += " (%s)" % a['affiliation']
    entry += "**"
    if 'orcid' in a:
        entry += " `ORCID <https://orcid.org/%s>`__" % a['orcid']
    if 'github' in a:
        entry += " `GitHub <https://github.com/%s>`__" % a['github']

    if 'contribution' in a:
        entry += "\n    %s" % a['contribution']

    entry += "\n\n"
    return entry


@click.command()
@click.option('--creators', type=click.File('rb'), default="packaging/creators.json")
@click.option('--contributors', type=click.File('rb'), default="packaging/contributors.json")
@click.option('--creators-out', type=click.File('w', encoding='utf-8'),
    default="docs/source/autogenerated/creators.rst")
@click.option('--contributors-out', type=click.File('w', encoding='utf-8'),
    default='docs/source/autogenerated/contributors.rst')
def main(creators, contributors, creators_out, contributors_out):

    def author(d):
        return d['authorname']

    creators_list = sorted(json.load(creators), key=author)
    contributors_list = sorted(json.load(contributors), key=author)

    for c in creators_list:
        creators_out.write(format_entry(c))

    for c in contributors_list:
        contributors_out.write(format_entry(c))


if __name__ == '__main__':
    main()
