-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpip_check.sh
More file actions
executable file
·81 lines (72 loc) · 1.6 KB
/
Copy pathpip_check.sh
File metadata and controls
executable file
·81 lines (72 loc) · 1.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#!/bin/sh
scriptname=$0
# Check if a virtual environment is activated
if [ -z "$VIRTUAL_ENV" ]; then
echo "Error: No virtual environment is currently activated." >&2
echo "" >&2
echo "Please activate a virtual environment first:" >&2
echo " source /path/to/venv/bin/activate" >&2
exit 1
fi
pip_cmd="$VIRTUAL_ENV/bin/pip"
if ! [ -x "$pip_cmd" ]; then
echo "Error: pip not found at $pip_cmd" >&2
exit 1
fi
pip_package_list() {
available_packages=$($pip_cmd list -o)
if [ -z "$available_packages" ]; then
echo "No updates available."
else
echo "$available_packages"
fi
}
pip_package_update() {
$pip_cmd install --upgrade pip
$pip_cmd list -o --no-cache-dir | sed 1,2d | awk '{print $1}' | xargs -n1 "$pip_cmd" install -U
}
display_help() {
printf 'Usage: %s [OPTION]\n' "$scriptname"
echo "Check and manage pip packages in the activated virtual environment."
echo ""
echo "Options:"
echo " [none] Check for available updates"
echo " -i, --install Install available updates"
echo " -l, --list List all installed packages"
echo " -h, --help Show this help message"
printf '\n'
}
# Parameter validation
if [ $# -gt 1 ]; then
echo "Error: Too many arguments." >&2
display_help
exit 1
fi
# Main logic
case $1 in
"")
# No argument: check for updates
pip_package_list
exit 0
;;
-i | --install)
pip_package_update
exit 0
;;
-l | --list)
$pip_cmd list
echo "---"
echo "Installed packages:"
$pip_cmd list | cut -d " " -f 1 | sed 1,2d | xargs "$pip_cmd" show
exit 0
;;
-h | --help)
display_help
exit 0
;;
*)
echo "Error: Unknown option '$1'" >&2
display_help
exit 1
;;
esac