#!/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()