forked from BruceDLong/CodeDog
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathenvironmentMngr.py
More file actions
124 lines (104 loc) · 4.45 KB
/
environmentMngr.py
File metadata and controls
124 lines (104 loc) · 4.45 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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
import os
import subprocess
from progSpec import cdlog, cdErr
import checkSys
def checkToolLinux(toolName):
if subprocess.call(["which", toolName], stdout=subprocess.PIPE, stderr=subprocess.PIPE) == 0:
return True
else:
return None
def checkToolWindows(toolName):
if subprocess.call(["Where", toolName], stdout=subprocess.PIPE, stderr=subprocess.PIPE) == 0:
return True
else:
return None
def findPackageManager():
installedPackageManagerList = []
packageManagers = ["dpkg", "brew", "yum", "apt-get", "pacman", "emerge", "zypper", "dnf"]
for pmgr in packageManagers:
if checkToolLinux(pmgr):
installedPackageManagerList.append(pmgr)
return installedPackageManagerList
def packageInstalled(packageManagar, packageName):
cdlog(1, "Package Installing: "+packageName)
if subprocess.call(f'{packageManagar} {packageName}'+" -y > /dev/null 2>&1", shell=True) == 0:
cdlog(1, "Package installed Successfully")
return True
else:
cdErr("Unable to install package. \nPlease install manually : " + packageName)
def getPackageManagerCMD(packageName, installedPackageManagerList):
packageExtension = packageName.split(".")[-1]
for ipm in installedPackageManagerList:
if ipm == 'dpkg' and packageExtension == 'deb':
if packageInstalled("sudo dpkg -i", packageName):
break
elif ipm == 'apt-get':
if packageInstalled("sudo apt-get install", packageName):
break
elif ipm == 'yum':
if packageInstalled("sudo yum install", packageName):
break
elif ipm == 'pacman':
if packageInstalled("sudo pacman -S", packageName):
break
elif ipm == 'dnf':
if packageInstalled("sudo dnf install", packageName):
break
elif ipm == 'emerge':
if packageInstalled("sudo emerge -pv", packageName):
break
elif ipm == 'zypper':
if packageInstalled("sudo zypper install", packageName):
break
elif ipm == 'brew':
if packageInstalled("brew install --cask", packageName):
break
def checkAndUpgradeOSPackageVersions(packageName):
cdlog(1, f"Searching for package: {packageName}")
installedPackage = os.popen(f'apt-cache policy {packageName} | grep Installed')
if installedPackage.read():
installedPackage = os.popen(f'apt-cache policy {packageName} | grep Installed')
candidatePackage = os.popen(f'apt-cache policy {packageName} | grep Candidate')
installedVersion = installedPackage.read().split(" ")[-1].replace('\n','')
candidateVersion = candidatePackage.read().split(" ")[-1].replace('\n','')
cdlog(1, f"Candidate Package available: {candidateVersion}")
if installedVersion or installedVersion == '(none)':
if installedVersion != candidateVersion:
getPackageManagerCMD(packageName, findPackageManager())
else:
cdlog(1, f"Package already Installed: {packageName}")
else:
print(f"Unable to find package. \nPlease install manually : {packageName}")
def downloadFile(fileName, downloadURL):
checkSys.CheckPipModules({'urllib3':'1.25'})
import urllib3
try:
cdlog(1, "Downloading file: " + fileName)
http = urllib3.PoolManager()
r = http.request('GET', downloadURL, preload_content=False)
except:
cdErr("URL not found: " + downloadURL)
else:
with open(fileName, 'wb') as out:
while True:
data = r.read(1028)
if not data:
break
out.write(data)
r.release_conn()
def installPipPackage():
from sys import platform
toolName = "pip3"
downloadUrl = "https://bootstrap.pypa.io/get-pip.py"
fileName = "get-pip.py"
if platform == "linux" or platform == "linux2":
if not checkToolLinux(toolName):
getPackageManagerCMD('python3-pip', findPackageManager()) # Install PIP3
elif platform == "darwin":
if not checkToolLinux(toolName):
downloadFile(fileName, downloadUrl)
os.system('python get-pip.py') # Install PIP3
elif platform == "win32" or platform == "win64":
if not checkToolWindows(toolName):
downloadFile(fileName, downloadUrl)
os.system('py get-pip.py') # Install PIP3