From 28d649368bbe69d60139474eb8a8ee6a4a201681 Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Sun, 24 Sep 2017 12:37:26 -0400 Subject: [PATCH] update --unused . Signed-off-by: Kenneth Reitz --- pipenv/cli.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/pipenv/cli.py b/pipenv/cli.py index 6eb9d702..c64a67c6 100644 --- a/pipenv/cli.py +++ b/pipenv/cli.py @@ -2147,13 +2147,32 @@ def graph(bare=False, json=False): @click.option('--three/--two', is_flag=True, default=None, help="Use Python 3/2 when creating virtualenv.") @click.option('--python', default=False, nargs=1, help="Specify which version of Python virtualenv should use.") @click.option('--dry-run', is_flag=True, default=False, help="Just output outdated packages.") +@click.option('--unused', nargs=1, default=False, help="Given a code path, show potentially unused dependencies.") @click.option('--bare', is_flag=True, default=False, help="Minimal output.") @click.option('--clear', is_flag=True, default=False, help="Clear the dependency cache.") -def update(dev=False, three=None, python=None, dry_run=False, bare=False, dont_upgrade=False, user=False, verbose=False, clear=False): +def update(dev=False, three=None, python=None, dry_run=False, bare=False, dont_upgrade=False, user=False, verbose=False, clear=False, unused=False): # Ensure that virtualenv is available. ensure_project(three=three, python=python, validate=False) + if unused: + deps_required = [k for k in project.packages.keys()] + deps_needed = [k.lower() for k in import_from_code(unused)] + + for dep in deps_needed: + try: + deps_required.remove(dep) + except ValueError: + pass + + if deps_required: + click.echo(crayons.white('The following dependencies appear unused, and may be safe for removal:')) + for dep in deps_required: + click.echo(' - {0}'.format(crayons.green(dep))) + sys.exit(1) + else: + sys.exit(0) + # --dry-run: if dry_run: # dont_upgrade = True