aboutsummaryrefslogtreecommitdiff
blob: 8c369ab9bbcd0c2b79ff58a76d432600d3ed8df3 (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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
from __future__ import print_function

import pprint as pp
from gentoostats import utils

def pprint(title, object):
    """
    Pretty printer for the decoded json data
    """
    print(title)
    pp.pprint(object)

def add_parser(subparsers):
    """
    Setup argparse parsers
    """
    list_parser = subparsers.add_parser('list')
    list_subparsers = list_parser.add_subparsers(dest='subcommand')
    list_subparsers.required = True

    objects = {
            'arch': ['parser_arch', list_arch],
            'feature': ['parser_feature', list_feature],
            'lang': ['parser_lang', list_lang],
            'mirror': ['parser_mirror', list_mirror],
            'repo': ['parser_repo', list_repo],
            'package': ['parser_package', list_package],
            'use': ['parser_use', list_use]
            }
    for obj in objects.keys():
        parser = vars()[objects[obj][0]] = list_subparsers.add_parser(obj)
        parser.set_defaults(command=objects[obj][1])

    # need separate arguments for package
    parser = vars()[objects['package'][0]]
    parser.add_argument('-t', '--top', type=int)
    parser.add_argument('-c', '--category')
    parser.add_argument('-p', '--package')
    parser.add_argument('-v', '--version')

    # need separate arguments for use
    parser = vars()[objects['use'][0]]
    parser.add_argument('--use')

def list_arch(args):
    """
    /arch
    """
    data = list(args.server, args.url, '/arch', utils.headers)
    pprint('Arch', data)

def list_feature(args):
    """
    /feature
    """
    data = list(args.server, args.url, '/feature', utils.headers)
    pprint('Feature', data)

def list_lang(args):
    """
    /lang
    """
    data = list(args.server, args.url, '/lang', utils.headers)
    pprint('Lang', data)

def list_mirror(args):
    """
    /mirror
    """
    data = list(args.server, args.url, '/mirror', utils.headers)
    pprint('Mirror', data)

def list_repo(args):
    """
    /repo
    """
    data = list(args.server, args.url, '/repo', utils.headers)
    pprint('Repo', data)

def list_package(args):
    """
    /package
    """
    url_top = ''
    if args.top:
        url_top = '?top=' + str(args.top)

    title = 'Categories'
    url_pkg = '/package'
    if args.category:
        title = 'Category: ' + args.category
        url_pkg += '/' + args.category
        if args.package:
            title = 'Category-Package: ' + args.category + '/' + args.package
            url_pkg += '/' + args.package
            if args.version:
                title = 'Category-Package-Version: ' + args.category + '/' + args.package + '-' + args.version
                url_pkg += '-' + args.version

    data = list(args.server, args.url, url_pkg + url_top, utils.headers)
    pprint(title, data)

def list_use(args):
    """
    /use
    """
    url_use = '/use'
    title = 'Useflags'
    if args.use:
        title = 'Useflag: ' + args.use
        url_use += '/' + args.use

    data = list(args.server, args.url, url_use, utils.headers)
    pprint(title, data)


def list(server, url_base, url_extra, headers):
    """
    Get and decode json from url
    """
    get_data = utils.GET(server=server, url=url_base+url_extra, headers=headers)
    data = utils.deserialize(get_data)
    return data