def _get_icon_from_snap_file(snap_path): icon_file = None with tempfile.TemporaryDirectory() as temp_dir: unsquashfs_path = get_tool_path("unsquashfs") try: output = subprocess.check_output( [ unsquashfs_path, "-d", os.path.join(temp_dir, "squashfs-root"), snap_path, "-e", "meta/gui", ] ) except subprocess.CalledProcessError: raise SnapDataExtractionError(os.path.basename(snap_path)) logger.debug("Output extracting icon from snap: %s", output) for extension in ("png", "svg"): icon_name = "icon.{}".format(extension) icon_path = os.path.join(temp_dir, "squashfs-root", "meta/gui", icon_name) if os.path.exists(icon_path): icon_file = open(icon_path, "rb") break try: yield icon_file finally: if icon_file is not None: icon_file.close()
def _get_data_from_snap_file(snap_path): with tempfile.TemporaryDirectory() as temp_dir: unsquashfs_path = get_tool_path("unsquashfs") try: output = subprocess.check_output([ unsquashfs_path, "-d", os.path.join(temp_dir, "squashfs-root"), snap_path, "-e", os.path.join("meta", "snap.yaml"), ]) except subprocess.CalledProcessError: raise SnapDataExtractionError(os.path.basename(snap_path)) logger.debug(output) with open(os.path.join(temp_dir, "squashfs-root", "meta", "snap.yaml")) as yaml_file: snap_yaml = yaml_utils.load(yaml_file) return snap_yaml