diff --git a/clean_files.txt b/clean_files.txt index 8c4e5926..e6ecbce9 100644 --- a/clean_files.txt +++ b/clean_files.txt @@ -34,3 +34,7 @@ completion/available/cargo.completion.bash completion/available/knife.completion.bash completion/available/pipx.completion.bash completion/available/rustup.completion.bash + +# plugins +# +plugins/available/pip.plugin.bash diff --git a/plugins/available/pip.plugin.bash b/plugins/available/pip.plugin.bash new file mode 100644 index 00000000..6a1783a5 --- /dev/null +++ b/plugins/available/pip.plugin.bash @@ -0,0 +1,32 @@ +#!/usr/bin/env bash + +cite about-plugin +about-plugin 'pip helper functions' + +pip-upgrade-all() { + about 'upgrades all system- and user-installed pip packages to user home' + group 'pip' + + local outdated_packages="$(pip list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1)" + if [ -z "$outdated_packages" ]; then + echo "pip: everything is up to date." + else + for package in $outdated_packages; do + pip install --user -U "$package" + done + fi +} + +pip-uninstall-all() { + about 'uninstalls all user-installed pip packages' + group 'pip' + + local installed_packages="$(pip list --user --format=freeze | grep -v '^\-e' | cut -d = -f 1)" + if [ -z "$installed_packages" ]; then + echo "pip: nothing has been installed." + else + for package in $installed_packages; do + pip uninstall -y "$package" + done + fi +}