diff --git a/lib/ansible/cli/vault.py b/lib/ansible/cli/vault.py index 086579c3337..e9eee78121c 100644 --- a/lib/ansible/cli/vault.py +++ b/lib/ansible/cli/vault.py @@ -102,17 +102,25 @@ class VaultCLI(CLI): def execute_encrypt(self): + if len(self.args) == 0 and sys.stdin.isatty(): + self.display.display("Reading plaintext input from stdin", stderr=True) + for f in self.args or ['-']: self.editor.encrypt_file(f, output_file=self.options.output_file) - self.display.display("Encryption successful", stderr=True) + if sys.stdout.isatty(): + self.display.display("Encryption successful", stderr=True) def execute_decrypt(self): + if len(self.args) == 0 and sys.stdin.isatty(): + self.display.display("Reading ciphertext input from stdin", stderr=True) + for f in self.args or ['-']: self.editor.decrypt_file(f, output_file=self.options.output_file) - self.display.display("Decryption successful", stderr=True) + if sys.stdout.isatty(): + self.display.display("Decryption successful", stderr=True) def execute_create(self): diff --git a/lib/ansible/parsing/vault/__init__.py b/lib/ansible/parsing/vault/__init__.py index e7c60611e8f..7746a2de29c 100644 --- a/lib/ansible/parsing/vault/__init__.py +++ b/lib/ansible/parsing/vault/__init__.py @@ -329,25 +329,24 @@ class VaultEditor: def read_data(self, filename): try: if filename == '-': - f = sys.stdin + data = sys.stdin.read() else: - f = open(filename, "rb") - data = f.read() - f.close() + with open(filename, "rb") as fh: + data = fh.read() except Exception as e: raise AnsibleError(str(e)) return data def write_data(self, data, filename): + bytes = to_bytes(data, errors='strict') if filename == '-': - f = sys.stdout + sys.stdout.write(bytes) else: if os.path.isfile(filename): os.remove(filename) - f = open(filename, "wb") - f.write(to_bytes(data, errors='strict')) - f.close() + with open(filename, "wb") as fh: + fh.write(bytes) def shuffle_files(self, src, dest): # overwrite dest with src