123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- #!/usr/bin/python3
- #
-
- import os
- import shutil
- import subprocess
- import sys
-
-
- class bcolors:
- HEADER = '\033[95m'
- OKBLUE = '\033[94m'
- OKCYAN = '\033[96m'
- OKGREEN = '\033[92m'
- WARNING = '\033[93m'
- FAIL = '\033[91m'
- ENDC = '\033[0m'
- BOLD = '\033[1m'
- UNDERLINE = '\033[4m'
-
-
- def proceed(ask="Proceed?"):
- while True:
- uf = input("\n%s [Y/n/q]" % ask)
- if len(uf) == 0:
- uf = "y"
- if uf.lower() in ["y", "n", "q"]:
- break
- if uf == "q":
- sys.exit(1)
- else:
- return uf.lower() == "y"
-
-
- def delete_destination():
- return proceed("/!\\ Delete Destination including ALL files? /!\\")
-
-
- def failed(error_msg):
- print(" " + bcolors.WARNING + error_msg.rstrip("\n") + bcolors.ENDC)
- print(" [" + bcolors.FAIL + " FAILED " + bcolors.ENDC + "]")
-
-
- def success():
- print(" [" + bcolors.OKGREEN + " SUCCESS " + bcolors.ENDC + "]")
-
-
- BASE_GIT_URL = "https://git.mount-mockery.de/dirk"
- REPOS = (
- (BASE_GIT_URL + "/" + "bin.git", "~/bin"),
- (BASE_GIT_URL + "/" + "bash.git", "~/.bash"),
- (BASE_GIT_URL + "/" + "config_files.git", "~/.config_files"),
- )
- print("Cloning the following repositories:")
- for data in REPOS:
- print(" %s --> %s" % data)
- if proceed():
- for url, target in REPOS:
- command = "git clone %s %s" % (url, target)
- print("Cloning %s" % url)
- process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
- process.wait()
- if process.returncode == 0:
- success()
- else:
- failed(process.stderr.read().decode("utf-8"))
-
- CONFIG_COMMANDS = (
- "GS=`grep .bash/enabled ~/.bashrc`; [ ${#GS} -ne 0 ] || cat ~/.bash/BASHRC_ADDON >> ~/.bashrc",
- "mkdir -p ~/.cache/vim && mkdir -p ~/.vim && ln -s ~/.config_files/vimrc ~/.vimrc && ln -s ~/.config_files/vim_skeletons ~/.vim/skeletons",
- "which tmux && ln -s ~/.config_files/tmux.conf ~/.tmux.conf",
- "mkdir -p ~/.config && ln -s ~/.config_files/powerline_gitstatus ~/.config/powerline",
- "mkdir -p ~/.ssh && chmod 700 ~/.ssh && ln -s ~/.config_files/ssh_config ~/.ssh/config",
- )
- print("\n\n\nAdding the configuration to your environment:")
- for command in CONFIG_COMMANDS:
- print(" ", command)
- if proceed():
- for command in CONFIG_COMMANDS:
- print("Executing %s" % command)
- process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
- process.wait()
- if process.returncode == 0:
- success()
- else:
- failed(process.stderr.read().decode("utf-8"))
-
- DATA_LINKS = (
- ('~/data', 'prj'),
- ('~/data', 'prj/Arduino'),
- ('~/data', 'Schreibtisch'),
- ('/usr/data/dirk/local', 'C64'),
- ('/usr/data/dirk/local', 'Downloads'),
- ('/usr/data/dirk/local', 'media_images'),
- ('/usr/data/dirk/local', 'Videos'),
- )
- print("\n\n\nAdding the ~/data softlinks to your home directory")
- for src_path, path in DATA_LINKS:
- print(" %s -> %s" % (os.path.join(src_path, path), os.path.join('~', os.path.basename(path))))
- if proceed():
- delete_dest = delete_destination()
- for src_path, path in DATA_LINKS:
- src = os.path.expanduser(os.path.join(src_path, path))
- dest = os.path.expanduser(os.path.join("~", os.path.basename(path)))
- print(" Creating symlink: %s -> %s" % (src, dest))
- # Check existance of dest
- if not os.path.exists(src):
- failed("Source %s does not exists." % src)
- continue
- if os.path.exists(dest):
- if delete_dest:
- try:
- os.remove(dest)
- except IsADirectoryError:
- shutil.rmtree(dest)
- else:
- failed("Destination %s already exists." % dest)
- continue
- # Create Symbolic Link
- os.symlink(src, dest)
- success()
|