Skip to content

Commit a34d77e

Browse files
authored
Merge pull request #39 from WalterWoshid/fixes
fix: convert file paths to workspace-relative paths
2 parents 387a3f0 + a7ce747 commit a34d77e

2 files changed

Lines changed: 25 additions & 5 deletions

File tree

src/main/kotlin/com/github/xepozz/mago/config/MagoSchemaHolder.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,8 @@ class MagoSchemaHolder(val project: Project) {
2222
if (run) return
2323
run = true
2424

25-
val magoConfiguration = MagoProjectConfiguration
26-
.getInstance(project)
27-
.findSelectedConfiguration(project)
25+
val magoConfiguration = MagoProjectConfiguration.getInstance(project)
26+
.run { findConfigurationById(selectedConfigurationId, project) }
2827
?: return
2928

3029
ApplicationManager.getApplication().executeOnPooledThread {

src/main/kotlin/com/github/xepozz/mago/qualityTool/MagoAnnotatorProxy.kt

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@ import com.intellij.codeInspection.InspectionProfile
55
import com.intellij.execution.configurations.ParametersList
66
import com.intellij.openapi.diagnostic.Logger
77
import com.intellij.openapi.project.Project
8+
import com.intellij.openapi.util.io.FileUtil
89
import com.intellij.psi.PsiFile
910
import com.jetbrains.php.tools.quality.QualityToolAnnotator
1011
import com.jetbrains.php.tools.quality.QualityToolAnnotatorInfo
1112
import com.jetbrains.php.tools.quality.QualityToolConfiguration
13+
import java.io.File
1214

1315
open class MagoAnnotatorProxy : QualityToolAnnotator<MagoValidationInspection>() {
1416
companion object {
@@ -22,7 +24,8 @@ open class MagoAnnotatorProxy : QualityToolAnnotator<MagoValidationInspection>()
2224
addConfig(project, settings)
2325

2426
add("fmt")
25-
addAll(files)
27+
files.map { toWorkspaceRelativePath(project, it) }
28+
.forEach { add(it) }
2629
}
2730
.plus(ParametersList.parse(settings.formatAdditionalParameters))
2831
.apply { println("format options: ${this.joinToString(" ")}") }
@@ -32,13 +35,31 @@ open class MagoAnnotatorProxy : QualityToolAnnotator<MagoValidationInspection>()
3235
addConfig(project, settings)
3336

3437
add("analyze")
35-
add(filePath)
38+
add(toWorkspaceRelativePath(project, filePath))
3639
add("--reporting-format=json")
3740
// filePath?.let { add(it) }
3841
}
3942
.plus(ParametersList.parse(settings.analyzeAdditionalParameters))
4043
.apply { println("analyze options: ${this.joinToString(" ")}") }
4144

45+
private fun toWorkspaceRelativePath(project: Project, absoluteFilePath: String): String {
46+
val base = project.basePath ?: return ensureMagoPath(absoluteFilePath)
47+
println("project base: $base")
48+
49+
val relative = FileUtil.getRelativePath(base, absoluteFilePath, File.separatorChar)
50+
return ensureMagoPath(relative ?: absoluteFilePath)
51+
}
52+
53+
private fun ensureMagoPath(path: String): String {
54+
return when {
55+
path.isEmpty() -> path
56+
FileUtil.isAbsolute(path) -> path
57+
path.startsWith("./") || path.startsWith(".\\") -> path
58+
// Mago ignores relative paths unless they are explicitly prefixed.
59+
else -> ".${File.separator}$path"
60+
}
61+
}
62+
4263
private fun MutableList<String>.addWorkspace(project: Project) {
4364
val projectPath = updateIfRemoteMappingExists(
4465
project.basePath ?: return,

0 commit comments

Comments
 (0)