|
|
- import os
- import tarfile
- from gnupg import GPG
- from ranger.api.commands import Command
-
-
- class decrypt(Command):
- """:decrypts
-
- Decrypts a file with gpg or a directory by extracting a tar file and decrypting it
-
- passing true as the false flag will not delete the origin gpg file
- """
-
- def execute(self):
- gpg = GPG(gnupghome=os.path.join(os.path.expanduser('~'), '.gnupg'))
-
- paths = [os.path.basename(f.path) for f in self.fm.thistab.get_selection()]
-
- for p in [p for p in paths if p.endswith('gpg')]:
- with open(p, 'rb') as enc:
- dec_b = gpg.decrypt_file(enc)
-
- out_fname = os.path.splitext(p)[0]
- with open(out_fname, 'wb+') as dec_f:
- dec_f.write(dec_b.data)
-
- if self.arg(1) != 'true':
- os.remove(p)
-
- if tarfile.is_tarfile(out_fname):
- tarfile.open(out_fname).extractall(path='.')
- os.remove(out_fname)
|