From a6446c12c502d4e76764a8943e0e1fe9d3d1085e Mon Sep 17 00:00:00 2001 From: Timo Furrer Date: Thu, 26 Jan 2017 19:39:19 +0100 Subject: [PATCH 1/3] Support uninstalling of dev packages. Closes #103 --- pipenv/cli.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/pipenv/cli.py b/pipenv/cli.py index 40f75ac8..d4d35309 100644 --- a/pipenv/cli.py +++ b/pipenv/cli.py @@ -92,6 +92,7 @@ def ensure_project(three=None): ensure_pipfile() ensure_virtualenv(three=three) + def ensure_proper_casing(): """Ensures proper casing of Pipfile packages, writes to disk.""" p = project.parsed_pipfile @@ -642,7 +643,8 @@ def install(package_name=False, more_packages=False, dev=False, three=False, sys @click.option('--three/--two', is_flag=True, default=None, help="Use Python 3/2 when creating virtualenv.") @click.option('--system', is_flag=True, default=False, help="System pip management.") @click.option('--lock', is_flag=True, default=False, help="Lock afterwards.") -def uninstall(package_name=False, more_packages=False, three=None, system=False, lock=False): +@click.option('--dev', '-d', is_flag=True, default=False, help="Un-install package(s) from [dev-packages].") +def uninstall(package_name=False, more_packages=False, three=None, system=False, lock=False, dev=False): # Ensure that virtualenv is available. ensure_project(three=three) @@ -661,8 +663,12 @@ def uninstall(package_name=False, more_packages=False, three=None, system=False, c = delegator.run('{0} uninstall {1} -y'.format(which_pip(allow_global=system), package_name)) click.echo(crayons.blue(c.out)) - click.echo('Removing {0} from Pipfile...'.format(crayons.green(package_name))) - project.remove_package_from_pipfile(package_name) + if dev: + click.echo('Removing {0} from Pipfile\'s {1}...'.format(crayons.green(package_name), crayons.red('[dev-packages]'))) + else: + click.echo('Removing {0} from Pipfile\'s {1}...'.format(crayons.green(package_name), crayons.red('[packages]'))) + + project.remove_package_from_pipfile(package_name, dev) if lock: do_lock() From 68edfde30bbf78460feb58d70b926ba81af7fa40 Mon Sep 17 00:00:00 2001 From: Timo Furrer Date: Thu, 26 Jan 2017 20:58:31 +0100 Subject: [PATCH 2/3] Only remove dev packages when --dev given and no packages for uninstall command --- pipenv/cli.py | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/pipenv/cli.py b/pipenv/cli.py index d4d35309..987684af 100644 --- a/pipenv/cli.py +++ b/pipenv/cli.py @@ -649,12 +649,21 @@ def uninstall(package_name=False, more_packages=False, three=None, system=False, ensure_project(three=three) package_names = (package_name,) + more_packages + pipfile_remove = True # Un-install all dependencies, if none was provided. if package_name is False: - click.echo(crayons.yellow('No package provided, un-installing all packages.')) - do_purge(allow_global=system) - sys.exit(1) + if not dev: + click.echo(crayons.yellow('No package provided, un-installing all packages.')) + do_purge(allow_global=system) + sys.exit(1) + elif 'dev-packages' in project.parsed_pipfile: + package_names = project.parsed_pipfile['dev-packages'] + pipfile_remove = False + else: + click.echo(crayons.yellow('No dev-packages to uninstall.')) + sys.exit(1) + for package_name in package_names: @@ -663,12 +672,13 @@ def uninstall(package_name=False, more_packages=False, three=None, system=False, c = delegator.run('{0} uninstall {1} -y'.format(which_pip(allow_global=system), package_name)) click.echo(crayons.blue(c.out)) - if dev: - click.echo('Removing {0} from Pipfile\'s {1}...'.format(crayons.green(package_name), crayons.red('[dev-packages]'))) - else: - click.echo('Removing {0} from Pipfile\'s {1}...'.format(crayons.green(package_name), crayons.red('[packages]'))) + if pipfile_remove: + if dev: + click.echo('Removing {0} from Pipfile\'s {1}...'.format(crayons.green(package_name), crayons.red('[dev-packages]'))) + else: + click.echo('Removing {0} from Pipfile\'s {1}...'.format(crayons.green(package_name), crayons.red('[packages]'))) - project.remove_package_from_pipfile(package_name, dev) + project.remove_package_from_pipfile(package_name, dev) if lock: do_lock() From 2f8b31e5b295293ae1e12f970b340d2a9ed8c478 Mon Sep 17 00:00:00 2001 From: Timo Furrer Date: Thu, 26 Jan 2017 21:01:23 +0100 Subject: [PATCH 3/3] Return 0 if no packages are found to uninstall --- pipenv/cli.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pipenv/cli.py b/pipenv/cli.py index 987684af..6e8c683b 100644 --- a/pipenv/cli.py +++ b/pipenv/cli.py @@ -656,13 +656,13 @@ def uninstall(package_name=False, more_packages=False, three=None, system=False, if not dev: click.echo(crayons.yellow('No package provided, un-installing all packages.')) do_purge(allow_global=system) - sys.exit(1) + sys.exit(0) elif 'dev-packages' in project.parsed_pipfile: package_names = project.parsed_pipfile['dev-packages'] pipfile_remove = False else: click.echo(crayons.yellow('No dev-packages to uninstall.')) - sys.exit(1) + sys.exit(0) for package_name in package_names: