#!/usr/bin/env python3
import sys # arguments
import argparse # argument parsing
import os
try:
from . import archivist # @UnusedImport
except SystemError:
import archivist # @UnresolvedImport @Reimport
try:
from . import bbconstants # @UnusedImport
except SystemError:
import bbconstants # @UnresolvedImport @Reimport
try:
from . import utilities # @UnusedImport
except SystemError:
import utilities # @UnresolvedImport @Reimport
[docs]def main():
"""
Parse arguments from argparse/questionnaire.
Invoke :func:`bbarchivist.archivist.doMagic` with those arguments.
"""
if len(sys.argv) > 1:
parser = argparse.ArgumentParser(
prog="bb-archivist",
description="Download bar files, create autoloaders.",
epilog="http://github.com/thurask/bbarchivist")
parser.add_argument(
"-v",
"--version",
action="version",
version="%(prog)s " +
bbconstants._version)
parser.add_argument("os", help="OS version, 10.x.y.zzzz")
parser.add_argument("radio", help="Radio version, 10.x.y.zzzz")
parser.add_argument("swrelease", help="Software version, 10.x.y.zzzz")
parser.add_argument(
"-f",
"--folder",
dest="folder",
help="Working folder",
default=os.getcwd(),
metavar="DIR")
parser.add_argument(
"-c",
"--cap",
type=utilities.file_exists,
dest="cappath",
help="Path to cap.exe",
default=os.path.join(
os.getcwd(),
bbconstants._caplocation),
metavar="PATH")
negategroup = parser.add_argument_group(
"negators",
"Disable program functionality")
negategroup.add_argument(
"-no",
"--no-download",
dest="download",
help="Don't download files",
action="store_false",
default=True)
negategroup.add_argument(
"-nx",
"--no-extract",
dest="extract",
help="Don't extract bar files",
action="store_false",
default=True)
negategroup.add_argument(
"-nl",
"--no-loaders",
dest="loaders",
help="Don't create autoloaders",
action="store_false",
default=True)
negategroup.add_argument(
"-nr",
"--no-radios",
dest="radloaders",
help="Don't make radio autoloaders",
action="store_false",
default=True)
negategroup.add_argument(
"-ns",
"--no-rmsigned",
dest="signed",
help="Don't remove signed files",
action="store_false",
default=True)
negategroup.add_argument(
"-nc",
"--no-compress",
dest="compress",
help="Don't compress loaders",
action="store_false",
default=True)
negategroup.add_argument(
"-nd",
"--no-delete",
dest="delete",
help="Don't delete uncompressed loaders",
action="store_false",
default=True)
negategroup.add_argument(
"-nv",
"--no-verify",
dest="verify",
help="Don't verify created loaders",
action="store_false",
default=True)
hashgroup = parser.add_argument_group(
"verifiers",
"Verification methods")
hashgroup.add_argument(
"--crc32",
dest="crc32",
help="Enable CRC32 verification",
action="store_true",
default=False)
hashgroup.add_argument(
"--adler32",
dest="adler32",
help="Enable Adler-32 verification",
action="store_true",
default=False)
hashgroup.add_argument(
"--md4",
dest="md4",
help="Enable MD4 verification",
action="store_true",
default=False)
hashgroup.add_argument(
"--sha224",
dest="sha224",
help="Enable SHA-224 verification",
action="store_true",
default=False)
hashgroup.add_argument(
"--sha384",
dest="sha384",
help="Enable SHA-384 verification",
action="store_true",
default=False)
hashgroup.add_argument(
"--sha512",
dest="sha512",
help="Enable SHA-512 verification",
action="store_true",
default=False)
hashgroup.add_argument(
"--ripemd160",
dest="ripemd160",
help="Enable RIPEMD-160 verification",
action="store_true",
default=False)
hashgroup.add_argument(
"--whirlpool",
dest="whirlpool",
help="Enable Whirlpool verification",
action="store_true",
default=False)
hashgroup.add_argument(
"--no-sha1",
dest="sha1",
help="Disable SHA-1 verification",
action="store_false",
default=True)
hashgroup.add_argument(
"--no-sha256",
dest="sha256",
help="Disable SHA-256 verification",
action="store_false",
default=True)
hashgroup.add_argument(
"--no-md5",
dest="md5",
help="Disable MD5 verification",
action="store_false",
default=True)
hashgroup.add_argument(
"-a",
"--all",
dest="all",
help="Use all methods",
action="store_true",
default=False)
comps = parser.add_argument_group("compressors", "Compression methods")
compgroup = comps.add_mutually_exclusive_group()
compgroup.add_argument(
"--7z",
dest="compmethod",
help="Compress with 7z, LZMA2",
action="store_const",
const="7z")
compgroup.add_argument(
"--tgz",
dest="compmethod",
help="Compress with tar, GZIP",
action="store_const",
const="tgz")
compgroup.add_argument(
"--tbz",
dest="compmethod",
help="Compress with tar, BZIP2",
action="store_const",
const="tbz")
compgroup.add_argument(
"--txz",
dest="compmethod",
help="Compress with tar, LZMA",
action="store_const",
const="txz")
compgroup.add_argument(
"--zip",
dest="compmethod",
help="Compress with zip, DEFLATE",
action="store_const",
const="zip")
parser.set_defaults(compmethod="7z")
args = parser.parse_args(sys.argv[1:])
if args.all is True:
args.adler32 = True
args.crc32 = True
args.sha1 = True
args.sha224 = True
args.sha256 = True
args.sha384 = True
args.sha512 = True
args.md5 = True
args.md4 = True
args.ripemd160 = True
args.whirlpool = True
archivist.do_magic(args.os, args.radio, args.swrelease,
args.folder, args.radloaders,
args.compress, args.delete, args.verify,
args.crc32, args.adler32, args.sha1,
args.sha224, args.sha256,
args.sha384, args.sha512, args.md5,
args.md4, args.ripemd160, args.whirlpool,
args.cappath, args.download,
args.extract, args.loaders,
args.signed, args.compmethod)
else:
localdir = os.getcwd()
osversion = input("OS VERSION: ")
radioversion = input("RADIO VERSION: ")
softwareversion = input("SOFTWARE RELEASE: ")
radios = utilities.str2bool(input("CREATE RADIO LOADERS? Y/N: "))
compressed = utilities.str2bool(input("COMPRESS LOADERS? Y/N: "))
if compressed:
deleted = utilities.str2bool(input("DELETE UNCOMPRESSED? Y/N: "))
else:
deleted = False
hashed = utilities.str2bool(input("GENERATE HASHES? Y/N: "))
print(" ")
archivist.do_magic(osversion, radioversion, softwareversion,
localdir, radios, compressed, deleted, hashed,
False, False, True, False, False,
False, False, True, False, False,
False, "cap-3.11.0.18.dat", True,
True, True, True, "7z")
smeg = input("Press Enter to exit") # @UnusedVariable