Skip to content

Create unpacker protocol + ext4 unpacker#151

Merged
adityaramani merged 3 commits intoapple:mainfrom
adityaramani:unpacker
Jun 30, 2025
Merged

Create unpacker protocol + ext4 unpacker#151
adityaramani merged 3 commits intoapple:mainfrom
adityaramani:unpacker

Conversation

@adityaramani
Copy link
Contributor

Creates a new Unpacker protocol that defines a single method

func unpack(_ image: Image, for platform: Platform, at path: URL, progress: ProgressHandler?) async throws -> Mount

This change also removes the unpack(...) method from the Image type.

Before

let mount = try await image.unpack(for: platform, at: path)

After

let unpacker = EXT4Unpacker(blockSizeInBytes: 2.gib())
let mount = try await unpacker.unpack(image, for: platform, at: path)

guard let unpackPath else {
return
}
guard !FileManager.default.fileExists(atPath: unpackPath) else {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this also returns true if the path is a directory, do we still want to error?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I changed the wording to say that --unpack-path should be a new directory and updated the error to match

Copy link
Member

@dcantah dcantah left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great :)

Signed-off-by: Aditya Ramani <a_ramani@apple.com>
Signed-off-by: Aditya Ramani <a_ramani@apple.com>
Signed-off-by: Aditya Ramani <a_ramani@apple.com>
@adityaramani adityaramani merged commit bdba5b5 into apple:main Jun 30, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants