-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathmanager.py
80 lines (61 loc) · 2.73 KB
/
manager.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
import sys
sys.dont_write_bytecode = True
import os
import requests
import urllib.request
import json
from console import console
dir_path = os.path.dirname(os.path.realpath(__file__))
class PackageManager:
def __init__(self) -> None:
self.repository = 'https://api.github.com/repos/daniel-kenan/pseudoblocks/contents/Test%20Cases'
self.packages = os.listdir(f'{dir_path}\\Test Cases')
self.totalPackages = len(self.packages)
self.args = sys.argv[1:]
def main(self):
args = list(map(lambda x : x.lower().strip(),self.args))
if not len(args): print('pseu is a testcase manager')
elif args[0] == "global": self.listglobalCases()
elif args[0] == "update": self.update()
elif args[0] == "local" : self.listlocalCases()
elif args[0] == "download": self.download()
elif args[0] == "delete" : pass
else : console('invalid command',color="RED")
def listlocalCases(self):
console('\nBelow are a list of testcases available on your computer\n\n',color="LIGHTWHITE_EX")
for key,package in enumerate(self.packages):
print(key,package,sep=". ")
def download(self):
self.update()
name = sys.argv[1:][1]
if name == "-recent": pass
with open(dir_path+'\\library.json','r') as library:
data = json.load(library)
url_ = data[f'{name}']
url_ = requests.get(url_)
files = url_.json()
package = name
if name == "-recent" or not os.path.isdir(dir_path+"\\Test Cases\\"+package):
os.makedirs(dir_path+"\\Test Cases\\"+package)
for file in files :
name = file['name']
urldld = file['download_url']
urllib.request.urlretrieve(urldld,dir_path+'\\Test Cases\\' + package+ '\\'+file['name'])
console(f"Downloaded {package} testcase",color='GREEN')
def update(self):
fetch = requests.get(self.repository)
packages = fetch.json()
totalPackages = len(packages)
with open(dir_path+'\\library.json','w') as library:
contents = {}
for package in packages:
name , url = package['name'], package['url']
contents[name] = url
json.dump(contents, library)
def listglobalCases(self):
console('\nBelow are a list of testcases available online\n\n',color="LIGHTWHITE_EX")
fetch = requests.get(self.repository)
packages = fetch.json()
for number,package in enumerate(packages):
print(number,package['name'],sep='. ')
PackageManager().main()