EMF_Camp_Badge/review_helper/main.py

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()