Another copy of my dotfiles. Because I don't completely trust GitHub.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

33 lines
979 B

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)