diff --git a/README.md b/README.md index f8a56c524a3a10e6f7d14a87e5742b92ebb6eadc..c3914badc5e24445ee8c2edec41850a9d18d6560 100644 --- a/README.md +++ b/README.md @@ -7,14 +7,16 @@ Python 2.7 is required. ## Usage ```console -usage: pipdeps [-h] (-l | -u) +$ pipdeps.py --help +usage: pipdeps.py [-h] (-l | -u | -s SHOW [SHOW ...]) Pipdeps shows/upgrades outdated packages with respect to existing dependencies. optional arguments: - -h, --help show this help message and exit - -l, --list show upgradable packages and versions - -u, --upgrade upgrade upgradable packages - + -h, --help show this help message and exit + -l, --list show upgradeable packages and versions + -u, --upgrade upgrade upgradeable packages + -s SHOW [SHOW ...], --show SHOW [SHOW ...] + show detailed info about upgradeable packages ``` diff --git a/pipdeps/pipdeps.py b/pipdeps/pipdeps.py index e21948140ddcdc0895a5bf79b66d9febf89f26be..a794e0542a2bd607f47bb470272a0ff0504b2d75 100644 --- a/pipdeps/pipdeps.py +++ b/pipdeps/pipdeps.py @@ -5,10 +5,11 @@ import argparse import json import distutils.version import os -import urllib2 +import pprint import re import subprocess import sys +import urllib2 import tarfile import tempfile import zipfile @@ -32,6 +33,9 @@ def arg_parse(): group.add_argument('-u', '--upgrade', action='store_true', help="upgrade upgradeable packages") + group.add_argument('-s', '--show', + nargs='+', + help="show detailed info about upgradeable packages") return parser.parse_args() def get_pyver(): @@ -312,6 +316,23 @@ def select_pkgs(packages_data, rkey): result[pkg] = pkg_data return result +def print_list(upgradeable_pkgs): + """ + Provides list option + """ + if upgradeable_pkgs: + data = [] + for pkg, pkg_data in sorted(upgradeable_pkgs.iteritems(), key=lambda x: x[0].lower()): + data.append([pkg, pkg_data['installed_version'], pkg_data['upgradeable_version']]) + print tabulate.tabulate( + data, + ['package', 'installed_version', 'upgradeable_version'] + ) + sys.exit(1) + else: + print "There is nothing to upgrade." + sys.exit(0) + def main(): """ main function @@ -339,18 +360,11 @@ def main(): upgradeable_pkgs = select_pkgs(packages_data, 'upgradeable_version') if arguments.list: - if upgradeable_pkgs: - data = [] - for pkg, pkg_data in sorted(upgradeable_pkgs.iteritems(), key=lambda x: x[0].lower()): - data.append([pkg, pkg_data['installed_version'], pkg_data['upgradeable_version']]) - print tabulate.tabulate( - data, - ['package', 'installed_version', 'upgradeable_version'] - ) - sys.exit(1) - else: - print "There is nothing to upgrade." - sys.exit(0) + print_list(upgradeable_pkgs) + if arguments.show: + for pkg in arguments.show: + pprint.pprint({pkg: packages_data[pkg]}) + sys.exit(0) if arguments.upgrade: if 'pip' in upgradeable_pkgs.keys(): upgrade_package('pip', upgradeable_pkgs['pip']['upgradeable_version'])