#!/usr/bin/env python3
import os
import requests
import subprocess

ua = requests.Session()

def get_url_size(url):
    global ua
    r = ua.head(url)
    r.raise_for_status()
    s = r.headers["Content-Length"]
    return int(s)

def parse_hashfile(name):
    with open(name, "r") as fh:
        for line in fh:
            line = line.strip().split(" ", 1)
            if len(line) == 2 and len(line[0]) == 64 and line[1][0] in " *":
                yield (line[0], line[1][1:])

urlbase = 'http://mirror.duomenucentras.lt/centos/5.11/isos/x86_64/'
hashfile = 'CentOS-5.11-x86_64-sha256sum.txt.asc'

wanted = {
    "CentOS-5.11-x86_64-bin-DVD-1of2.iso",
}

for hash, basename in parse_hashfile(hashfile):
    if basename not in wanted:
        continue

    url = "%s/%s" % (urlbase, basename)
    size = get_url_size(url)

    ext = basename.split(".")[-1]
    key = 'SHA256E-s%d--%s.%s' % (size, hash, ext)

    print("creating fake link for %s" % key)

    os.symlink(".git/annex/objects/xx/yy/%s" % key, basename)

    subprocess.call(["git", "annex", "add", basename])

    subprocess.call(["git", "annex", "addurl",
                        "--fast",
                        "--file=%s" % basename,
                        url])

    subprocess.call(["git", "annex", "fsck", basename])
