diff --git a/CHANGELOG.md b/CHANGELOG.md index 086b9c3..92edfbc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,13 @@ # vscode-theme Changelog ## Unreleased +### Added +- Rainbow Brackets plugin will now be bundled within VSCode theme +- #84 - Functionality to report bug through IDE error reporting tool + +### Fixed +- Icon colors are messed up in VSCode light theme + ## 1.9.1 - 2023-08-13 diff --git a/gradle.properties b/gradle.properties index 8bed40a..4c913fc 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,7 +3,7 @@ pluginGroup = com.github.dinbtechit.vscodetheme pluginName = VSCode Theme # SemVer format -> https://semver.org -pluginVersion = 1.9.1 +pluginVersion = 1.10.0 # Supported build number ranges and IntelliJ Platform versions -> https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html pluginSinceBuild = 211 @@ -17,7 +17,7 @@ platformVersion = 2023.1.1 # Example: platformPlugins = com.intellij.java, com.jetbrains.php:203.4449.22 platformPlugins = JavaScript, com.intellij.java, io.flutter:73.1.1, Dart:231.9065, PsiViewer:231-SNAPSHOT, \ Pythonid:231.8770.65, PythonCore:231.8770.65, org.jetbrains.kotlin, com.jetbrains.php:231.8770.68, org.jetbrains.plugins.go:231.8770.53, \ -org.rust.lang:0.4.194.5382-231,com.jetbrains.sh +org.rust.lang:0.4.194.5382-231,com.jetbrains.sh,izhangzhihao.rainbow.brackets.lite:1.0.1 # Gradle Releases -> https://github.com/gradle/gradle/releases gradleVersion = 8.1 diff --git a/src/main/kotlin/com/github/dinbtechit/vscodetheme/diagostic/VSCodeErrorReportSubmitter.kt b/src/main/kotlin/com/github/dinbtechit/vscodetheme/diagostic/VSCodeErrorReportSubmitter.kt new file mode 100644 index 0000000..3910dd8 --- /dev/null +++ b/src/main/kotlin/com/github/dinbtechit/vscodetheme/diagostic/VSCodeErrorReportSubmitter.kt @@ -0,0 +1,130 @@ +package com.github.dinbtechit.vscodetheme.diagostic + +import com.intellij.ide.BrowserUtil +import com.intellij.ide.plugins.PluginManagerCore +import com.intellij.openapi.application.ApplicationInfo +import com.intellij.openapi.diagnostic.ErrorReportSubmitter +import com.intellij.openapi.diagnostic.IdeaLoggingEvent +import com.intellij.openapi.diagnostic.SubmittedReportInfo +import com.intellij.openapi.extensions.PluginId +import org.apache.commons.lang.StringUtils +import org.apache.http.client.utils.URIBuilder +import java.awt.Component +import java.io.BufferedReader +import java.io.StringReader +import java.net.URI +import java.util.stream.Collectors + +class VSCodeErrorReportSubmitter: ErrorReportSubmitter() { + + private val packageAbbreviation: Map? = null + + override fun getReportActionText(): String { + return "Report to VSCode Theme" + } + + override fun submit( + events: Array, + additionalInfo: String?, + parentComponent: Component, + consumer: com.intellij.util.Consumer + ): Boolean { + getReportIssueUrl( + getReportTitle(events), + getReportBody(events, additionalInfo) + )?.let { + BrowserUtil.browse(it) + } + return true + } + + private fun getReportTitle(events: Array): String { + val event = events.firstOrNull() + return event?.throwableText?.lineSequence()?.first() + ?: event?.message + ?: "Report bug" + } + + private fun getReportBody(events: Array, additionalInfo: String?): String { + val javaVendor = System.getProperty("java.vendor") + val javaVersion = System.getProperty("java.version") + + val osName = System.getProperty("os.name") + val osArch = System.getProperty("os.arch") + + val appName = ApplicationInfo.getInstance().fullApplicationName + + val plugin = PluginManagerCore.getPlugin(PluginId.getId("com.github.dinbtechit.vscodetheme")) + val pluginVersion = plugin?.version + + var stackTrace = "" + for (event in events) { + val message = event.message + if (!message.isNullOrBlank()) { + stackTrace = stackTrace.plus(message).plus("\n") + } + val throwableText = event.throwableText + if (!throwableText.isNullOrBlank()) { + stackTrace = stackTrace.plus("\n```\n") + stackTrace= stackTrace.plus( + BufferedReader(StringReader(throwableText)).lines() + .map { line -> + var abbreviated = line + packageAbbreviation?.entries?.forEach { entry -> + abbreviated = StringUtils.replace(abbreviated, entry.key, entry.value) + } + abbreviated + }.collect(Collectors.joining("\n")) + ) + stackTrace= stackTrace.plus("\n```\n\n") + } + } + var description = additionalInfo + if (description.isNullOrBlank()) { + description = "A clear and concise description of what the bug is." + } + + return """ + |#Describe the bug + | $description + | + |#To Reproduce + |Steps to reproduce the behavior: + |1. Go to '...' + |2. Click on '....' + |3. Scroll down to '....' + |4. See error + | + |#Expected behavior + |A clear and concise description of what you expected to happen. + | + |#Screenshots + |If applicable, add screenshots to help explain your problem. + | + |#Environment + |* Java: $javaVendor $javaVersion + |* OS: $osName $osArch + |* IDE: $appName + |* Version: $pluginVersion + | + |#Additional context + |${additionalInfo ?: "Add any other context about the problem here."} + | + |#Stacktrace# + | $stackTrace + """.trimMargin() + } + + private fun getReportIssueUrl(title: String, body: String): URI? { + val uriBuilder = URIBuilder("https://github.com/dinbtechit/vscode-theme/issues/new") + uriBuilder.addParameter("title", "[Bug] $title") + uriBuilder.addParameter("labels", "bug") + if (body.isNotBlank()) { + uriBuilder.addParameter("body", body) + } else { + uriBuilder.addParameter("template", "bug_report.md") + } + return uriBuilder.build() + } + +} diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index bc4e5e0..a2bae09 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -6,6 +6,7 @@ com.intellij.modules.platform + izhangzhihao.rainbow.brackets.lite JavaScript com.intellij.java @@ -35,6 +36,7 @@ +