Passed
Push — master ( 816317...cc1553 )
by John
03:01
created

bbarchivist.scripts.linkgen   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 91
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 51
dl 0
loc 91
rs 10
c 0
b 0
f 0
wmc 7

3 Functions

Rating   Name   Duplication   Size   Complexity  
A questionnaire() 0 13 4
A linkgen_main() 0 21 1
A grab_args() 0 33 2
1
#!/usr/bin/env python3
2
"""Generate links from OS/radio/software."""
3
4
import sys  # load arguments
5
6
from bbarchivist import argutils  # arguments
7
from bbarchivist import decorators  # enter to exit
8
from bbarchivist import scriptutils  # script stuff
9
from bbarchivist import utilities  # increment version, if radio not specified
10
11
__author__ = "Thurask"
12
__license__ = "WTFPL v2"
13
__copyright__ = "2015-2018 Thurask"
14
15
16
def grab_args():
17
    """
18
    Parse arguments from argparse/questionnaire.
19
20
    Invoke :func:`linkgen.linkgen_main` with those arguments.
21
    """
22
    if len(sys.argv) > 1:
23
        parser = argutils.default_parser("bb-linkgen", "Bar link generation", ("osr"))
24
        parser.add_argument(
25
            "-r",
26
            "--radiosw",
27
            dest="altsw",
28
            metavar="SW",
29
            help="Radio software version, if not same as OS",
30
            nargs="?",
31
            default=None)
32
        parser.add_argument(
33
            "-s",
34
            "--sdk",
35
            dest="sdk",
36
            help="Force SDK images",
37
            action="store_true",
38
            default=False)
39
        parser.set_defaults()
40
        args = parser.parse_args(sys.argv[1:])
41
        linkgen_main(
42
            args.os,
43
            args.radio,
44
            args.swrelease,
45
            args.altsw,
46
            args.sdk)
47
    else:
48
        questionnaire()
49
50
51
def questionnaire():
52
    """
53
    Questions to ask if no arguments given.
54
    """
55
    osversion = input("OS VERSION (REQUIRED): ")
56
    radioversion = input("RADIO VERSION (PRESS ENTER TO GUESS): ")
57
    softwareversion = input("OS SOFTWARE RELEASE (PRESS ENTER TO GUESS): ")
58
    radioversion = None if not radioversion else radioversion
59
    usealt = False if not radioversion else utilities.i2b("ALTERNATE RADIO (Y/N)?: ")
60
    softwareversion = None if not softwareversion else softwareversion
61
    altsw = scriptutils.check_altsw(usealt)
62
    linkgen_main(osversion, radioversion, softwareversion, altsw)
63
    decorators.enter_to_exit(True)
64
65
66
def linkgen_main(osversion, radioversion=None, softwareversion=None,
67
                 altsw=None, sdk=False):
68
    """
69
    Generate debrick/core/radio links for given OS, radio, software release.
70
71
    :param osversion: OS version, 10.x.y.zzzz.
72
    :type osversion: str
73
74
    :param radioversion: Radio version, 10.x.y.zzzz. Can be guessed.
75
    :type radioversion: str
76
77
    :param softwareversion: Software version, 10.x.y.zzzz. Can be guessed.
78
    :type softwareversion: str
79
80
    :param altsw: Radio software release, if not the same as OS.
81
    :type altsw: str
82
83
    :param sdk: If we specifically want SDK images. Default is False.
84
    :type sdk: bool
85
    """
86
    scriptutils.linkgen(osversion, radioversion, softwareversion, altsw, False, sdk)
87
88
89
if __name__ == "__main__":
90
    grab_args()
91