diff --git a/.gitignore b/.gitignore index 66947e9..a8842fa 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ npm-debug.log node_modules lib/bin/test* NOTES +ansible.cfg diff --git a/images/screenshot-settings.png b/images/screenshot-settings.png index f3f6b57..253caa2 100644 Binary files a/images/screenshot-settings.png and b/images/screenshot-settings.png differ diff --git a/lib/ansible-vault-utils.js b/lib/ansible-vault-utils.js index 39a515a..1a73adf 100644 --- a/lib/ansible-vault-utils.js +++ b/lib/ansible-vault-utils.js @@ -5,6 +5,8 @@ import AnsibleVaultView from './ansible-vault-view'; import { CompositeDisposable } from 'atom'; import { File } from 'atom'; import fs from 'fs'; +import ini from 'ini'; + export default class AnsibleVaultUtils { @@ -70,6 +72,7 @@ export default class AnsibleVaultUtils { execChild(cmd, (error, stdout, stderr) => { if (error) { exitCode = 1; + output = stderr; } else { exitCode = 0; output = vault_filepath + ": OK" @@ -88,7 +91,23 @@ export default class AnsibleVaultUtils { let unlinkF = false; if (atom.config.get("ansible-vault.vault_password_file_flag")) { - password_file = atom.config.get("ansible-vault.vault_password_file_path") + if (atom.config.get("ansible-vault.vault_password_file_forcing")) { + password_file = atom.config.get("ansible-vault.vault_password_file_path"); + } else { + project_path = atom.project.relativizePath(vault_filepath)[0] + const listFiles = require('fs-plus').listSync; + ansible_cfg_file = listFiles(project_path, ['cfg']).map(function(el) { if (el.includes('ansible.cfg')) return el ; } ); + if (ansible_cfg_file.length <= 0) { + password_file = atom.config.get("ansible-vault.vault_password_file_path"); + } else { + let ansible_cfg = ini.parse(fs.readFileSync(ansible_cfg_file[0],'utf-8')); + if(ansible_cfg.defaults.vault_password_file) { + password_file = ansible_cfg.defaults.vault_password_file; + } else { + password_file = atom.config.get("ansible-vault.vault_password_file_path"); + } + } + } } if (password_file == "") { diff --git a/lib/config-schema.coffee b/lib/config-schema.coffee index 3a231dd..8cacc2d 100644 --- a/lib/config-schema.coffee +++ b/lib/config-schema.coffee @@ -4,7 +4,11 @@ module.exports = type: 'string' default: '/usr/local/bin/ansible-vault' vault_password_file_flag: - title: 'Use a global vault password file' + title: 'Use vault password file defined in ansible.cfg project' + type: 'boolean' + default: false + vault_password_file_forcing: + title: 'Force specific vault password file' type: 'boolean' default: false vault_password_file_path: