Initial install method implementation
This commit is contained in:
parent
c339f1ea08
commit
2ebc84ca2c
3 changed files with 47 additions and 9 deletions
37
mc-get.py
37
mc-get.py
|
|
@ -1,18 +1,45 @@
|
|||
import argparse
|
||||
import api
|
||||
import mcfs
|
||||
import npyscreen
|
||||
import os
|
||||
|
||||
def validate():
|
||||
pass
|
||||
|
||||
def version_selector_GUI(vers:list, project:str):
|
||||
def form(*args):
|
||||
F = npyscreen.Form(name=f"Select {project} version")
|
||||
sel = F.add(npyscreen.TitleSelectOne, value=[1,], name="versions:",\
|
||||
values=[ver.version_number + " for " +\
|
||||
", ".join(ver.game_versions)\
|
||||
for ver in vers[::-1]], scroll_exit=True)
|
||||
F.edit()
|
||||
for ver in vers:
|
||||
if ver.version_number == sel.get_selected_objects()[0].split()[0]:
|
||||
return ver
|
||||
return vers[0]
|
||||
return form
|
||||
|
||||
def install(projects:list):
|
||||
to_install = []
|
||||
for project in projects:
|
||||
project_data = api.project(project=project)
|
||||
version = api.version(version=project_data.versions[0])
|
||||
file = version.files[0].get("url", "NO URL")
|
||||
print(file)
|
||||
api.download(file, version.files[0].get("size", 0))
|
||||
to_install.append(project_data)
|
||||
for project in to_install:
|
||||
versions = api.versions(ids=str(project.versions).replace("'", '"')) #i hate this
|
||||
version = npyscreen.wrapper_basic(version_selector_GUI(versions,\
|
||||
project.slug))
|
||||
file = type("mc_file", (object, ), version.files[0])
|
||||
filename = file.url.split("/")[-1]
|
||||
cache_file_path = os.path.join(mcfs.cache_dir, filename)
|
||||
if not mcfs.is_path_exist(mcfs.cache_dir):
|
||||
os.mkdir(mcfs.cache_dir)
|
||||
if not mcfs.is_path_exist(cache_file_path):
|
||||
api.download(file.url, file.size, cache_file_path)
|
||||
else:
|
||||
print(f"{filename} is in cache.")
|
||||
mcfs.install(filename)
|
||||
|
||||
def search():
|
||||
pass
|
||||
|
|
@ -29,7 +56,7 @@ validate - validate mods installation\n search - search mods'''
|
|||
args = parser.parse_args()
|
||||
match args.method:
|
||||
case "install":
|
||||
pass
|
||||
install(args.method_args)
|
||||
case "search":
|
||||
search()
|
||||
case "validate":
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue