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)