def package_search(name): utils.readConf() pkgs = plugin.Plugin(name[0]) pkgs.getAvailablePackages() pluginName = [] releaseMode = [] version = [] compatible = [] for iRpkg in sorted(pkgs.packagesInfo): data = iRpkg.toTabulate() pluginName.append(data[0]) releaseMode.append(data[1]) version.append(data[2]) compatible.append(data[3]) table = [ { "title": "Plugin Name", "value": pluginName }, { "title": "Release Mode", "value": releaseMode }, { "title": "Version", "value": version }, { "title": "Compatible", "value": compatible }, ] print(utils.dictToAsciiTable(table))
def update_licenses(quiet=False): utils.readConf() url = utils.URL.rstrip("/") + "/licenses" r = requests.get(url, auth=(utils.USERNAME, utils.PASSWORD)) htmlElements = html.document_fromstring(r.text) htmlElements.make_links_absolute(url + "/", resolve_base_href=True) folderPattern = re.compile(url + '/[a-z0-9\-]+/') downloadPattern = re.compile('\S+\.(license|key)') # Filter to only keep folders licenseFolders = list( filter(lambda x: folderPattern.match(x), [elem[2] for elem in htmlElements.iterlinks()])) if len(licenseFolders) == 0: logger.info("No license files found!") else: # Find the .licence and .key files under each folder for folderUrl in set(licenseFolders): r = requests.get(folderUrl, auth=(utils.USERNAME, utils.PASSWORD)) htmlElements = html.document_fromstring(r.text) htmlElements.make_links_absolute(folderUrl + "/", resolve_base_href=True) for link in set([elem[2] for elem in htmlElements.iterlinks()]): match = downloadPattern.search(link) if match is not None: logger.info("downloading %s" % (link)) utils.download( link, utils.LICENCES_PATH + "/" + os.path.basename(link), quiet)
def package_list_name(): utils.readConf() pluginDict = utils.list_plugin_name() pluginName = [] shortName = [] latestRelease = [] description = [] for p in pluginDict.keys(): if utils.check_download(utils.URL + "/" + utils.RUDDER_VERSION + "/" + str(pluginDict[p][0])): pluginName.append(str(p)) shortName.append(str(pluginDict[p][0])) description.append(str(pluginDict[p][1])) pkgs = plugin.Plugin(p) pkgs.getAvailablePackages() try: latestVersion = pkgs.getLatestCompatibleRelease().version.pluginLongVersion except: latestVersion = "" latestRelease.append(latestVersion) table = [ { "title": "Plugin Name" , "value": pluginName }, { "title": "Plugin Short Name", "value": shortName }, { "title": "Description" , "value": description }, { "title": "Latest release" , "value": latestRelease } ] print(utils.dictToAsciiTable(table))
def package_install_specific_version(name, longVersion, mode="release"): utils.readConf() pkgs = plugin.Plugin(name[0]) pkgs.getAvailablePackages() rpkg = pkgs.getRpkgByLongVersion(longVersion, mode) if rpkg is not None: rpkgPath = utils.downloadByRpkg(rpkg) install_file([rpkgPath]) else: utils.fail("Could not find any package for %s in version %s"%(name, longVersion))
def package_install_latest(name, mode="release"): utils.readConf() pkgs = plugin.Plugin(name[0]) pkgs.getAvailablePackages() if mode == "release": rpkg = pkgs.getLatestCompatibleRelease() else: rpkg = pkgs.getLatestCompatibleNightly() if rpkg is not None: rpkgPath = utils.downloadByRpkg(rpkg) install_file([rpkgPath]) utils.fail("Could not find any compatible %s for %s"%(mode, name))
def package_show(name, version, mode): utils.readConf() pkgs = plugin.Plugin(name[0]) pkgs.getAvailablePackages() if version != "": rpkg = pkgs.getRpkgByLongVersion(version, mode) else: if mode == "release": rpkg = pkgs.getLatestCompatibleRelease() else: rpkg = pkgs.getLatestCompatibleNightly() if rpkg is not None: rpkg.show_metadata() else: utils.fail("Could not find any package in %s for %s" % (mode, name))
def update(): utils.readConf() logging.debug('Updating the index') utils.getRudderKey() # backup the current indexFile if it exists logging.debug("backuping %s in %s"%(utils.INDEX_PATH, utils.INDEX_PATH + ".bkp")) if os.path.isfile(utils.INDEX_PATH): os.rename(utils.INDEX_PATH, utils.INDEX_PATH + ".bkp") try: utils.download(utils.URL + "/" + "rpkg.index") except Exception as e: traceback.print_exc(file=sys.stdout) if os.path.isfile(utils.INDEX_PATH + ".bkp"): logging.debug("restoring %s from %s"%(utils.INDEX_PATH, utils.INDEX_PATH + ".bkp")) os.rename(utils.INDEX_PATH + ".bkp", utils.INDEX_PATH) utils.fail(e)