From 723f23233c39f632ab252586c3b9e866aca74921 Mon Sep 17 00:00:00 2001 From: Q Date: Wed, 26 Jun 2024 08:12:25 +0300 Subject: [PATCH] more helpsies --- Bakefile | 29 ++++++++++++++++++++--------- qgpg/__init__.py | 25 ++++++++++++++++++++++--- 2 files changed, 42 insertions(+), 12 deletions(-) diff --git a/Bakefile b/Bakefile index 37c37ad..4fb53a0 100644 --- a/Bakefile +++ b/Bakefile @@ -1,4 +1,11 @@ +build() { + . useve-runner + useve syncbin + python3 -m hatchling build + echo "copy dist/ to six9.net/py/qgpg/" +} + install_useve() { set -e @@ -8,26 +15,30 @@ install_useve() { } -test_stuff() { +test_encrypt() { cd ~/tmp/ . useve-runner - useve qgpg - rm -f key2* peak.gpg + rm -fr key2* datadir GPGPASS=secret @ qgpg --key key2 k - @ find datadir -type f -name '*gpg' | xargs -II rm -v I + @ mkdir -p datadir/folder{1,2} @ dd if=/dev/random of=datadir/testfile bs=1024 count=102400 - @ qgpg --key key2.pub e datadir/lockscreens/peakpx.jpg - @ qgpg --key key2.pub e datadir/lockscreens/peakpx.jpg peak.gpg + for i in {1..10}; do + dd if=/dev/random of=datadir/folder1/${i}testfile bs=1024 count=10240 &> /dev/null + dd if=/dev/random of=datadir/folder2/${i}testfile bs=1024 count=10240 &> /dev/null + done + @ qgpg --key key2.pub e datadir/folder1/1testfile + @ qgpg --key key2.pub e datadir/folder1/1testfile datadir/1testfile.encrypted.gpg @ qgpg --key key2.pub -r e datadir @ qgpg --key key2.pub -r e datadir + @ hash-update -t sha1 -f sha1sum.txt -r datadir } test_decrypt() { cd ~/tmp/ . useve-runner - useve qgpg - @ find datadir -type f -name '*jpg' | xargs -II rm -v I - @ qgpg --key key2 -r d datadir + @ find datadir -type f -name '*testfile' | xargs -II rm -v I + GPGPASS=secret @ qgpg --key key2 -r d datadir + @ hash-update -t sha1 -f sha1sum.txt -c } diff --git a/qgpg/__init__.py b/qgpg/__init__.py index abd70da..fc81103 100644 --- a/qgpg/__init__.py +++ b/qgpg/__init__.py @@ -96,8 +96,27 @@ class MiniProgress: def get_opts(): """Returns command line arguments""" parser = argparse.ArgumentParser( - description="Recursive gpg encryption. ", - epilog="Private key passphrase can be set to env variable GPGPASS, otherwise will prompt", + formatter_class=argparse.RawDescriptionHelpFormatter, + description="Wrapper to GPG, allowing recursive encryption.", + epilog="""Private key passphrase can be set to env variable GPGPASS, otherwise will prompt + +Usage +===== + +- Generate keys: + qgpg --key ./path/mykey keygen + - This will create private and public keys, mykey and mykey.pub + - Share the public key to someone who will encrypt data to you +- Encrypt file: + qgpg --key ./mykey.pub encrypt ./plain_file.txt ./encrypted_file.txt.gpg +- Encrypt all files in a folder: + qgpg --key ./mykey.pub -r encrypt ./folder/ +- Decrypt all files with the private key: + qgpg --key ./mykey -r decrypt ./encrypted_folder/ +- Using passhprase in a variable: + GPGPASS=mysecretpassword qgpg --key ./mykey dectypt file.gpg file.txt + +""", ) parser.add_argument("--width", help="Console width in characters. Defaults to auto detect.") parser.add_argument("--no-progress", help="Disable progress meter.", default=False, action="store_true") @@ -172,7 +191,7 @@ class Processor: self.set_phrase() n_f = len(filelist) for i, f in enumerate(filelist): - print(f"{i}/{n_f} {f} {self.opts.command}ing", file=sys.stderr) + print(f"{i+1}/{n_f} {self.opts.command}ing {f} ", file=sys.stderr) self.process_single(f) self.homedir.cleanup()