Skip to content

Added possibility to check current ANSIBLE_VAULT_PASSWORD_FILE value and to override it in IDE config #194

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ changelog {

patchPluginXml {
//https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html#intellij-platform-based-products-of-recent-ide-versions
sinceBuild = "203"
sinceBuild = "213"

pluginDescription = """
Helps you create and edit Ansible Vaults
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package ru.sadv1r.idea.plugin.ansible.vault.editor
import com.intellij.openapi.fileTypes.FileType
import ru.sadv1r.ansible.vault.VaultHandler
import ru.sadv1r.ansible.vault.crypto.VaultInfo
import ru.sadv1r.idea.plugin.ansible.vault.editor.settings.AnsibleVaultEditorSettings
import ru.sadv1r.idea.plugin.ansible.vault.editor.ui.VaultEditorDialog
import ru.sadv1r.idea.plugin.ansible.vault.editor.ui.VaultPasswordDialog
import java.io.BufferedReader
Expand Down Expand Up @@ -62,7 +63,8 @@ abstract class Vault {
}

private fun tryWithDefaultOrAsk() {
val defaultPasswordFile = getPasswordFilePath()
val defaultPasswordFile = AnsibleVaultEditorSettings.getInstance().passwordFilePath
?: getPasswordFilePath()

if (defaultPasswordFile != null) {
try {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package ru.sadv1r.idea.plugin.ansible.vault.editor.settings

import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory
import com.intellij.openapi.options.BoundSearchableConfigurable
import com.intellij.openapi.ui.DialogPanel
import com.intellij.ui.dsl.builder.*
import com.intellij.ui.dsl.gridLayout.HorizontalAlign
import ru.sadv1r.idea.plugin.ansible.vault.editor.getPasswordFilePath

class AnsibleVaultEditorConfigurable : BoundSearchableConfigurable(
"Ansible Vault Editor",
"Ansible Vault Editor",
_id = "ru.sadv1r.idea.plugin.ansible.vault.editor.settings.AnsibleVaultEditorConfigurable"
) {

private val settings get() = AnsibleVaultEditorSettings.getInstance()

override fun createPanel(): DialogPanel {
return panel {
row("Vault password file:") {
val fileChooserDescriptor = FileChooserDescriptorFactory.createSingleFileDescriptor()

val overridePasswordFilePathCheckBox = checkBox("Override")
.bindSelected(settings::overridePasswordFilePath)
//TODO Flip this two
textFieldWithBrowseButton(fileChooserDescriptor = fileChooserDescriptor)
.enabledIf(overridePasswordFilePathCheckBox.selected)
.applyIfEnabled()
.bindText(
getter = { settings.passwordFilePath ?: getPasswordFilePath().orEmpty() },
setter = { settings.passwordFilePath = it }
)
.horizontalAlign(HorizontalAlign.FILL)
.columns(COLUMNS_MEDIUM)
}
}
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package ru.sadv1r.idea.plugin.ansible.vault.editor.settings

import com.intellij.openapi.components.ServiceManager
import com.intellij.openapi.components.SimplePersistentStateComponent
import com.intellij.openapi.components.State
import com.intellij.openapi.components.Storage

@State(name = "AnsibleVaultEditorSettings", storages = [Storage("ansible-vault-editor.xml")])
class AnsibleVaultEditorSettings :
SimplePersistentStateComponent<AnsibleVaultEditorSettingsState>(AnsibleVaultEditorSettingsState()) {

var overridePasswordFilePath
get() = state.saveOverridePasswordFilePath
set(value) { state.saveOverridePasswordFilePath = value }

var passwordFilePath
get() = state.savePasswordFilePath.takeIf { overridePasswordFilePath }
set(value) { state.savePasswordFilePath = value }

companion object {
fun getInstance(): AnsibleVaultEditorSettings {
return ServiceManager.getService(AnsibleVaultEditorSettings::class.java)
}
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package ru.sadv1r.idea.plugin.ansible.vault.editor.settings

import com.intellij.openapi.components.BaseState

class AnsibleVaultEditorSettingsState : BaseState() {

// "save" prefix because of "probably contains sensitive information" warning in BaseXmlOutputter
var saveOverridePasswordFilePath by property(false)
var savePasswordFilePath by string()

}
8 changes: 8 additions & 0 deletions src/main/resources/META-INF/plugin.xml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,14 @@
implementationClass="ru.sadv1r.idea.plugin.ansible.vault.editor.gutter.FileVaultLineMarkerProvider"/>
<codeInsight.lineMarkerProvider language="yaml"
implementationClass="ru.sadv1r.idea.plugin.ansible.vault.editor.gutter.PropertyVaultLineMarkerProvider"/>

<applicationService
serviceImplementation="ru.sadv1r.idea.plugin.ansible.vault.editor.settings.AnsibleVaultEditorSettings"/>
<applicationConfigurable
parentId="tools"
instance="ru.sadv1r.idea.plugin.ansible.vault.editor.settings.AnsibleVaultEditorConfigurable"
id="ru.sadv1r.idea.plugin.ansible.vault.editor.settings.AnsibleVaultEditorConfigurable"
displayName="Ansible Vault Editor"/>
</extensions>

<actions>
Expand Down