aboutsummaryrefslogtreecommitdiff
blob: 0658237b3f49321046dcc5369d693276dbb66746 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# (c) 2017, Alice Ferrazzi <alice.ferrazzi@gmail.com>
# Distributed under the terms of the GNU General Public License v2 or later


import argparse
try:
    import ConfigParser
except:
    import configparser as ConfigParser

class ArgsParser(object):

    def __init__(self):
        conf_parser = argparse.ArgumentParser(
            # Turn off help, so we print all options in response to -h
            add_help=False
        )
        conf_parser.add_argument("-c", "--conf_file",
                                 help="Specify config file", metavar="FILE")
        args, remaining_argv = conf_parser.parse_known_args()
        defaults = {
            "config" : "/proc/config.gz",
        }
        if args.conf_file:
            config = ConfigParser.SafeConfigParser()
            config.read([args.conf_file])
            defaults = dict(config.items("Defaults"))

        # Don't surpress add_help here so it will handle -h
        parser = argparse.ArgumentParser(
            # Inherit options from config_parser
            parents=[conf_parser],
            # print script description with -h/--help
            description=__doc__,
            # Don't mess with format of description
            formatter_class=argparse.RawDescriptionHelpFormatter,
        )
        parser.set_defaults(**defaults)
        parser.add_argument("-e","--cve", action='store_true', help="Check for secutiry problems in the kernel.")
        parser.add_argument("-p","--patch", help="patch to convert.")
        parser.add_argument("-k","--config", help="set kernel config file manually.")
        parser.add_argument("-u","--url", help="set elivepatch server url.")
        parser.add_argument("-d","--debug", action='store_true', help="set the debug option.")
        parser.add_argument("-v","--version", action='store_true', help="set the verbose option.")
        self.args = parser.parse_args(remaining_argv)

    def get_arg(self):
        return self.args