diff --git a/plugins/git4idea/resources/intellij.vcs.git.xml b/plugins/git4idea/resources/intellij.vcs.git.xml index 4d474b00cc64..ea60d762a486 100644 --- a/plugins/git4idea/resources/intellij.vcs.git.xml +++ b/plugins/git4idea/resources/intellij.vcs.git.xml @@ -520,6 +520,8 @@ + + diff --git a/plugins/git4idea/resources/messages/GitBundle.properties b/plugins/git4idea/resources/messages/GitBundle.properties index 4fdfa9f9be5e..06dbc3f8e01e 100644 --- a/plugins/git4idea/resources/messages/GitBundle.properties +++ b/plugins/git4idea/resources/messages/GitBundle.properties @@ -768,6 +768,8 @@ pgp.pinentry.configuration.proposal.title=GPG agent configuration pgp.pinentry.configuration.proposal.message=Configure GPG Agent to support own pinentry pgp.pinentry.configuration.proposal.configure=Configure +action.gpg.agent.configuration.text=Configure GPG Agent + gpg.pinentry.title=Unlock GPG Private Key gpg.pinentry.default.description=Please enter the passphrase to unlock the GPG private key: diff --git a/plugins/git4idea/src/git4idea/commit/signing/GpgAgentConfigurationAction.kt b/plugins/git4idea/src/git4idea/commit/signing/GpgAgentConfigurationAction.kt new file mode 100644 index 000000000000..75dcfa17e370 --- /dev/null +++ b/plugins/git4idea/src/git4idea/commit/signing/GpgAgentConfigurationAction.kt @@ -0,0 +1,24 @@ +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package git4idea.commit.signing + +import com.intellij.openapi.actionSystem.ActionUpdateThread +import com.intellij.openapi.actionSystem.AnActionEvent +import com.intellij.openapi.components.service +import com.intellij.openapi.project.DumbAwareAction +import git4idea.config.GitExecutableManager + +internal class GpgAgentConfigurationAction : DumbAwareAction() { + + override fun getActionUpdateThread(): ActionUpdateThread = ActionUpdateThread.BGT + + override fun update(e: AnActionEvent) { + val project = e.project + e.presentation.isEnabledAndVisible = project != null + && GpgAgentConfigurator.isEnabled(project, GitExecutableManager.getInstance().getExecutable(project)) + && !project.service().isConfigured(project) + } + + override fun actionPerformed(e: AnActionEvent) { + e.project?.service()?.configure() + } +}