-
Notifications
You must be signed in to change notification settings - Fork 123
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
Allow retrieval of the "relative file path" from the source link map #699
base: main
Are you sure you want to change the base?
Conversation
It can be helpful for consumers of the Source Link to know what portion of the file path provided to the query is substituted into the URL. One example is for building a heuristic file path on disk to store the downloaded source link file to. This relative path can give end users more context on where the file is located in the original repository. This change add a new TryGetUri overload that provides the "relative file path" as another out param. It also updates the tests to add coverage for this.
cc @tmat |
return true; | ||
} | ||
} | ||
else if (string.Equals(path, file.Path, StringComparison.OrdinalIgnoreCase)) | ||
{ | ||
Debug.Assert(mappedUri.Suffix.Length == 0); | ||
relativeFilePath = Path.GetFileName(file.Path); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@tmat Mac tests don't like this because the test input is windows style paths and I'm assuming Path.GetFileName(...) looks for forward slashes on that OS.
should this just be something like
int lastSeparatorIndex = file.Path.LastIndexOfAny(new[] { '\\', '/' });
relativeFilePath = lastSeparatorIndex > 0 ? file.Path.Substring(lastSeparatorIndex + 1) : file.Path;
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, can't use GetFileName.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we set relativeFilePath = null
here? Since there is no relative path... the caller can use the file name, if they want to.
/// Maps specified <paramref name="path"/> to the corresponding URL. | ||
/// </summary> | ||
/// <exception cref="ArgumentNullException"><paramref name="path"/> is null.</exception> | ||
public bool TryGetUri( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add doc comment for relativeFilePath
It can be helpful for consumers of the Source Link to know what portion
of the file path provided to the query is substituted into the URL. One
example is for building a heuristic file path on disk to store the
downloaded source link file to. This relative path can give end users
more context on where the file is located in the original repository.
This change add a new TryGetUri overload that provides the "relative
file path" as another out param. It also updates the tests to add
coverage for this.