-
-
Notifications
You must be signed in to change notification settings - Fork 229
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
Refactor filesystem abstraction to and use it in production #2944
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
✅ PR OK, no changes in deprecations or warnings Total deprecations: 0 Total warnings: 0 Build statistics: statistics (-before, +after)
-executable size=5263712 bin/dub
-rough build time=60s
+executable size=5289208 bin/dub
+rough build time=61s Full build output
|
This way we avoid a call to getcwd.
The filesystem abstraction needs to be known to production to avoid too much code duplication. So far we have used functions in `PackageManager` that the `TestPackageManager overrides. With this change, we can remove them, and instead just pass an interface. On the long run, we should be able to do dependency injection simply by passing a different object (or overriding) the `Dub` class. An initial attempt made `FSEntry` inherit from the `Filesystem` interface, however that attempt was doomed as it conflates two different abstractions: `FSEntry` is a "node" in the filesystem, which we want to act on in one of multiple ways: move to another node, or take an action. On the other hand, `Filesystem` is a more generic interface and takes a path as most of its function's argument. A `path` and an `FSEntry` have a lot of overlap (they are a reference to a node in a tree) and the resulting interface would have been very clunky.
Hoist the lookup from FSEntry to MockFS to reduce the duplication.
The string overload is just a convenience function and there is little chance that it wll ever need to be overloaded.
thewilsonator
approved these changes
Jun 25, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Extracted from #2941