def update_alpine_packages(): versions = get_versions() alpine = f"v{versions['base']['alpine'][:-2]}" for package in versions["alpine"]: current = versions["alpine"][package] new = sorted(get_package(package, alpine)["versions"]).pop() if current != new: versions = get_versions() print(f"Updating {package} from {current} to {new}") versions["alpine"][package] = new save_versions(versions)
def update_apk(self): """Get APK packages in use with updates.""" file = "{}/Dockerfile".format(self.name) remote_file = self.get_file_obj(file) masterfile = self.get_file_content(remote_file) run = masterfile.split('RUN')[1].split('LABEL')[0] packages = [] updates = [] if 'apk' in run: cmds = run.split('&&') for cmd in cmds: if 'apk add' in cmd: all_apk_lines = cmd.replace(' ', '').split('\\\n') for pkg in all_apk_lines: if '=' in pkg: if '@legacy' in pkg: package = pkg.split('@')[0] branch = 'v3.7' elif '@edge' in pkg: package = pkg.split('@')[0] branch = 'edge' else: package = pkg.split('=')[0] branch = 'v3.8' version = pkg.split('=')[1] this = { 'package': package, 'branch': branch, 'version': version, 'search_string': pkg } packages.append(this) for pkg in packages: if 'apkadd--no-cache' in pkg['package']: pack = pkg['package'].replace('apkadd--no-cache', "") else: pack = pkg['package'] if self.verbose: print("Checking versions for", pack) data = get_package(pack, pkg['branch']) package = data['package'] if len(data['versions']) == 1: version = data['versions'][0] else: version = data['x86_64']['version'] # Fallback to x86_64 if self.verbose: print("Current version", pkg['version']) print("Available version", pkg['version']) if version.split()[0] != pkg['version'].split()[0]: this = { 'package': package, 'version': version, 'search_string': pkg['search_string'] } updates.append(this) else: print(pack, "Allready have the newest version", version) if updates: for package in updates: msg = COMMIT_MSG.format(package['package'], package['version']) file = "{}/Dockerfile".format(self.name) remote_file = self.get_file_obj(file) search_string = package['search_string'].split('=') replace_string = search_string[0] + '=' + package['version'] find_string = package['search_string'].split()[0] if self.verbose: print("Find string '" + find_string + "'") print("Replace with '" + replace_string + "'") new_content = self.get_file_content(remote_file) new_content = new_content.replace(find_string, replace_string) self.commit(file, msg, new_content, remote_file.sha)
def cli(package, branch): """CLI for this package.""" print(json.dumps(get_package(package, branch), indent=4, sort_keys=True))
def version_alpine(pkg): try: return get_package(pkg)["x86_64"]["version"] except Exception as e: print(f"Could not get version for {pkg} - {e}") return None
def cli(package, branch): """CLI for this package.""" from alpinepkgs.packages import get_package print(json.dumps(get_package(package, branch), indent=4, sort_keys=True))