More helpful prompts from ansible-vault encrypt/decrypt

Now we issue a "Reading … from stdin" prompt if our input isatty(), as
gpg does. We also suppress the "x successful" confirmation message at
the end if we're part of a pipeline.

(The latter requires that we not close sys.stdout in VaultEditor, and
for symmetry we do the same for sys.stdin, though it doesn't matter in
that case.)
pull/12112/head
Abhijit Menon-Sen 9 years ago
parent b6de6e69a6
commit 090cfc9e03

@ -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):

@ -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

Loading…
Cancel
Save