aboutsummaryrefslogtreecommitdiff
path: root/setup.py
blob: 60966242937e9071a78bd7361a6385c659252110 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
"""Interactively install fischerlings dotfiles"""

import os
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 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.")

    if target in git_submodules_for:
        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"])


def main():

    quiet = False
    if "-q" in sys.argv:
        quiet = True
        del(sys.argv[sys.argv.index("-q")])

    if len(sys.argv) > 1:
        for arg in sys.argv[1:]:
            if arg in targets:
                install_target(arg, quiet)
    else:
        if not quiet:
            print("Welcome to the installation script of fischerlings dotfiles.")
            print("Located at: https://github.com/fischerling/dotfiles")
            print()

        targets_ord = [x for x in targets]
        for i, target in zip(range(len(targets_ord)), targets_ord):
            print(str(i)+":", target)
        print("Enter n° of configurations to be installed or all")
        choice = input("==> ")
        
        if choice == "":
            pass
        elif "all" in choice:
            for target in targets:
                install_target(target, quiet)
        else:
            for n in choice.strip().split(" "):
                install_target(targets_ord[int(n)], quiet)

        if not quiet:
            print("Good Bye. Have fun with your new configuration")


if __name__ == "__main__":
    main()