Пример #1
0
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)
Пример #2
0
    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)
Пример #3
0
def cli(package, branch):
    """CLI for this package."""
    print(json.dumps(get_package(package, branch), indent=4, sort_keys=True))
Пример #4
0
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
Пример #5
0
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))