Source code for bbarchivist.scripts.infogenerator

#!/usr/bin/env python3
"""Makes a nice info file for a folder of autoloaders."""

import os  # path operations
import sys  # load arguments

from bbarchivist import argutils  # arguments
from bbarchivist import scriptutils  # script frontends
from bbarchivist import utilities  # input validation

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


[docs]def grab_args(): """ Parse arguments from argparse/questionnaire. Invoke :func:`bbarchivist.scriptutils.make_info` with those arguments. """ if len(sys.argv) > 1: argflags = ("folder", "osr") parser = argutils.default_parser("bb-infogen", "Generate info files", flags=argflags) parser.add_argument( "-d", "--device", help="Device (Android only)", nargs="?", default=None, type=argutils.droidlookup_devicetype) parser.set_defaults() args = parser.parse_args(sys.argv[1:]) execute_args(args) else: questionnaire()
[docs]def questionnaire(): """ Questions to ask if no arguments given. """ folder = os.getcwd() osver = input("OS VERSION: ") android = utilities.i2b("ANDROID OS (Y/N)?: ") if android: device = input("DEVICE: ") radio = None software = None else: device = None radio = input("RADIO VERSION: ") software = input("SOFTWARE RELEASE: ") print(" ") infogenerator_main(folder, osver, radio, software, device)
[docs]def execute_args(args): """ Get args and decide what to do with them. :param args: Arguments. :type args: argparse.Namespace """ args.folder = utilities.dirhandler(args.folder, os.getcwd()) infogenerator_main(args.folder, args.os, args.radio, args.swrelease, args.device)
[docs]def infogenerator_main(folder, osver, radio=None, swrelease=None, device=None): """ Wrap around :mod:`bbarchivist.scriptutils` info generation. :param folder: Path to folder to analyze. :type folder: str :param osver: OS version, required for both types. :type osver: str :param radio: Radio version, required for QNX. :type radio: str :param swrelease: Software release, required for QNX. :type swrelease: str :param device: Device type, required for Android. :type device: str """ scriptutils.make_info(folder, osver, radio, swrelease, device)
if __name__ == "__main__": grab_args()