Cache get_installed_libs result

This commit is contained in:
Ivan Kravets
2015-05-01 13:00:33 +01:00
parent ab9a7e05c8
commit 0a474d34d8

View File

@ -8,11 +8,10 @@ from os.path import isdir, isfile, join
from shutil import rmtree from shutil import rmtree
from tempfile import gettempdir from tempfile import gettempdir
from platformio import telemetry from platformio import telemetry, util
from platformio.downloader import FileDownloader from platformio.downloader import FileDownloader
from platformio.exception import LibAlreadyInstalledError, LibNotInstalledError from platformio.exception import LibAlreadyInstalledError, LibNotInstalledError
from platformio.unpacker import FileUnpacker from platformio.unpacker import FileUnpacker
from platformio.util import get_api_result, get_lib_dir
class LibraryManager(object): class LibraryManager(object):
@ -20,7 +19,7 @@ class LibraryManager(object):
CONFIG_NAME = ".library.json" CONFIG_NAME = ".library.json"
def __init__(self, lib_dir=None): def __init__(self, lib_dir=None):
self.lib_dir = lib_dir or get_lib_dir() self.lib_dir = lib_dir or util.get_lib_dir()
@staticmethod @staticmethod
def download(url, dest_dir): def download(url, dest_dir):
@ -33,6 +32,7 @@ class LibraryManager(object):
fu = FileUnpacker(pkgpath, dest_dir) fu = FileUnpacker(pkgpath, dest_dir)
return fu.start() return fu.start()
@util.memoized
def get_installed(self): def get_installed(self):
items = {} items = {}
if not isdir(self.lib_dir): if not isdir(self.lib_dir):
@ -49,7 +49,7 @@ class LibraryManager(object):
lib_ids = [str(item['id']) for item in self.get_installed().values()] lib_ids = [str(item['id']) for item in self.get_installed().values()]
if not lib_ids: if not lib_ids:
return None return None
return get_api_result("/lib/version/" + str(",".join(lib_ids))) return util.get_api_result("/lib/version/" + str(",".join(lib_ids)))
def get_outdated(self): def get_outdated(self):
outdated = [] outdated = []
@ -75,8 +75,10 @@ class LibraryManager(object):
if self.is_installed(id_): if self.is_installed(id_):
raise LibAlreadyInstalledError() raise LibAlreadyInstalledError()
dlinfo = get_api_result("/lib/download/" + str(id_), dlinfo = util.get_api_result(
dict(version=version) if version else None) "/lib/download/" + str(id_),
dict(version=version) if version else None
)
dlpath = None dlpath = None
tmplib_dir = join(self.lib_dir, str(id_)) tmplib_dir = join(self.lib_dir, str(id_))
try: try: