from pathlib import Path
import requests
import sys

def tupleize(version):
    result = tuple(int(x) for x in version.split("."))
    if len(result) == 2:
        result += (0,)
    return result

def version_greater(a, b):
    """Return true if x.y.z version number a is greater than b"""
    return tupleize(a) > tupleize(b)

def jspsych_version_info():
    """Returns a dict module_name -> version"""
    response = requests.get("https://api.github.com/repos/jspsych/jspsych/releases?per_page=100")
    if response.status_code != 200:
        sys.stderr.write("Got {response.status_code} from GitHub\n")
        sys.exit(-1)
    result = {}
    for release_info in response.json():
        module, version = release_info["name"].rsplit("@",1)
        if module not in result:
            result[module] = version
        else:
            if tupleize(version) > tupleize(result[module]):
                result[module] = version

    print(result)

def freshen(path):
    ## incomplete!
    raise NotImplementedError()

def main():

    if not sys.argv:
        sys.stderr.write("This program takes a list of files to freshen jsPsych version numbers.\n")
        sys.exit(-1)

    versions = jspsych_version_info()

    for pathname in sys.argv[1:]:
        p = Path(pathname)
        assert p.is_file(), f"{pathname} is not an ordinary file"
        if not p.suffix == ".html":
            sys.stderr.write(f"WARNING: {pathname} does not end with .html\n")
            sys.exit(-1)
        print(f"Processing {path}")
        freshen(path)



if __name__ == "__main__":
    main()