module showindex;

import git.c;

import std.stdio;
import std.string;
import std.exception;

void main(string[] args)
{
    if (args.length < 2)
    {
        writeln("Must pass path to .git folder.");
        return;
    }

    size_t i, ecount;
    git_oid oid;

    char[41] _out = '\0';

    git_repository* repo;
    auto res = git_repository_open(&repo, toStringz(args[1]));

    git_index* index;
    git_repository_index(&index, repo);
    git_index_read(index);

    ecount = git_index_entrycount(index);

    for (i = 0; i < ecount; ++i)
    {
        const e = git_index_get_byindex(index, i);

        oid = e.oid;
        git_oid_fmt(_out.ptr, &oid);

        printf("File Path: %s\n", e.path);
        printf(" Blob SHA: %s\n", &_out);
        printf("File Size: %d\n", cast(int)e.file_size);
        printf("   Device: %d\n", cast(int)e.dev);
        printf("    Inode: %d\n", cast(int)e.ino);
        printf("      UID: %d\n", cast(int)e.uid);
        printf("      GID: %d\n", cast(int)e.gid);
        printf("    ctime: %d\n", cast(int)e.ctime.seconds);
        printf("    mtime: %d\n", cast(int)e.mtime.seconds);
        printf("\n");
    }

    git_index_free(index);

    git_repository_free(repo);
}