From 0bb34fd0765d56ce17c31fe0d1af3c20cc6f5885 Mon Sep 17 00:00:00 2001 From: Abhijit Menon-Sen Date: Wed, 30 Sep 2015 20:00:34 +0530 Subject: [PATCH] =?UTF-8?q?Make=20=C2=ABansible-vault=20view=C2=BB=20not?= =?UTF-8?q?=20write=20plaintext=20to=20a=20tempfile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CLI already provides a pager() method that feeds $PAGER on stdin, so we just feed that the plaintext from the vault file. We can also eliminate the redundant and now-unused shell_pager_command method in VaultEditor. --- lib/ansible/cli/vault.py | 2 +- lib/ansible/parsing/vault/__init__.py | 17 ++--------------- 2 files changed, 3 insertions(+), 16 deletions(-) diff --git a/lib/ansible/cli/vault.py b/lib/ansible/cli/vault.py index 086c55e35ee..63aa86e5f04 100644 --- a/lib/ansible/cli/vault.py +++ b/lib/ansible/cli/vault.py @@ -138,7 +138,7 @@ class VaultCLI(CLI): def execute_view(self): for f in self.args: - self.editor.view_file(f) + self.pager(self.editor.plaintext(f)) def execute_rekey(self): for f in self.args: diff --git a/lib/ansible/parsing/vault/__init__.py b/lib/ansible/parsing/vault/__init__.py index f1e544204ae..62df9b8dd1e 100644 --- a/lib/ansible/parsing/vault/__init__.py +++ b/lib/ansible/parsing/vault/__init__.py @@ -300,20 +300,14 @@ class VaultEditor: else: self._edit_file_helper(filename, existing_data=plaintext, force_save=False) - def view_file(self, filename): + def plaintext(self, filename): check_prereqs() - # FIXME: Why write this to a temporary file at all? It would be safer - # to feed it to the PAGER on stdin. - _, tmp_path = tempfile.mkstemp() ciphertext = self.read_data(filename) plaintext = self.vault.decrypt(ciphertext) - self.write_data(plaintext, tmp_path) - # drop the user into pager on the tmp file - call(self._pager_shell_command(tmp_path)) - os.remove(tmp_path) + return plaintext def rekey_file(self, filename, new_password): @@ -361,13 +355,6 @@ class VaultEditor: return editor - def _pager_shell_command(self, filename): - PAGER = os.environ.get('PAGER','less') - pager = shlex.split(PAGER) - pager.append(filename) - - return pager - class VaultFile(object): def __init__(self, password, filename):