#!/usr/bin/env python3

import os
import sys

BASE_DIRECTORY = 'files'
HOME_DIRECTORY = os.getenv("HOME")


def recurseInstall(path=''):
    def homepath(entry):
        return os.path.join(HOME_DIRECTORY, path, entry)

    def gitpath(entry):
        return os.path.join(BASE_DIRECTORY, path, entry)

    def link(entry):
        os.symlink(os.path.join(os.getcwd(), gitpath(entry)), homepath(entry))

    for entry in os.listdir(os.path.join(BASE_DIRECTORY, path)):
        if os.path.exists(homepath(entry)):
            # The file/directory already exists
            if os.path.isdir(entry):  # Directory: recurse on it
                recurseInstall(os.path.join(path, entry))
            else:  # File: backup it, symlink it
                os.rename(homepath(entry), homepath(entry)+'.bck')
                link(entry)
        else:
            link(entry)


if __name__ == '__main__':
    if not HOME_DIRECTORY:
        print("Couldn't find home directory.", file=sys.stderr)
        sys.exit(1)
    recurseInstall()
