#!/usr/bin/env python
# -*- coding: utf-8 -*-
# -*- mode:python -*-
import os
import sys
import time
import codecs
from git import Repo
import locale
locale.setlocale(locale.LC_ALL, 'de_DE')

pathrepo = os.getcwd()
repo = Repo(pathrepo)
assert not repo.bare
git = repo.git
headcommit = repo.head.commit
index = repo.index

if len(sys.argv) <= 1:
    commFiles = git.ls_files(full_name=True).split("\n")
    #commit = git.log('-1', format='%h').rstriMin
    #cmt = subprocess.check_output('git log -1 --format="%s" ', shell=True).decode("utf-8").rstrip()

    for fl in commFiles:
        flname, flext = os.path.splitext(fl)
        if flext == '.tex':
            rawdate = int(git.log('-1', fl, pretty='format:"%at"').split('"')[1])
            date = [time.strftime("%d. %B %Y %H:%M", time.localtime(rawdate)),
                    time.strftime("%d", time.localtime(rawdate)),
                    time.strftime("%m", time.localtime(rawdate)),
                    time.strftime("%Y", time.localtime(rawdate)),
                    time.strftime("%H", time.localtime(rawdate)),
                    time.strftime("%M", time.localtime(rawdate))]
            author = [git.log('-1', fl, pretty='format:"%an"').split('"')[1],
                    git.log('-1', fl, pretty='format:"%ae"').split('"')[1]]
            commit = [git.log('-1', fl, pretty='format:"%H"').split('"')[1],
                      git.log('-1', fl, pretty='format:"%h"').split('"')[1]]
            f = codecs.open(flname+".gfi", "w", encoding="utf-8")
            f.write("% gitfile-info control file\n")
            f.write("\\gfiSetDate{" + date[1] + "}{" + date[2] + "}{" + date[3] + "}{"
                    + date[4] + "}{" + date[5] + "}{" + date[0] + "}\n")
            f.write("\\gfiSetAuthor{" + author[0] + "}{" + author[1] + "}\n")
            f.write("\\gfiSetCommit{" + commit[0] + "}{" + commit[1] + "}")
            #print("\\gfiSet{" + date + "}{" + author + "}{" + commit + "}")
            f.close
else:
    fl = sys.argv[1]
    flname, flext = os.path.splitext(fl)
    rawdate = int(git.log('-1', fl, pretty='format:"%at"').split('"')[1])
    date = [time.strftime("%d. %B %Y %H:%M", time.localtime(rawdate)),
            time.strftime("%d", time.localtime(rawdate)),
            time.strftime("%m", time.localtime(rawdate)),
            time.strftime("%Y", time.localtime(rawdate)),
            time.strftime("%H", time.localtime(rawdate)),
            time.strftime("%M", time.localtime(rawdate))]
    author = [git.log('-1', fl, pretty='format:"%an"').split('"')[1],
              git.log('-1', fl, pretty='format:"%ae"').split('"')[1]]
    commit = [git.log('-1', fl, pretty='format:"%H"').split('"')[1],
                git.log('-1', fl, pretty='format:"%h"').split('"')[1]]
    f = codecs.open(flname+".gfi", "w", encoding="utf-8")
    f.write("% gitfile-info control file\n")
    f.write("\\gfiSetDate{" + date[1] + "}{" + date[2] + "}{" + date[3] + "}{"
            + date[4] + "}{" + date[5] + "}{" + date[0] + "}\n")
    f.write("\\gfiSetAuthor{" + author[0] + "}{" + author[1] + "}\n")
    f.write("\\gfiSetCommit{" + commit[0] + "}{" + commit[1] + "}")
    #print("\\gfiSet{" + date + "}{" + author + "}{" + commit + "}")
    f.close