Source code for bbarchivist.scripts.gpgrunner

#!/usr/bin/env python3
"""Use GPG to sign all files in a directory."""

import getpass  # invisible passwords (cf. sudo)
import os  # path operations
import sys  # load arguments

from bbarchivist import argutils  # arguments
from bbarchivist import gpgutils  # main program
from bbarchivist import utilities  # bool parsing

__author__ = "Thurask"
__license__ = "WTFPL v2"
__copyright__ = "2015-2018 Thurask"


[docs]def prep_key(key): """ Prepare key. :param key: Key to use. 8-character hexadecimal, with or without 0x. :type key: str """ if key is None: key = input("PGP KEY (0x12345678): ") return key
[docs]def prep_pass(key, password): """ Prepare password. :param key: Key to use. 8-character hexadecimal, with or without 0x. :type key: str :param password: Passphrase for given key. :type password: str """ if password is None: password = getpass.getpass(prompt="PGP PASSPHRASE: ") write = utilities.i2b("SAVE PASSPHRASE (Y/N)?: ") password2 = password if write else None gpgutils.gpg_config_writer(key, password2) return password
[docs]def prep_key_pass(): """ Prepare key and password. """ key, password = gpgutils.gpg_config_loader() if key is None or password is None: key = prep_key(key) password = prep_pass(key, password) return key, password
[docs]def gpgrunner_main(): """ Parse arguments from argparse/questionnaire. Invoke :func:`bbarchivist.gpgutils.gpgrunner` with those arguments. """ parser = argutils.default_parser("bb-gpgrunner", "GPG-sign files") parser.add_argument( "folder", help="Working directory, default is local", nargs="?", default=None) parser.add_argument( "-s", "--selective", dest="selective", help="Filter out files generated by this package", default=False, action="store_true") parser.set_defaults() args = parser.parse_args(sys.argv[1:]) args.folder = utilities.dirhandler(args.folder, os.getcwd()) workfolder = args.folder key, password = prep_key_pass() print(" ") gpgutils.gpgrunner(workfolder, key, password, args.selective)
if __name__ == "__main__": gpgrunner_main()