def extract_packages_from_patch_data()

in src/core/src/package_managers/ZypperPackageManager.py [0:0]


    def extract_packages_from_patch_data(self, output):
        """Returns packages (sometimes with version information embedded) from patch data"""
        self.composite_logger.log_debug("[ZPM] Extracting package entries from security patch data...")
        packages = []
        parser_seeing_packages_flag = False

        lines = output.strip().split('\n')
        for line in lines:
            if not parser_seeing_packages_flag:
                if 'package is going to be installed' in line or 'package is going to be upgraded' in line or \
                        'packages are going to be installed:' in line or 'packages are going to be upgraded:' in line:
                    self.composite_logger.log_verbose("[ZPM] > Start marker line: " + line)
                    parser_seeing_packages_flag = True  # Start -- Next line contains information we need
                else:
                    self.composite_logger.log_verbose("[ZPM] > Inapplicable line: " + line)
                continue

            if not line or line.isspace():
                self.composite_logger.log_verbose("[ZPM] > End marker line: " + line)
                parser_seeing_packages_flag = False
                continue  # End -- We're past a package information block

            line_parts = line.strip().split(' ')
            self.composite_logger.log_verbose("[ZPM] > Package list line: " + line)
            for line_part in line_parts:
                packages.append(line_part)
                self.composite_logger.log_verbose("    - Package: " + line_part)

        self.composite_logger.log_verbose("[ZPM] Extracted " + str(len(packages)) + " prospective package entries from security patch data.\n")
        return packages