bitbake: toaster: lsupdates Add spinner for parsing/http fetch
Adds a spinner so that you know that the parse and http fetch from the layerindex is in progress. (Bitbake rev: e1c1c8827f3892551084bf1c0909c1b33f0dca83) Signed-off-by: Michael Wood <michael.g.wood@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
33a4006529
commit
49039829e1
|
@ -29,11 +29,33 @@ import sys
|
|||
|
||||
import json
|
||||
import logging
|
||||
import threading
|
||||
import time
|
||||
logger = logging.getLogger("toaster")
|
||||
|
||||
DEFAULT_LAYERINDEX_SERVER = "http://layers.openembedded.org/layerindex/api/"
|
||||
|
||||
|
||||
class Spinner(threading.Thread):
|
||||
""" A simple progress spinner to indicate download/parsing is happening"""
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(Spinner, self).__init__(*args, **kwargs)
|
||||
self.setDaemon(True)
|
||||
self.signal = True
|
||||
|
||||
def run(self):
|
||||
os.system('setterm -cursor off')
|
||||
while self.signal:
|
||||
for char in ["/", "-", "\\", "|"]:
|
||||
sys.stdout.write("\r" + char)
|
||||
sys.stdout.flush()
|
||||
time.sleep(0.25)
|
||||
os.system('setterm -cursor on')
|
||||
|
||||
def stop(self):
|
||||
self.signal = False
|
||||
|
||||
|
||||
class Command(NoArgsCommand):
|
||||
args = ""
|
||||
help = "Updates locally cached information from a layerindex server"
|
||||
|
@ -55,6 +77,7 @@ class Command(NoArgsCommand):
|
|||
Fetches layer, recipe and machine information from a layerindex
|
||||
server
|
||||
"""
|
||||
os.system('setterm -cursor off')
|
||||
|
||||
self.apiurl = DEFAULT_LAYERINDEX_SERVER
|
||||
|
||||
|
@ -70,6 +93,9 @@ class Command(NoArgsCommand):
|
|||
oe_core_layer = 'openembedded-core'
|
||||
|
||||
def _get_json_response(apiurl=DEFAULT_LAYERINDEX_SERVER):
|
||||
http_progress = Spinner()
|
||||
http_progress.start()
|
||||
|
||||
_parsedurl = urlparse(apiurl)
|
||||
path = _parsedurl.path
|
||||
|
||||
|
@ -79,7 +105,10 @@ class Command(NoArgsCommand):
|
|||
except URLError as e:
|
||||
raise Exception("Failed to read %s: %s" % (path, e.reason))
|
||||
|
||||
return json.loads(res.read().decode('utf-8'))
|
||||
parsed = json.loads(res.read().decode('utf-8'))
|
||||
|
||||
http_progress.stop()
|
||||
return parsed
|
||||
|
||||
# verify we can get the basic api
|
||||
try:
|
||||
|
@ -293,5 +322,7 @@ class Command(NoArgsCommand):
|
|||
|
||||
self.mini_progress("recipes", i, total)
|
||||
|
||||
os.system('setterm -cursor on')
|
||||
|
||||
def handle_noargs(self, **options):
|
||||
self.update()
|
||||
self.update()
|
||||
|
|
Loading…
Reference in New Issue