62 lines
1.9 KiB
Python
62 lines
1.9 KiB
Python
"""Helps to test incoming PRs"""
|
|
|
|
___title___ = "PR Review Helper"
|
|
___license___ = "MIT"
|
|
___categories___ = ["System"]
|
|
___dependencies___ = ["dialogs", "app", "ugfx_helper", "badge_store", "http", "stack_nav", "wifi"]
|
|
|
|
import ugfx_helper, ugfx, wifi
|
|
from app import *
|
|
from dialogs import *
|
|
from stack_nav import *
|
|
from lib.badge_store import BadgeStore
|
|
|
|
title = "PR Review Helper"
|
|
|
|
def install(state):
|
|
apps = set()
|
|
with WaitingMessage(title="Fetching apps", text="Please wait...") as message:
|
|
for category, a in state["store"].get_all_apps().items():
|
|
apps.update(a)
|
|
|
|
menu_items = [{"title": a, "app": a} for a in apps]
|
|
|
|
option = prompt_option(menu_items, none_text="Back", title="title")
|
|
|
|
if option:
|
|
state["app"] = option
|
|
return show_app
|
|
|
|
def show_app(state):
|
|
a = state["app"]["app"]
|
|
with WaitingMessage(title="Installing %s" % a, text="Please wait...") as message:
|
|
apps_to_install = []#[a.name for a in get_apps()]
|
|
apps_to_install.append(a)
|
|
print(apps_to_install)
|
|
installers = state["store"].install(apps_to_install)
|
|
n = len(installers)
|
|
for i, installer in enumerate(installers):
|
|
message.text = "%s (%s/%s)" % (installer.path, i + 1, n)
|
|
installer.download()
|
|
|
|
notice("App %s has been successfully installed" % a, title=title, close_text="Run it!")
|
|
App(a).boot()
|
|
|
|
def entry_point(state):
|
|
url = database.get("badge_store.url", "http://badgeserver.emfcamp.org/2018")
|
|
repo = database.get("badge_store.repo", "emfcamp/Mk4-Apps")
|
|
store = BadgeStore(url=url, repo=repo)
|
|
|
|
prs = store.get_prs()
|
|
selection = prompt_option(prs, text="Select PR", none_text="Exit", title=title)
|
|
if selection:
|
|
state["store"] = BadgeStore(url=url, repo=repo, ref=selection["ref"])
|
|
return install
|
|
|
|
|
|
### ENTRY POINT ###
|
|
ugfx_helper.init()
|
|
wifi.connect(show_wait_message=True)
|
|
nav(entry_point)
|
|
app.restart_to_default()
|