def install(self, with_packages=None, without_packages=None, skip_default_packages=False): with_packages = set( self.pkg_aliases_to_names(with_packages or [])) without_packages = set( self.pkg_aliases_to_names(without_packages or [])) upkgs = with_packages | without_packages ppkgs = set(self.get_packages().keys()) if not upkgs.issubset(ppkgs): raise exception.UnknownPackage(", ".join(upkgs - ppkgs)) requirements = [] for name, opts in self.get_packages().items(): if name in without_packages: continue elif (name in with_packages or (not skip_default_packages and opts.get("default"))): requirements.append(name) pm = PackageManager() for name in requirements: pm.install(name) # register installed platform data = get_state_item("installed_platforms", []) if self.get_type() not in data: data.append(self.get_type()) set_state_item("installed_platforms", data) return len(requirements)
def uninstall(self): platform = self.get_type() installed_platforms = PlatformFactory.get_platforms( installed=True).keys() if platform not in installed_platforms: raise exception.PlatformNotInstalledYet(platform) deppkgs = set() for item in installed_platforms: if item == platform: continue p = PlatformFactory.newPlatform(item) deppkgs = deppkgs.union(set(p.get_packages().keys())) pm = PackageManager() for name in self.get_packages().keys(): if not pm.is_installed(name) or name in deppkgs: continue pm.uninstall(name) # unregister installed platform installed_platforms.remove(platform) set_state_item("installed_platforms", installed_platforms) return True
def uninstall(self): platform = self.get_name() pm = PackageManager(platform) for package, data in pm.get_installed(platform).items(): pm.uninstall(package, data['path']) pm.unregister_platform(platform) rmtree(pm.get_platform_dir()) return True
def cli(platform): p = PlatformFactory().newPlatform(platform) if platform not in PackageManager.get_installed(): raise PlatformNotInstalledYet(platform) # print info about platform echo("{name:<20} - {info}".format(name=style(p.get_name(), fg="cyan"), info=p.get_short_info())) pm = PackageManager(platform) for name, data in pm.get_installed(platform).items(): pkgalias = p.get_pkg_alias(name) echo("----------") echo("Package: %s" % style(name, fg="yellow")) if pkgalias: echo("Alias: %s" % pkgalias) echo("Location: %s" % join(pm.get_platform_dir(), data['path'])) echo("Version: %d" % int(data['version']))
def install(self, with_packages, without_packages, skip_default_packages): with_packages = set(self.pkg_aliases_to_names(with_packages)) without_packages = set(self.pkg_aliases_to_names(without_packages)) upkgs = with_packages | without_packages ppkgs = set(self.PACKAGES.keys()) if not upkgs.issubset(ppkgs): raise UnknownPackage(", ".join(upkgs - ppkgs)) requirements = [] for name, opts in self.PACKAGES.items(): if name in without_packages: continue elif (name in with_packages or (not skip_default_packages and opts['default'])): requirements.append((name, opts['path'])) pm = PackageManager(self.get_name()) for (package, path) in requirements: pm.install(package, path) return len(requirements)
def is_outdated(self): pm = PackageManager() obsolated = pm.get_outdated() return not set(self.get_packages().keys()).isdisjoint(set(obsolated))
def update(self): pm = PackageManager() for name in self.get_installed_packages(): pm.update(name)
def get_installed_packages(self): pm = PackageManager() return [n for n in self.get_packages().keys() if pm.is_installed(n)]
def update(self): platform = self.get_name() pm = PackageManager(platform) for package in pm.get_installed(platform).keys(): pm.update(package)