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 a9bc82c commit c62d11b
Showing 1 changed file with 20 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 @@ -416,7 +417,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 +427,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 c62d11b

Please sign in to comment.