Skip to content

Commit ce520bb

Browse files
committed
feat: add debug options
1 parent e3342c4 commit ce520bb

5 files changed

Lines changed: 67 additions & 32 deletions

File tree

src/main/kotlin/com/github/xepozz/mago/configuration/MagoConfigurable.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.github.xepozz.mago.configuration
33
import com.github.xepozz.mago.MagoBundle
44
import com.github.xepozz.mago.qualityTool.MagoQualityToolType
55
import com.intellij.codeInsight.daemon.HighlightDisplayKey
6+
import com.intellij.icons.AllIcons
67
import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory
78
import com.intellij.openapi.options.Configurable
89
import com.intellij.openapi.options.ShowSettingsUtil
@@ -12,6 +13,7 @@ import com.intellij.profile.codeInspection.InspectionProfileManager
1213
import com.intellij.profile.codeInspection.ui.ErrorsConfigurable
1314
import com.intellij.profile.codeInspection.ui.ErrorsConfigurableProvider
1415
import com.intellij.ui.components.ActionLink
16+
import com.intellij.ui.components.JBLabel
1517
import com.intellij.ui.components.OnOffButton
1618
import com.intellij.ui.dsl.builder.AlignX
1719
import com.intellij.ui.dsl.builder.RowLayout
@@ -25,6 +27,7 @@ import com.jetbrains.php.tools.quality.QualityToolsIgnoreFilesConfigurable
2527
import java.awt.event.ActionEvent
2628
import java.awt.event.ActionListener
2729
import javax.swing.JComponent
30+
import javax.swing.SwingConstants
2831

2932
class MagoConfigurable(val project: Project) : Configurable {
3033
val settings = project.getService(MagoProjectConfiguration::class.java)
@@ -36,6 +39,13 @@ class MagoConfigurable(val project: Project) : Configurable {
3639
browserLink("Download Mago", "https://github.com/carthage-software/mago")
3740
browserLink("Report a plugin bug", "https://github.com/j-plugins/mago-plugin/issues")
3841
browserLink("Request a plugin feature", "https://github.com/j-plugins/mago-plugin/issues")
42+
43+
cell(JBLabel("Debug", AllIcons.Toolwindows.ToolWindowDebugger, SwingConstants.RIGHT))
44+
.align(AlignX.RIGHT)
45+
.resizableColumn()
46+
cell(OnOffButton())
47+
.bindSelected(settings::debug)
48+
.align(AlignX.RIGHT)
3949
}
4050
group(MagoBundle.message("settings.options.title")) {
4151
row {

src/main/kotlin/com/github/xepozz/mago/configuration/MagoProjectConfiguration.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ class MagoProjectConfiguration : QualityToolProjectConfiguration<MagoConfigurati
2020
var analyzeAdditionalParameters = ""
2121
var formatAdditionalParameters = ""
2222
var configurationFile = ""
23+
var debug = false
2324

2425
override fun getState() = this
2526

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

Lines changed: 25 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,9 @@ package com.github.xepozz.mago.qualityTool
22

33
import com.github.xepozz.mago.configuration.MagoProjectConfiguration
44
import com.github.xepozz.mago.normalizePath
5+
import com.github.xepozz.mago.utils.DebugLogger
56
import com.intellij.codeInspection.InspectionProfile
67
import com.intellij.execution.configurations.ParametersList
7-
import com.intellij.notification.NotificationGroupManager
8-
import com.intellij.notification.NotificationType
98
import com.intellij.openapi.diagnostic.Logger
109
import com.intellij.openapi.module.ModuleUtilCore
1110
import com.intellij.openapi.project.Project
@@ -17,7 +16,6 @@ import com.intellij.psi.PsiFile
1716
import com.jetbrains.php.tools.quality.QualityToolAnnotator
1817
import com.jetbrains.php.tools.quality.QualityToolAnnotatorInfo
1918
import com.jetbrains.php.tools.quality.QualityToolConfiguration
20-
import java.io.File
2119

2220
open class MagoAnnotatorProxy : QualityToolAnnotator<MagoValidationInspection>() {
2321
companion object {
@@ -35,12 +33,13 @@ open class MagoAnnotatorProxy : QualityToolAnnotator<MagoValidationInspection>()
3533
addAll(files.map { toWorkspaceRelativePath(workspace, it) })
3634
}
3735
.plus(ParametersList.parse(settings.formatAdditionalParameters))
38-
.apply { val options = this.joinToString(" ")
39-
println("format options: $options")
40-
NotificationGroupManager.getInstance()
41-
.getNotificationGroup("Mago")
42-
.createNotification("Format options", """Options: $options, filePaths: ${files.joinToString(", ") { it }}""", NotificationType.INFORMATION)
43-
.notify(project)
36+
.apply {
37+
DebugLogger.inform(
38+
project,
39+
"Format options",
40+
"""Options: ${joinToString(" ")}, filePaths: ${files.joinToString(", ") { it }}""",
41+
)
42+
4443
}
4544

4645
fun findWorkspace(project: Project, filePath: String?): VirtualFile {
@@ -62,44 +61,34 @@ open class MagoAnnotatorProxy : QualityToolAnnotator<MagoValidationInspection>()
6261
}
6362
.plus(ParametersList.parse(settings.analyzeAdditionalParameters))
6463
.apply {
65-
val options = this.joinToString(" ")
66-
println("analyze options: $options")
67-
NotificationGroupManager.getInstance()
68-
.getNotificationGroup("Mago")
69-
.createNotification("Analyze options", """Options: $options, filePath: $filePath""", NotificationType.INFORMATION)
70-
.notify(project)
64+
DebugLogger.inform(
65+
project,
66+
"Analyze options",
67+
"""Options: ${joinToString(" ")}, filePath: $filePath""",
68+
)
7169
}
7270

73-
private fun toWorkspaceRelativePath(project: Project, absoluteFilePath: String): String {
74-
val basePath = project.basePath ?: return absoluteFilePath
75-
return toRelativePath(basePath, absoluteFilePath)
76-
}
7771
private fun toWorkspaceRelativePath(workspace: VirtualFile, absoluteFilePath: String): String {
7872
return toRelativePath(workspace.path, absoluteFilePath)
7973
}
8074

8175
internal fun toRelativePath(basePath: String, absoluteFilePath: String): String {
8276
val basePath = basePath.normalizePath()
8377
val absoluteFilePath = absoluteFilePath.normalizePath()
84-
println("project base: $basePath")
8578

8679
val relative = FileUtil.getRelativePath(basePath, absoluteFilePath, '/')
8780
return ensureMagoPath(relative ?: absoluteFilePath)
8881
}
8982

90-
internal fun ensureMagoPath(path: String): String {
91-
return when {
92-
path.isEmpty() -> path
93-
FileUtil.isAbsolute(path) || isWindowsAbsolute(path) || path.startsWith("\\\\?\\") -> path
94-
path.startsWith("./") || path.startsWith(".\\") -> path
95-
// Mago ignores relative paths unless they are explicitly prefixed.
96-
else -> ".${File.separator}$path"
97-
}
83+
internal fun ensureMagoPath(path: String): String = when {
84+
path.isEmpty() -> path
85+
FileUtil.isAbsolute(path) || isWindowsAbsolute(path) || path.startsWith('\\') -> path
86+
path.startsWith("./") || path.startsWith(".\\") -> path
87+
// Mago ignores relative paths unless they are explicitly prefixed.
88+
else -> "./$path"
9889
}
9990

100-
private fun isWindowsAbsolute(path: String): Boolean {
101-
return path.length >= 2 && path[0].isLetter() && path[1] == ':'
102-
}
91+
private fun isWindowsAbsolute(path: String): Boolean = path.length >= 2 && path[0].isLetter() && path[1] == ':'
10392

10493
private fun MutableList<String>.addWorkspace(workspace: VirtualFile, project: Project) {
10594
val projectPath = updateIfRemoteMappingExists(
@@ -110,7 +99,11 @@ open class MagoAnnotatorProxy : QualityToolAnnotator<MagoValidationInspection>()
11099
add("--workspace=$projectPath")
111100
}
112101

113-
private fun MutableList<String>.addConfig(workspace: VirtualFile, project: Project, settings: MagoProjectConfiguration) {
102+
private fun MutableList<String>.addConfig(
103+
workspace: VirtualFile,
104+
project: Project,
105+
settings: MagoProjectConfiguration
106+
) {
114107
val configurationFile = updateIfRemoteMappingExists(
115108
settings.configurationFile,
116109
project,
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.github.xepozz.mago.utils
2+
3+
import com.github.xepozz.mago.configuration.MagoProjectConfiguration
4+
import com.intellij.openapi.project.Project
5+
6+
object DebugLogger {
7+
fun inform(project: Project, title: String, content: String) {
8+
val settings = project.getService(MagoProjectConfiguration::class.java)
9+
if (settings.debug) {
10+
NotificationsUtil.inform(project, title, content)
11+
}
12+
}
13+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.github.xepozz.mago.utils
2+
3+
import com.intellij.notification.NotificationGroupManager
4+
import com.intellij.notification.NotificationType
5+
import com.intellij.openapi.project.Project
6+
7+
object NotificationsUtil {
8+
fun inform(project: Project, title: String, content: String) {
9+
NotificationGroupManager.getInstance()
10+
.getNotificationGroup("Mago")
11+
.createNotification(
12+
title,
13+
content,
14+
NotificationType.INFORMATION
15+
)
16+
.notify(project)
17+
}
18+
}

0 commit comments

Comments
 (0)