-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathutils.py
More file actions
91 lines (77 loc) · 2.18 KB
/
utils.py
File metadata and controls
91 lines (77 loc) · 2.18 KB
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
91
import sys
import os
import shutil
import inspect
from enum import Enum, auto
if __name__ == "__main__":
print("this is not a script")
sys.exit(0)
join = os.path.join
# ignore errors
# just define the ones that are available
try:
HOME = os.environ["HOME"]
DOTCONFIG = join(HOME, ".config")
APPLICATION_SUPPORT = join(HOME, "Library", "Application Support")
except: pass
try: USERPROFILE = os.environ["USERPROFILE"]
except: pass
try: APPDATA = os.environ["APPDATA"]
except: pass
try: LOCALAPPDATA = os.environ["LOCALAPPDATA"]
except: pass
env = os.environ
def target_dir():
filename = inspect.stack()[1].filename
realpath = os.path.realpath(filename)
return os.path.dirname(realpath)
class OS(Enum):
LINUX = auto()
WINDOWS = auto()
MACOS = auto()
def platform(self):
if self == OS.LINUX:
return "linux"
if self == OS.WINDOWS:
return "win32"
if self == OS.MACOS:
return "darwin"
@staticmethod
def type(platform: str):
if platform == "linux":
return OS.LINUX
if platform == "win32":
return OS.WINDOWS
if platform == "darwin":
return OS.MACOS
print("unknown OS")
sys.exit(0)
platform = OS.type(sys.platform)
def check_os(*oses: OS):
supported_oses = map(OS.platform, oses)
if sys.platform not in supported_oses:
print("OS not supported")
sys.exit(0)
def make_symlink(target: str, link: str):
s = os.path.basename(link)
link_dir = os.path.dirname(link)
if not os.path.exists(link_dir):
os.makedirs(link_dir)
print(f"Created directory '{link_dir}'")
elif os.path.lexists(link):
response = input(f"Existing '{s}' found\nRemove? [y/N]: ")
if response.lower() != "y":
return
try:
os.remove(link)
except OSError:
shutil.rmtree(link)
print(f"Removed '{s}'")
os.symlink(target, link)
print(f"Created symlink for '{s}'")
def check_scoop():
if platform != OS.WINDOWS:
return False
else:
response = input(f"Installed via scoop? [Y/n]: ")
return not response.lower() != "y"