dotfiles/mkSymlink.py

36 lines
1 KiB
Python
Executable file

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