#!/usr/bin/env python
import requests
import json
import os
import sys

url_fmt = "https://api.github.com/repos/Equinor/libecl/pulls/%d"

def getPRList( api_token, pr1, pr2):
    pr = pr1
    pr_list = []
    prev_len = 0
    sys.stderr.write("Downloading PR: ")
    while True:
        url = url_fmt % pr
        response = requests.get( url , params = {"access_token" : api_token})
        for i in range(prev_len):
            sys.stdout.write("\b")

        sys.stdout.write("%d" % pr )
        sys.stdout.flush()
        prev_len = len("%s" % pr)

        if response.status_code == 200:
            pr_list.append( json.loads( response.content ) )
        pr += 1

        if pr > pr2:
            break



    return pr_list


def printPRList( pr_list , fileH):
    for pr in pr_list:
        title = pr["title"]
        body = pr["body"]
        nr = pr["number"]
        url = "https://github.com/Equinor/libecl/pull/{}/".format(nr)

        try:
            title = str(title)
        except UnicodeEncodeError:
            title = "UnicodeError"

        fileH.write( "[`{nr} <{url}>`] : {title}".format(nr = nr, url=url, title = title))

        try:
            fileH.write( "%s\n\n\n" % body )
        except UnicodeEncodeError:
            fileH.write("UnicodeError")


def main():
    if "GITHUB_API_TOKEN" in os.environ:
        github_api_token = os.getenv("GITHUB_API_TOKEN")
    else:
        sys.exit("You must create a github access token and set the environment variable 'GITHUB_API_TOKEN' to proceed")

    pr1 = int(sys.argv[1])
    pr2 = int(sys.argv[2])
    pr_list = getPRList( github_api_token, pr1, pr2)

    filename = "/tmp/relnotes-%d-%d" % (pr1 , pr2)
    printPRList( pr_list , open(filename , "w"))

    print "\nHave created file: %s which can be a starting point for release notes" % filename




if __name__ == "__main__":
    main( )


