-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathaptman.sh
More file actions
executable file
·146 lines (137 loc) · 2.92 KB
/
aptman.sh
File metadata and controls
executable file
·146 lines (137 loc) · 2.92 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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#!/bin/bash
lines_till_prompt=25
interactive=false
install(){
target="$1"
if [ "$target" == "" ]
then
read -p "Install what? " package_to_install
pacman -S "$package_to_install"
else
pacman -S "$target"
fi
}
remove(){
target="$1"
if [ "$target" == "" ]
then
read -p "Remove what? " package_to_remove
pacman -Rn "$package_to_remove"
else
pacman -S "$target"
fi
}
upgrade(){
pacman -Syu
}
search() {
target="$1"
if [ "$target" == "" ]
then
read -p "Search for what? " search_term
# check if search output exceeds
# the value of $lines_till_prompt (25 lines)
# (maximum on some old hardware) and ask
# wether or not to use less
if [ "$(pacman -Ss "$search_term" | wc -l)" -ge $lines_till_prompt ]
then
read -p "Search output has more lines than an usual terminal, use less? (Y/n) " use_less
case $use_less in
[Yy]* )
pacman -Ss "$search_term" | less -R
;;
[Nn]* )
pacman -Ss "$search_term"
;;
"")
pacman -Ss "$search_term" | less -R
;;
*)
echo "Invalid option"
;;
esac
fi
else
pacman -Ss "$target"
fi
}
query(){
target="$1"
if [ "$target" == "" ]
then
read -p "Find what package? (leave empty for all installed packages) " query_term
if [ "$query_term" == "" ]
then
pacman -Q
else
pacman -Q "$query_term"
fi
else
pacman -Q "$target"
fi
}
help() {
echo "Usage: aptman <option(s)> <operation> [...]"
echo "operations:"
echo " aptman install [package(s)"
echo " aptman remove [package(s)"
echo " aptman upgrade"
echo " aptman search [package(s)]"
echo " aptman query <package(s)>"
echo "aptman -i - run interactively"
echo "aptman -h - view this help"
}
while getopts "ih" opt; do
case $opt in
i)
interactive=true
;;
h)
help
;;
\?)
echo "Invalid option: -$OPTARG"
;;
"")
help
;;
esac
done
if [ "$1" != "" ] && [ "$interactive" == false ]
then
case "$1" in
install) install "$2" ;;
remove) remove "$2" ;;
upgrade) upgrade "$2" ;;
search) search "$2" ;;
query) query "$2" ;;
esac
elif [ "$1" == "" ] && [ "$interactive" == false ]
then
help
else
PS3="Select an operation [1-6]: "
# check if ran with sudo or as root (both resulting in a user id of 0)
if [ "$(id -u)" != 0 ]
then
echo -e "aptman does not have superuser permissions!\nmost operations will likely fail!\n(quit and run \"sudo !!\" or switch to root (UID 0) to fix)"
fi
select op in install remove upgrade search query exit
do
case $op in
install) install ;;
remove) remove ;;
upgrade) upgrade ;;
search) search ;;
query) query ;;
exit)
exit 0
;;
*)
echo "Invalid or empty operation, quitting..."
exit 0
;;
esac
break
done
fi