Support Go module fallback for nested package paths #259
+38
−7
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.
I'm trying to set up a mirror for mvdan.cc/sh/v3/cmd/shfmt/ but the actual module is mvdan.cc/sh/v3 (there are a couple tools in the module).
go installitself ultimately resolves this by trying to take the longest path and truncating until the module is found:https://go.dev/ref/mod#resolve-pkg-mod
(I am not implementing the entirety of Go module resolution here, just taking the longest non-404 path, since I imagine this approach works for most cases.)
Tested the change locally by creating a mirror with
pre-commit-mirror . --language=golang --package-name=mvdan.cc/sh/v3/cmd/shfmt --types=shell --entry=shfmt --args='-w', then I ran it on a shell file and confirmed the file was formatted.