source: branches/gsoc14-pip2port/tester.py @ 120258

Last change on this file since 120258 was 120258, checked in by gaurav@…, 5 years ago

Added multiple versions support

  • Property svn:executable set to *
File size: 3.1 KB
Line 
1# -*- coding: utf-8 -*-
2#! /usr/bin/env python
3
4import argparse
5import sys
6try:
7    import xmlrpclib
8except ImportError:
9    import xmlrpc.client as xmlrpclib
10
11client = xmlrpclib.ServerProxy('http://pypi.python.org/pypi')
12
13def list_all():
14    list_packages = client.list_packages()
15    for package in list_packages:
16        print package
17
18def search(pkg_name):
19    print "\n"
20    values=client.search({'name':pkg_name})
21    for value in values:
22        for key in value.keys():
23            print key,'-->',value[key]
24        print "\n"
25
26def data(pkg_name,pkg_versions=None):
27    print "\n"
28    if not pkg_versions:
29        version = client.search({'name':pkg_name})[0]['version']
30        values = client.release_data(pkg_name,version)
31#        print values
32        if values:
33            for key in values.keys():
34                print key,'-->',values[key]
35        else:
36            print "No such package found."
37            print "Please specify the exact package name."
38    else:
39        for version in pkg_versions:
40            values = client.release_data(pkg_name,version)
41#            print values
42            if values:
43                for key in values.keys():
44                    print key,'-->',values[key]
45            else:
46                print "No such package found."
47                print "Please specify the exact package name."
48    print "\n"
49
50def main(args=None):
51    parser = argparse.ArgumentParser(description='pip2port tester script.')
52
53    parser.add_argument('package_name', 
54                       metavar='package_name', type=str, nargs='?', 
55                       help='Package_Name')
56    parser.add_argument('package_version', 
57                       metavar='package_version', type=str, nargs='*', 
58                       help='Package_Version(s)')
59    parser.add_argument('-l', '--list_packages', action='store_const', 
60                       dest='action', const='list_packages', required=False,
61                       help='List all packages')
62    parser.add_argument('-s', '--search', action='store_const',
63                       dest='action', const='search', required=False,
64                       help='Search for a package by <package_name>')
65    parser.add_argument('-d', '--data', action='store_const',
66                       dest='action', const='data', required=False,
67                       help='Releases data for a package by <package_name>')
68   
69
70    options=parser.parse_args()
71#    print options
72
73    if options.action == 'list_packages':
74        list_all()
75        return
76
77    if options.action == 'search':
78        if options.package_name == None:
79            parser.error("No package name specified")
80        else:
81            search(options.package_name)
82        return
83
84    if options.action == 'data':
85        if options.package_name == None:
86            parser.error("No package name specified")
87        else:
88            if options.package_version == None:
89                data(options.package_name)
90            else:
91                data(options.package_name,options.package_version)
92        return
93    else:
94#        parser.print_help()
95        parser.error("No input specified")
96
97
98if __name__ == "__main__":
99    main()
Note: See TracBrowser for help on using the repository browser.