@Nullable public static VirtualFile findGitDir(@NotNull VirtualFile rootDir) { VirtualFile child = rootDir.findChild(DOT_GIT); if (child == null) { return null; } if (child.isDirectory()) { return child; } // this is standard for submodules, although probably it can String content; try { content = readFile(child); } catch (IOException e) { throw new RuntimeException("Couldn't read " + child, e); } String pathToDir; String prefix = "gitdir:"; if (content.startsWith(prefix)) { pathToDir = content.substring(prefix.length()).trim(); } else { pathToDir = content; } if (!FileUtil.isAbsolute(pathToDir)) { String canonicalPath = FileUtil.toCanonicalPath(FileUtil.join(rootDir.getPath(), pathToDir)); if (canonicalPath == null) { return null; } pathToDir = FileUtil.toSystemIndependentName(canonicalPath); } return VcsUtil.getVirtualFileWithRefresh(new File(pathToDir)); }
@Nullable public String getWorkingDir( CommonProgramRunConfigurationParameters configuration, Project project, Module module) { String workingDirectory = configuration.getWorkingDirectory(); String defaultWorkingDir = getDefaultWorkingDir(project); if (workingDirectory == null || workingDirectory.trim().length() == 0) { workingDirectory = defaultWorkingDir; } if (workingDirectory == null) return null; workingDirectory = expandPath(workingDirectory, module, project); if (!FileUtil.isAbsolute(workingDirectory) && defaultWorkingDir != null) { if (("$" + PathMacroUtil.MODULE_DIR_MACRO_NAME + "$").equals(workingDirectory)) { return defaultWorkingDir; } workingDirectory = defaultWorkingDir + "/" + workingDirectory; } return workingDirectory; }
public Path toPath(String path) { if (!FileUtil.isAbsolute(path)) { path = new File(myMavenProject.getDirectory(), path).getPath(); } return new Path(path); }