Skip to content

Commit

Permalink
BE: standarize import paths
Browse files Browse the repository at this point in the history
  • Loading branch information
yeikel committed Dec 23, 2024
1 parent d5c976e commit e8c07c6
Showing 1 changed file with 21 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@
import javax.annotation.Nullable;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.SystemUtils;
import org.jetbrains.annotations.NotNull;

@Slf4j
Expand Down Expand Up @@ -399,6 +400,7 @@ private Loader createFilesLoader(Map<String, ProtoFile> files) {
return new Loader() {
@Override
public @NotNull ProtoFile load(@NotNull String path) {
//path = path.replace("/","\\");
return Preconditions.checkNotNull(files.get(path), "ProtoFile not found for import '%s'", path);
}

Expand All @@ -416,7 +418,7 @@ private Map<String, ProtoFile> loadFilesWithLocations() {
files.filter(p -> !Files.isDirectory(p) && p.toString().endsWith(".proto"))
.forEach(path -> {
// relative path will be used as "import" statement
String relativePath = baseLocation.relativize(path).toString();
String relativePath = removeBackSlashes(baseLocation.relativize(path).toString());
var protoFileElement = ProtoParser.Companion.parse(
Location.get(baseLocation.toString(), relativePath),
readFileAsString(path)
Expand All @@ -426,6 +428,24 @@ private Map<String, ProtoFile> loadFilesWithLocations() {
}
return filesByLocations;
}

/**
* Replaces backslashes in the given file path with forward slashes if the operating system is Windows.
*
* <p>This method is designed to standardize file paths by converting Windows-style backslashes (`\`)
* to Linux/Unix-style forward slashes (`/`) when the application is running on a Windows OS.
* On other operating systems, the input path is returned unchanged.</p>
* This is needed because imports in Protobuf use forward slashes (`/`) for the imports
*
* @param path the file path to standardize; must not be {@code null}.
* @return the standardized file path with forward slashes if running on Windows, or the original path otherwise.
*/
private @NotNull String removeBackSlashes(@NotNull final String path) {
if (SystemUtils.IS_OS_WINDOWS) {
return path.replace("\\", "/");
}
return path;
}
}

}

0 comments on commit e8c07c6

Please sign in to comment.