aboutsummaryrefslogtreecommitdiff
path: root/setup.py
diff options
context:
space:
mode:
Diffstat (limited to 'setup.py')
-rw-r--r--setup.py96
1 files changed, 73 insertions, 23 deletions
diff --git a/setup.py b/setup.py
index 6096624..bfc6196 100644
--- a/setup.py
+++ b/setup.py
@@ -5,36 +5,86 @@ import sys
home_dir = os.getenv("HOME")
-targets = {"vimrc": ("vimrc", home_dir + "/.vimrc"),
- "vim.d": ("vim", home_dir + "/.vim"),
- "ssh-config": ("ssh/config", home_dir + "/.ssh/config"),
- "xinitrc": ("xinitrc", home_dir + "/.xinitrc"),
- "Xresources": ("Xresources", home_dir + "/.Xresources"),
- "muttrc": ("muttrc", home_dir + "/.muttrc"),
- "zshrc": ("zshrc", home_dir + "/zshrc"),
- "i3-config": ("i3", home_dir + "/.i3"),
- "dir_colors": ("dir_colors", home_dir + "/.dir_colors"),
- "fish-config": ("config/fish/config.fish", home_dir + "/.config/fish/config.fish"),
- "terminator-config": ("config/terminator/config", home_dir + "/.config/terminator/config")}
-
-git_submodules_for = ["vim.d", "fish-config"]
+def fish_config(quiet):
+ """install and run fisherman"""
+ # download fisherman
+ import urllib.request
+ import subprocess
+
+ if not quiet:
+ print("Installing fisherman, see: https://github.com/fisherman/fisherman")
+ with urllib.request.urlopen("https://git.io/fisherman") as f:
+ fisher = f.read().decode("utf-8")
+
+ dir_path = home_dir+"/.config/fish/functions/"
+ # install fisherman at $fish_config/functions/
+ if not os.path.exists(dir_path):
+ os.mkdir(dir_path)
+ else:
+ if not os.path.exists(dir_path+"fisher.fish"):
+ file = open(dir_path+"fisher.fish", 'w')
+ file.write(fisher)
+ else:
+ if not quiet:
+ print("fisherman all ready installed")
+ return
+
+ if not quiet:
+ print("Installed fisherman -> execute fisher to pull plugins")
+
+ subprocess.run(["fish", dir_path+"fisher.fish"])
+
+# targets are a list of tuples<file name, link destination> and/or functions
+
+targets = {"vimrc": [("vimrc", home_dir + "/.vimrc")],
+ "vim.d": [("vim", home_dir + "/.vim")],
+ "ssh-config": [("ssh/config", home_dir + "/.ssh/config")],
+ "xinitrc": [("xinitrc", home_dir + "/.xinitrc")],
+ "Xresources": [("Xresources", home_dir + "/.Xresources")],
+ "muttrc": [("muttrc", home_dir + "/.muttrc")],
+ "zshrc": [("zshrc", home_dir + "/zshrc")],
+ "i3-config": [("i3", home_dir + "/.i3")],
+ "dir_colors": [("dir_colors", home_dir + "/.dir_colors")],
+ "fish-config": [("config/fish/config.fish", home_dir + "/.config/fish/config.fish"),
+ ("config/fish/fishfile", home_dir + "/.config/fish/fishfile"), fish_config],
+ "terminator-config": [("config/terminator/config", home_dir + "/.config/terminator/config")]}
+
+git_submodules_for = ["vim.d"]
def install_target(target, quiet):
"""Install a target"""
- target_files = targets[target]
if not quiet:
- print("Installing", target, "to", target_files[1])
- if os.path.exists(target_files[0]):
- try:
- os.symlink(target_files[0], target_files[1])
- except FileExistsError as e:
- print(e)
- else:
- print("Can't find", target_files[0]+". Please make sure you are in the right directory.")
+ print("Installing", target, "...")
+
+ for instruction in targets[target]:
+ if isinstance(instruction, tuple):
+ if not quiet:
+ print("Installing", instruction[0], "to", instruction[1])
+ if os.path.exists(instruction[0]):
+ try:
+ os.symlink(instruction[0], instruction[1])
+ except FileExistsError as e:
+ print(e, file=sys.stderr)
+ else:
+ print("Can't find", instruction[0] +
+ ". Please make sure you are in the right directory.", file=sys.stderr)
+ elif callable(instruction):
+ if not quiet:
+ print("Running function", instruction)
+ res = instruction(quiet)
+ if res:
+ if not quiet:
+ print("The instruction", instruction, "of", target, "failed with", str(res) + ".")
+ print("This can leaf your installation in a broken state")
+ print("ABORTING to prevent failures.")
+ exit(res)
+ else:
+ print("I don't understand", instruction,
+ "\nThe instruction musst be a tuple or a function.\nSKIPPING IT")
if target in git_submodules_for:
- choice = input(target + "uses git submodules want to pull them ? (Y/n)")
+ choice = input(target + " uses git submodules want to pull them ? (Y/n) ")
if choice in ["Y", "y", ""]:
import subprocess
subprocess.run(["git", "submodule", "update", "--init"])