Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update Ruby Install Layer to Struct API and bullet stream output #325

Merged
merged 9 commits into from
Sep 24, 2024

Conversation

schneems
Copy link
Contributor

Commits should be stand-alone.

The `Changed` struct limits us to a single reason for a change. By using a vec we can list all changes. There will be some redundancy in the output if multiple layers are keyed to the same values (such as distro name or distro version). That might be okay, or we could try storing common information in its own layer up front, and printing that information once (the specific values) and then later we could say "distro version changed" rather than "distro verision changed (22.04 to 24.04)".
Changing the logging will be it's own commit.
The explicit check if the old and new metadata structs were equal isn't needed since I'm already comparing each individual element and have logic to return `None` if they're the same.
@schneems schneems requested a review from a team as a code owner September 23, 2024 19:58
@schneems schneems marked this pull request as draft September 23, 2024 19:58
@schneems schneems marked this pull request as ready for review September 23, 2024 20:05
Copy link
Contributor

@runesoerensen runesoerensen 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! I left one comment, but feel free to merge as-is.

buildpacks/ruby/src/layers/ruby_install_layer.rs Outdated Show resolved Hide resolved
Discussion #325 (comment). Some([]) (empty vec) is a possible state from the type signature `Option<Vec<String>>` the state of Some/None is ambiguous without more information from the function. This code is easier to accidentally use the wrong logic in the consumer, but the correct implementation checks the direct properties we desire instead of relying on internal implementation of a function.

We could alternatively introduce a non-empty vector, there are several crates that provide this, but it's more overhead that needed here.
@schneems schneems force-pushed the schneems/update-ruby-install-layer-v3 branch from 60f60b0 to 6e2190d Compare September 24, 2024 23:31
@schneems schneems merged commit d8a1d0a into main Sep 24, 2024
7 checks passed
@schneems schneems deleted the schneems/update-ruby-install-layer-v3 branch September 24, 2024 23:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants