-
Notifications
You must be signed in to change notification settings - Fork 0
/
setup.py
90 lines (73 loc) · 2.26 KB
/
setup.py
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
82
83
84
85
86
87
88
89
90
import sys
from pathlib import Path
HOME_DIR = Path.home()
BASE_DIR = Path(__file__).resolve().parent
DOT_FILES = [
".ansible.cfg",
".black",
".bash_profile",
".bashrc",
".editorconfig",
".git-completion.bash",
".git-prompt.sh",
".gitconfig",
".gitignore",
".hgrc",
".hub.bash_completion.sh",
".ideavimrc",
".inputrc",
".ptconfig.toml",
".pythonstartup",
".tigrc",
".tmux.conf",
".vim",
]
CONFIG_DIRS = [".cache/tmp", ".config"]
CONFIG_FILES = ["flake8", "mypy"]
def check_exists_path(fname):
return (HOME_DIR / fname).exists()
def put_symbolic_link(fname, parent_dir="", alias=""):
msg = "Already exists file"
dst = Path(parent_dir, alias if alias else fname)
if not check_exists_path(dst):
(HOME_DIR / dst).symlink_to(BASE_DIR / parent_dir / fname)
msg = "Put Symbolic Link"
print(msg + ": %s" % (alias if alias else fname))
def setup_dotfile(fname):
if fname == ".bashrc" and check_exists_path(fname):
put_symbolic_link(fname, alias=".bash_aliases")
elif fname == ".vim":
if sys.platform.startswith("win32"):
put_symbolic_link(fname, alias="vimfiles")
put_symbolic_link(fname)
elif fname == ".gitconfig":
put_symbolic_link(fname)
if sys.platform.startswith("win32"):
put_symbolic_link(".gitconfig.win", alias=".gitconfig.os")
else:
put_symbolic_link(".gitconfig.unix", alias=".gitconfig.os")
elif fname == ".tmux.conf":
put_symbolic_link(fname)
put_symbolic_link(".tmux.conf.osx")
put_symbolic_link(".tmux.conf.linux")
put_symbolic_link(".tmux.conf.wsl")
else:
put_symbolic_link(fname)
def prepare_dir(fpath):
msg = "Already exists directory: %s" % fpath
if not check_exists_path(fpath):
(HOME_DIR / fpath).mkdir(parents=True, exist_ok=True)
msg = "Put directory: %s" % fpath
print(msg)
def main():
# setup directory for config
for fpath in CONFIG_DIRS:
prepare_dir(fpath)
# setup dotfiles
for fname in DOT_FILES:
setup_dotfile(fname)
# setup .config
for fname in CONFIG_FILES:
put_symbolic_link(fname, parent_dir=".config")
if __name__ == "__main__":
main()