Tim Peters | 182b5ac | 2004-07-18 06:16:08 +0000 | [diff] [blame] | 1 | """Checkversions - recursively search a directory (default: sys.prefix) |
Guido van Rossum | 5291037 | 1997-12-23 18:43:55 +0000 | [diff] [blame] | 2 | for _checkversion.py files, and run each of them. This will tell you of |
| 3 | new versions available for any packages you have installed.""" |
| 4 | |
| 5 | import os |
| 6 | import getopt |
| 7 | import sys |
Guido van Rossum | 5291037 | 1997-12-23 18:43:55 +0000 | [diff] [blame] | 8 | import pyversioncheck |
| 9 | |
| 10 | CHECKNAME="_checkversion.py" |
| 11 | |
| 12 | VERBOSE=1 |
| 13 | |
| 14 | USAGE="""Usage: checkversions [-v verboselevel] [dir ...] |
| 15 | Recursively examine a tree (default: sys.prefix) and for each package |
| 16 | with a _checkversion.py file compare the installed version against the current |
| 17 | version. |
| 18 | |
| 19 | Values for verboselevel: |
| 20 | 0 - Minimal output, one line per package |
| 21 | 1 - Also print descriptions for outdated packages (default) |
| 22 | 2 - Print information on each URL checked |
| 23 | 3 - Check every URL for packages with multiple locations""" |
| 24 | |
| 25 | def check1dir(dummy, dir, files): |
Martin v. Löwis | 23b44a3 | 2003-10-24 20:09:23 +0000 | [diff] [blame] | 26 | if CHECKNAME in files: |
| 27 | fullname = os.path.join(dir, CHECKNAME) |
| 28 | try: |
Neal Norwitz | 0168802 | 2007-08-12 00:43:29 +0000 | [diff] [blame] | 29 | exec(open(fullname).read()) |
Martin v. Löwis | 23b44a3 | 2003-10-24 20:09:23 +0000 | [diff] [blame] | 30 | except: |
Collin Winter | 6afaeb7 | 2007-08-03 17:06:41 +0000 | [diff] [blame] | 31 | print('** Exception in', fullname) |
Tim Peters | 182b5ac | 2004-07-18 06:16:08 +0000 | [diff] [blame] | 32 | |
Guido van Rossum | 5291037 | 1997-12-23 18:43:55 +0000 | [diff] [blame] | 33 | def walk1tree(tree): |
Alexandre Vassalotti | 4e6531e | 2008-05-09 20:00:17 +0000 | [diff] [blame] | 34 | os.walk(tree, check1dir, None) |
Martin v. Löwis | 23b44a3 | 2003-10-24 20:09:23 +0000 | [diff] [blame] | 35 | |
Guido van Rossum | 5291037 | 1997-12-23 18:43:55 +0000 | [diff] [blame] | 36 | def main(): |
Martin v. Löwis | 23b44a3 | 2003-10-24 20:09:23 +0000 | [diff] [blame] | 37 | global VERBOSE |
| 38 | try: |
| 39 | options, arguments = getopt.getopt(sys.argv[1:], 'v:') |
| 40 | except getopt.error: |
Collin Winter | 6afaeb7 | 2007-08-03 17:06:41 +0000 | [diff] [blame] | 41 | print(USAGE) |
Martin v. Löwis | 23b44a3 | 2003-10-24 20:09:23 +0000 | [diff] [blame] | 42 | sys.exit(1) |
| 43 | for o, a in options: |
| 44 | if o == '-v': |
| 45 | VERBOSE = int(a) |
| 46 | if not arguments: |
| 47 | arguments = [sys.prefix] |
| 48 | for dir in arguments: |
| 49 | walk1tree(dir) |
| 50 | |
Guido van Rossum | 5291037 | 1997-12-23 18:43:55 +0000 | [diff] [blame] | 51 | if __name__ == '__main__': |
Martin v. Löwis | 23b44a3 | 2003-10-24 20:09:23 +0000 | [diff] [blame] | 52 | main() |