mirror of
https://github.com/chylex/IntelliJ-Rainbow-Brackets.git
synced 2025-04-15 14:15:42 +02:00
Remove unnecessary files for the fork
This commit is contained in:
parent
df724336a2
commit
983350f63c
.github
.gitpod.Dockerfile.gitpod.yml.java-version.mergify.ymlsrc/main
kotlin/com/github/izhangzhihao/rainbow/brackets/util
resources/error-reporting
57
.github/ISSUE_TEMPLATE/bug_report.md
vendored
57
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@ -1,57 +0,0 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
title: ''
|
||||
labels: bug?
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
Your issue may already be reported!
|
||||
Please search on the [issues](https://github.com/izhangzhihao/intellij-rainbow-brackets/issues) and the [document](https://github.com/izhangzhihao/intellij-rainbow-brackets/blob/2020.3/README.md) before creating one.
|
||||
|
||||
## Please check
|
||||
|
||||
- [ ] I already support this project.
|
||||
- [ ] If you are submitting a feature request, please do consider donating us on [Open Collective](https://opencollective.com/intellij-rainbow-brackets) Or by AliPay/WeChatPay.
|
||||
- [ ] This issue/feature request is not reported before.
|
||||
|
||||
## Your programming languages
|
||||
|
||||
## Expected Behavior
|
||||
* If you're describing a bug, tell us what should happen
|
||||
* If you're suggesting a change/improvement, tell us how it should work
|
||||
|
||||
## Current Behavior
|
||||
* If describing a bug, tell us what happens instead of the expected behavior
|
||||
* If suggesting a change/improvement, explain the difference from current behavior
|
||||
|
||||
## Possible Solution
|
||||
Not obligatory, but suggest a fix/reason for the bug, or ideas how to implement the addition or change.
|
||||
Or what have you tried to resolve this issue.
|
||||
|
||||
## Code snippet for reproduce (for bugs)
|
||||
Please provide code snippet for reproduce bugs.
|
||||
|
||||
## Your Environment
|
||||
|
||||
* Plugin version:
|
||||
* IDE & Operating System version, comment your env as below(go to "About IntelliJ IDEA" -> click the "copy" icon):
|
||||
* NOTE: If you are going to report a bug but WITHOUT your env information, your issue might be closed directly.
|
||||
|
||||
```
|
||||
IntelliJ IDEA 2021.2 (Ultimate Edition)
|
||||
Build #IU-212.4746.92, built on July 27, 2021
|
||||
Licensed to IntelliJ Rainbow Brackets / Zhang Zhihao
|
||||
Subscription is active until February 3, 2022.
|
||||
For non-commercial open source development only.
|
||||
Runtime version: 11.0.11+9-b1504.13 x86_64
|
||||
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
|
||||
macOS 11.4
|
||||
GC: G1 Young Generation, G1 Old Generation
|
||||
Memory: 4096M
|
||||
Cores: 16
|
||||
Registry: ide.tooltip.initialDelay=900, ide.balloon.shadow.size=0, scala.erase.compiler.process.jdk.once=false
|
||||
Non-Bundled Plugins: com.intellij.properties.bundle.editor (212.4746.57), com.markskelton.one-dark-theme (5.3.0), lermitage.intellij.extra.icons (1.59.0.203), org.nik.presentation-assistant (1.0.9), kotest-plugin-intellij (1.1.36-IC-2021.1), Pythonid (212.4746.96), org.intellij.scala (2021.2.15), izhangzhihao.rainbow.brackets (6.19), com.intellij.bigdatatools (212.4037.55)
|
||||
Kotlin: 212-1.5.10-release-IJ4746.92
|
||||
```
|
24
.github/ISSUE_TEMPLATE/feature_request.md
vendored
24
.github/ISSUE_TEMPLATE/feature_request.md
vendored
@ -1,24 +0,0 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
title: ''
|
||||
labels: feature request
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Please [support us](https://github.com/izhangzhihao/intellij-rainbow-brackets#support-us) before creating a feature request, thanks for your support 😁**
|
||||
|
||||
## Please check
|
||||
|
||||
- [ ] I already support this project.
|
||||
- [ ] If you are submitting a feature request, please do consider donating us on [Open Collective](https://opencollective.com/intellij-rainbow-brackets) Or by AliPay/WeChatPay.
|
||||
- [ ] This issue/feature request is not reported before.
|
||||
|
||||
## Your programming languages
|
||||
|
||||
## Expected Behavior
|
||||
* tell us how it will works
|
||||
|
||||
## Current Behavior
|
||||
* explain the difference from current behavior
|
13
.github/opencollective.yml
vendored
13
.github/opencollective.yml
vendored
@ -1,13 +0,0 @@
|
||||
collective: intellij-rainbow-brackets
|
||||
tiers:
|
||||
- tiers: "*"
|
||||
labels: ["backer"]
|
||||
message: "Hey <author> , thanks for supporting us on Open Collective :heart::heart::heart: We'll give a special attention to this issue!"
|
||||
invitation: |
|
||||
Hey <author> :wave:,
|
||||
|
||||
Thank you for opening an issue/feature request. We will get back to you as soon as we can.
|
||||
Also, check out our <link> and consider backing us - every little helps!
|
||||
|
||||
PS.: We offer `priority` support for all backers. Don't forget to
|
||||
add `priority` label when you start backing us :smile:
|
75
.github/workflows/build.yml
vendored
75
.github/workflows/build.yml
vendored
@ -1,75 +0,0 @@
|
||||
name: Build
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- '2020.3'
|
||||
pull_request:
|
||||
jobs:
|
||||
test:
|
||||
name: Test
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
# Setup Java 11 environment for the next steps
|
||||
- name: Setup Java
|
||||
uses: actions/setup-java@v2
|
||||
with:
|
||||
distribution: 'adopt'
|
||||
java-version: 11
|
||||
|
||||
# Check out current repository
|
||||
- name: Fetch Sources
|
||||
uses: actions/checkout@v2.3.4
|
||||
|
||||
# Cache Gradle dependencies
|
||||
- name: Setup Gradle Dependencies Cache
|
||||
uses: actions/cache@v2.1.6
|
||||
with:
|
||||
path: ~/.gradle/caches
|
||||
key: ${{ runner.os }}-gradle-caches-${{ hashFiles('**/*.gradle', '**/*.gradle.kts') }}
|
||||
|
||||
# Cache Gradle Wrapper
|
||||
- name: Setup Gradle Wrapper Cache
|
||||
uses: actions/cache@v2.1.6
|
||||
with:
|
||||
path: ~/.gradle/wrapper
|
||||
key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }}
|
||||
|
||||
# Run detekt, ktlint and tests
|
||||
- name: Run Linters and Test
|
||||
run: ./gradlew check
|
||||
|
||||
# Run verifyPlugin Gradle task
|
||||
- name: Verify Plugin
|
||||
run: ./gradlew verifyPlugin
|
||||
|
||||
# Set environment variables
|
||||
- name: Export Properties
|
||||
id: properties
|
||||
shell: bash
|
||||
run: |
|
||||
PROPERTIES="$(./gradlew properties --console=plain -q)"
|
||||
IDE_VERSIONS="$(echo "$PROPERTIES" | grep "^pluginVerifierIdeVersions:" | base64)"
|
||||
VERSION="$(echo "$PROPERTIES" | grep "^version:" | cut -f2- -d ' ')"
|
||||
NAME="intellij-rainbow-brackets"
|
||||
ARTIFACT="${NAME}-${VERSION}.zip"
|
||||
|
||||
echo "::set-output name=ideVersions::$IDE_VERSIONS"
|
||||
echo "::set-output name=pluginVerifierHomeDir::~/.pluginVerifier"
|
||||
echo "::set-output name=artifact::$ARTIFACT"
|
||||
|
||||
# Cache Plugin Verifier IDEs
|
||||
- name: Setup Plugin Verifier IDEs Cache
|
||||
uses: actions/cache@v2.1.6
|
||||
with:
|
||||
path: ${{ steps.properties.outputs.pluginVerifierHomeDir }}/ides
|
||||
key: ${{ runner.os }}-plugin-verifier-${{ steps.properties.outputs.ideVersions }}
|
||||
|
||||
# Run IntelliJ Plugin Verifier action using GitHub Action
|
||||
- name: Verify Plugin
|
||||
run: ./gradlew runPluginVerifier -Pplugin.verifier.home.dir=${{ steps.properties.outputs.pluginVerifierHomeDir }}
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v2.2.3
|
||||
with:
|
||||
name: UnZipMe
|
||||
path: ./build/distributions/${{ steps.properties.outputs.artifact }}
|
27
.github/workflows/label-and-close-issue.yml
vendored
27
.github/workflows/label-and-close-issue.yml
vendored
@ -1,27 +0,0 @@
|
||||
name: "Label and close wontfix issues"
|
||||
|
||||
on:
|
||||
issues:
|
||||
types: [opened]
|
||||
|
||||
jobs:
|
||||
Label:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: Naturalclar/issue-action@v2.0.2
|
||||
with:
|
||||
title-or-body: "both"
|
||||
parameters: '[ {"keywords": ["RainbowHighlightVisitor.kt:35", "RainbowHighlightVisitor.kt:68", "RainbowHighlightVisitor.analyze"], "labels": ["invalid"]} ]'
|
||||
github-token: "${{ secrets.GITHUB_TOKEN }}"
|
||||
Close:
|
||||
needs: [Label]
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/stale@v3.0.14
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
days-before-stale: 0
|
||||
days-before-close: 0
|
||||
stale-issue-message: "This auto generated issue has been automatically marked as wontfix because nothing it's wrong here. If you think there are something really wrong, please reply this issue. Thanks for your cooperation."
|
||||
stale-issue-label: "wontfix"
|
||||
only-labels: "invalid"
|
46
.github/workflows/release.yml
vendored
46
.github/workflows/release.yml
vendored
@ -1,46 +0,0 @@
|
||||
# GitHub Actions Workflow created for handling the release process based on the draft release prepared
|
||||
# with the Build workflow. Running the publishPlugin task requires the PUBLISH_TOKEN secret provided.
|
||||
|
||||
name: Release
|
||||
on:
|
||||
release:
|
||||
types: [prereleased, released]
|
||||
|
||||
jobs:
|
||||
# Prepare and publish the plugin to the Marketplace repository
|
||||
release:
|
||||
name: Publish Plugin
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
# Setup Java 11 environment for the next steps
|
||||
- name: Setup Java
|
||||
uses: actions/setup-java@v2
|
||||
with:
|
||||
distribution: "adopt"
|
||||
java-version: 11
|
||||
|
||||
# Check out current repository
|
||||
- name: Fetch Sources
|
||||
uses: actions/checkout@v2.3.4
|
||||
with:
|
||||
ref: ${{ github.event.release.tag_name }}
|
||||
|
||||
# Cache Gradle dependencies
|
||||
- name: Setup Gradle Dependencies Cache
|
||||
uses: actions/cache@v2.1.6
|
||||
with:
|
||||
path: ~/.gradle/caches
|
||||
key: ${{ runner.os }}-gradle-caches-${{ hashFiles('**/*.gradle', '**/*.gradle.kts') }}
|
||||
|
||||
# Cache Gradle Wrapper
|
||||
- name: Setup Gradle Wrapper Cache
|
||||
uses: actions/cache@v2.1.6
|
||||
with:
|
||||
path: ~/.gradle/wrapper
|
||||
key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }}
|
||||
|
||||
# Publish the plugin to the Marketplace
|
||||
- name: Publish Plugin
|
||||
env:
|
||||
token: ${{ secrets.PUBLISH_TOKEN }}
|
||||
run: ./gradlew publishPlugin
|
19
.github/workflows/stale.yml
vendored
19
.github/workflows/stale.yml
vendored
@ -1,19 +0,0 @@
|
||||
name: 'Stale handler'
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: '0 0 * * *'
|
||||
|
||||
jobs:
|
||||
stale:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/stale@main
|
||||
id: stale
|
||||
with:
|
||||
stale-issue-message: 'This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days'
|
||||
days-before-stale: 30
|
||||
days-before-close: 5
|
||||
only-labels: 'PR welcome'
|
||||
- name: Print outputs
|
||||
run: echo ${{ join(steps.stale.outputs.*, ',') }}
|
5
.gitpod.Dockerfile
vendored
5
.gitpod.Dockerfile
vendored
@ -1,5 +0,0 @@
|
||||
FROM gitpod/workspace-full
|
||||
|
||||
USER gitpod
|
||||
|
||||
RUN brew install kotlin
|
@ -1,4 +0,0 @@
|
||||
image:
|
||||
file: .gitpod.Dockerfile
|
||||
tasks:
|
||||
- init: gradle compileKotlin
|
@ -1 +0,0 @@
|
||||
11
|
15
.mergify.yml
15
.mergify.yml
@ -1,15 +0,0 @@
|
||||
pull_request_rules:
|
||||
- name: Automatic merge on approval
|
||||
conditions:
|
||||
- "#approved-reviews-by>=1"
|
||||
- status-success=Test
|
||||
actions:
|
||||
merge:
|
||||
method: merge
|
||||
- name: automatically merge dependabot's PRs
|
||||
conditions:
|
||||
- author~=^dependabot(|-preview)\[bot\]$
|
||||
- status-success=Test
|
||||
actions:
|
||||
merge:
|
||||
method: merge
|
@ -1,246 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2017 Patrick Scheibe
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
package com.github.izhangzhihao.rainbow.brackets.util
|
||||
|
||||
import com.github.izhangzhihao.rainbow.brackets.settings.RainbowSettings
|
||||
import com.github.izhangzhihao.rainbow.brackets.util.ErrorContext.Companion.fromThrowable
|
||||
import com.intellij.AbstractBundle
|
||||
import com.intellij.diagnostic.*
|
||||
import com.intellij.ide.DataManager
|
||||
import com.intellij.ide.plugins.PluginManagerCore
|
||||
import com.intellij.ide.plugins.PluginUtil
|
||||
import com.intellij.idea.IdeaLogger
|
||||
import com.intellij.notification.NotificationGroupManager
|
||||
import com.intellij.notification.NotificationListener
|
||||
import com.intellij.notification.NotificationType
|
||||
import com.intellij.openapi.actionSystem.CommonDataKeys
|
||||
import com.intellij.openapi.application.ApplicationNamesInfo
|
||||
import com.intellij.openapi.application.ex.ApplicationInfoEx
|
||||
import com.intellij.openapi.application.impl.ApplicationInfoImpl
|
||||
import com.intellij.openapi.diagnostic.ErrorReportSubmitter
|
||||
import com.intellij.openapi.diagnostic.IdeaLoggingEvent
|
||||
import com.intellij.openapi.diagnostic.SubmittedReportInfo
|
||||
import com.intellij.openapi.diagnostic.SubmittedReportInfo.SubmissionStatus
|
||||
import com.intellij.openapi.progress.EmptyProgressIndicator
|
||||
import com.intellij.openapi.progress.ProgressIndicator
|
||||
import com.intellij.openapi.progress.ProgressManager
|
||||
import com.intellij.openapi.progress.Task
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.util.SystemInfo
|
||||
import com.intellij.util.Consumer
|
||||
import org.eclipse.egit.github.core.Issue
|
||||
import org.eclipse.egit.github.core.Label
|
||||
import org.eclipse.egit.github.core.RepositoryId
|
||||
import org.eclipse.egit.github.core.client.GitHubClient
|
||||
import org.eclipse.egit.github.core.service.IssueService
|
||||
import org.jetbrains.annotations.NonNls
|
||||
import org.jetbrains.annotations.NotNull
|
||||
import org.jetbrains.annotations.Nullable
|
||||
import org.jetbrains.annotations.PropertyKey
|
||||
import java.awt.Component
|
||||
import java.util.*
|
||||
|
||||
private object AnonymousFeedback {
|
||||
private const val gitRepoUser = "izhangzhihao"
|
||||
|
||||
//private const val gitRepoUser = "intellij-rainbow-brackets"
|
||||
private const val gitRepo = "intellij-rainbow-brackets"
|
||||
|
||||
//private const val gitRepo = "bug"
|
||||
private const val issueLabel = "Auto generated"
|
||||
|
||||
/**
|
||||
* Makes a connection to GitHub. Checks if there is an issue that is a duplicate and based on this, creates either a
|
||||
* new issue or comments on the duplicate (if the user provided additional information).
|
||||
*
|
||||
* @param environmentDetails Information collected by [getKeyValuePairs]
|
||||
* @return The report info that is then used in [GitHubErrorReporter] to show the user a balloon with the link
|
||||
* of the created issue.
|
||||
*/
|
||||
internal fun sendFeedback(environmentDetails: MutableMap<String, String>): SubmittedReportInfo {
|
||||
try {
|
||||
val gitAccessToken = something
|
||||
val client = GitHubClient()
|
||||
client.setOAuth2Token(gitAccessToken)
|
||||
val repoID = RepositoryId(gitRepoUser, gitRepo)
|
||||
val issueService = IssueService(client)
|
||||
var newGibHubIssue = createNewGibHubIssue(environmentDetails)
|
||||
val duplicate = findFirstDuplicate(newGibHubIssue.title, issueService, repoID)
|
||||
var isNewIssue = true
|
||||
if (duplicate != null) {
|
||||
issueService.createComment(repoID, duplicate.number, newGibHubIssue.body)
|
||||
newGibHubIssue = duplicate
|
||||
isNewIssue = false
|
||||
} else newGibHubIssue = issueService.createIssue(repoID, newGibHubIssue)
|
||||
return SubmittedReportInfo(newGibHubIssue.htmlUrl, ErrorReportBundle.message(
|
||||
if (isNewIssue) "git.issue.text" else "git.issue.duplicate.text", newGibHubIssue.htmlUrl, newGibHubIssue.number.toLong()),
|
||||
if (isNewIssue) SubmissionStatus.NEW_ISSUE else SubmissionStatus.DUPLICATE)
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
return SubmittedReportInfo(null,
|
||||
ErrorReportBundle.message("report.error.connection.failure"),
|
||||
SubmissionStatus.FAILED)
|
||||
}
|
||||
}
|
||||
|
||||
private fun findFirstDuplicate(title: String, service: IssueService, repo: RepositoryId): Issue? {
|
||||
val openIssue = hashMapOf(IssueService.FILTER_STATE to IssueService.STATE_OPEN)
|
||||
val closedIssue = hashMapOf(IssueService.FILTER_STATE to IssueService.STATE_CLOSED)
|
||||
return service.pageIssues(repo, openIssue).flatten().firstOrNull { it.title == title }
|
||||
?: service.pageIssues(repo, closedIssue).flatten().firstOrNull { it.title == title }
|
||||
}
|
||||
|
||||
private fun createNewGibHubIssue(details: MutableMap<String, String>) = Issue().apply {
|
||||
val errorMessage = details.remove("error.message")?.takeIf(String::isNotBlank) ?: "Unspecified error"
|
||||
title = ErrorReportBundle.message("git.issue.title", errorMessage)
|
||||
body = generateGitHubIssueBody(details)
|
||||
labels = listOf(Label().apply { name = issueLabel })
|
||||
}
|
||||
|
||||
private fun generateGitHubIssueBody(details: MutableMap<String, String>): String {
|
||||
val errorDescription = details.remove("error.description").orEmpty()
|
||||
val stackTrace = details.remove("error.stacktrace")?.takeIf(String::isNotBlank) ?: "invalid stacktrace"
|
||||
val result = StringBuilder()
|
||||
if (errorDescription.isNotEmpty()) {
|
||||
result.append(errorDescription)
|
||||
result.append("\n\n----------------------\n\n")
|
||||
}
|
||||
for ((key, value) in details) {
|
||||
result.append("- ")
|
||||
result.append(key)
|
||||
result.append(": ")
|
||||
result.append(value)
|
||||
result.append("\n")
|
||||
}
|
||||
result.append("- StackTrace:\n")
|
||||
result.append(stackTrace)
|
||||
return result.toString()
|
||||
}
|
||||
}
|
||||
|
||||
//String(Base64.getEncoder().encode("".toByteArray()))
|
||||
private const val st = "YjgwZGRiY2U2YTNlYTAzM2UyZGU" + "yNDcyNWEyZjE3MGQ2YThmMjc0MQ=="
|
||||
|
||||
private val something: String by lazy { String(Base64.getDecoder().decode(st)) }
|
||||
|
||||
class GitHubErrorReporter : ErrorReportSubmitter() {
|
||||
override fun getReportActionText() = ErrorReportBundle.message("report.error.to.plugin.vendor")
|
||||
|
||||
override fun submit(events: Array<out IdeaLoggingEvent>?, info: @Nullable String?, parent: @NotNull Component, consumer: @NotNull Consumer<in SubmittedReportInfo>): Boolean {
|
||||
return doSubmit(events!![0], parent, consumer, fromThrowable(events[0].throwable), info)
|
||||
}
|
||||
|
||||
private fun doSubmit(
|
||||
event: IdeaLoggingEvent,
|
||||
parent: Component,
|
||||
callback: Consumer<in SubmittedReportInfo>,
|
||||
errorContext: ErrorContext,
|
||||
description: String?): Boolean {
|
||||
val dataContext = DataManager.getInstance().getDataContext(parent)
|
||||
description?.let { errorContext.description = description }
|
||||
errorContext.message = event.message
|
||||
event.throwable?.let { throwable ->
|
||||
PluginUtil.getInstance().findPluginId(throwable)?.let { pluginId ->
|
||||
PluginManagerCore.getPlugin(pluginId)?.let { ideaPluginDescriptor ->
|
||||
if (!ideaPluginDescriptor.isBundled) {
|
||||
errorContext.pluginName = ideaPluginDescriptor.name
|
||||
errorContext.pluginVersion = ideaPluginDescriptor.version
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
(event.data as? LogMessage)?.let { errorContext.attachments = it.includedAttachments }
|
||||
val project = CommonDataKeys.PROJECT.getData(dataContext)
|
||||
val reportValues = getKeyValuePairs(
|
||||
errorContext,
|
||||
ApplicationInfoImpl.getShadowInstance() as ApplicationInfoImpl,
|
||||
ApplicationNamesInfo.getInstance())
|
||||
val notifyingCallback = CallbackWithNotification(callback, project)
|
||||
val task = AnonymousFeedbackTask(project, ErrorReportBundle.message(
|
||||
"report.error.progress.dialog.text"), true, reportValues, notifyingCallback)
|
||||
if (project == null) task.run(EmptyProgressIndicator()) else ProgressManager.getInstance().run(task)
|
||||
return true
|
||||
}
|
||||
|
||||
internal class CallbackWithNotification(
|
||||
private val consumer: Consumer<in SubmittedReportInfo>,
|
||||
private val project: Project?) : Consumer<SubmittedReportInfo> {
|
||||
override fun consume(reportInfo: SubmittedReportInfo) {
|
||||
consumer.consume(reportInfo)
|
||||
val GROUP = NotificationGroupManager.getInstance().getNotificationGroup("Error Report")
|
||||
if (reportInfo.status == SubmissionStatus.FAILED) GROUP.createNotification(DiagnosticBundle.message("error.report.title"),
|
||||
reportInfo.linkText, NotificationType.ERROR).setImportant(false).notify(project)
|
||||
else GROUP.createNotification(DiagnosticBundle.message("error.report.title"), reportInfo.linkText,
|
||||
NotificationType.INFORMATION).setListener(NotificationListener.URL_OPENING_LISTENER).setImportant(false).notify(project)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Messages and strings used by the error reporter
|
||||
*/
|
||||
private object ErrorReportBundle {
|
||||
@NonNls
|
||||
private const val BUNDLE = "error-reporting.report-bundle"
|
||||
private val bundle: ResourceBundle by lazy { ResourceBundle.getBundle(BUNDLE) }
|
||||
|
||||
@JvmStatic
|
||||
internal fun message(@PropertyKey(resourceBundle = BUNDLE) key: String, vararg params: Any) =
|
||||
AbstractBundle.message(bundle, key, *params)
|
||||
}
|
||||
|
||||
private class AnonymousFeedbackTask(
|
||||
project: Project?, title: String, canBeCancelled: Boolean,
|
||||
private val params: MutableMap<String, String>,
|
||||
private val callback: Consumer<SubmittedReportInfo>) : Task.Backgroundable(project, title, canBeCancelled, DEAF) {
|
||||
override fun run(indicator: ProgressIndicator) {
|
||||
callback.consume(AnonymousFeedback.sendFeedback(params))
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Collects information about the running IDEA and the error
|
||||
*/
|
||||
private fun getKeyValuePairs(
|
||||
errorContext: ErrorContext,
|
||||
appInfo: ApplicationInfoEx,
|
||||
namesInfo: ApplicationNamesInfo): MutableMap<String, String> {
|
||||
|
||||
val params = mutableMapOf(
|
||||
"error.description" to errorContext.description,
|
||||
"Plugin Name" to errorContext.pluginName,
|
||||
"Plugin Version" to RainbowSettings.instance.version,
|
||||
"OS Name" to SystemInfo.OS_NAME,
|
||||
"OS Version" to SystemInfo.OS_VERSION,
|
||||
"Java Version" to SystemInfo.JAVA_VERSION,
|
||||
"App Name" to namesInfo.productName,
|
||||
"App Full Name" to namesInfo.fullProductName,
|
||||
"Is Snapshot" to java.lang.Boolean.toString(appInfo.build.isSnapshot),
|
||||
"App Build" to appInfo.build.asString(),
|
||||
"error.message" to errorContext.errorClass,
|
||||
"error.stacktrace" to "\n```\n" + errorContext.stackTrace + "\n```\n")
|
||||
for (attachment in errorContext.attachments) {
|
||||
params["attachment.${attachment.name}"] = attachment.path
|
||||
params["attachment.${attachment.name}.value"] = "\n```\n" + attachment.displayText + "\n```\n"
|
||||
}
|
||||
return params
|
||||
}
|
@ -1,30 +0,0 @@
|
||||
# suppress inspection "UnusedProperty" for whole file
|
||||
#
|
||||
# Copyright (c) 2017 Patrick Scheibe
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
#
|
||||
|
||||
report.error.to.plugin.vendor=Report error on GitHub
|
||||
report.error.progress.dialog.text=Submitting error report...
|
||||
report.error.connection.failure=Could not communicate with GitHub
|
||||
|
||||
git.issue.title=[Auto Generated Report]{0}
|
||||
git.issue.label=auto-generated
|
||||
git.issue.text=<a href="{0}">Created issue {1}</a>. Thanks for your feedback!
|
||||
git.issue.duplicate.text=<a href="{0}">A similar issues was already reported (#{1})</a>. Thanks for your feedback!
|
Loading…
Reference in New Issue
Block a user