Skip to content

Commit 412da4f

Browse files
committed
feat(apt): add apt functions
1 parent a135500 commit 412da4f

1 file changed

Lines changed: 216 additions & 1 deletion

File tree

src/bb-functions.d/apt.sh

Lines changed: 216 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,224 @@
77
#
88
# File: apt
99
# Author: Ragdata
10-
# Date: 25/04/2023
10+
# Date: 13/08/2023
1111
# License: MIT License
1212
# Copyright: Copyright © 2023 Darren (Ragdata) Poulton
1313
# ==================================================================
14+
# DEPENDENCIES
15+
# ==================================================================
16+
bb-import bb-regex/options
17+
# ==================================================================
1418
# FUNCTIONS
1519
# ==================================================================
20+
# ------------------------------------------------------------------
21+
# apt::addRepo
22+
# ------------------------------------------------------------------
23+
apt::addRepo()
24+
{
25+
[[ "$#" -eq 0 ]] && errorReturn "apt::addRepo :: Missing Argument!"
26+
27+
for repo in "$@"
28+
do
29+
echoLog "Adding APT Repository '$repo': " -n
30+
if add-apt-repository "$repo" -y; then echoLog "SUCCESS!" -c; else errorLog "FAILED!" -c; fi
31+
done
32+
}
33+
# ------------------------------------------------------------------
34+
# apt::install
35+
# ------------------------------------------------------------------
36+
apt::install()
37+
{
38+
local log=1
39+
local fail=0
40+
41+
for pkg in "$@"
42+
do
43+
# shellcheck disable=SC2154
44+
if [[ $pkg =~ $isLOPTVAL ]]; then
45+
case "${BASH_REMATCH[1]}" in
46+
log)
47+
[[ ! ${BASH_REMATCH[2]} =~ ^0|1$ ]] && errorReturn "apt::install :: Invalid Argument Value (log) '${BASH_REMATCH[2]}'"
48+
log=${BASH_REMATCH[2]}
49+
;;
50+
fail)
51+
[[ ! ${BASH_REMATCH[2]} =~ ^0|1$ ]] && errorReturn "apt::install :: Invalid Argument Value (fail) '${BASH_REMATCH[2]}'"
52+
fail=${BASH_REMATCH[2]}
53+
;;
54+
*)
55+
errorReturn "apt::install :: Invalid Option '${BASH_REMATCH[1]}'"
56+
;;
57+
esac
58+
else
59+
apt::installPkg "$pkg" --log="${log}" --fail="${fail}"
60+
fi
61+
done
62+
63+
if [[ "$log" -eq 1 ]] && [[ -f "$BB_LOG" ]]; then
64+
echoLog "Running 'apt-get clean': " -n
65+
if apt-get clean -qq -y; then echoLog "SUCCESS!" -c; else exitLog "FAILED!" -c; fi
66+
else
67+
echo -n "Running 'apt-get clean': "
68+
if apt-get clean -qq -y; then echoSuccess "SUCCESS!"; else echoError "FAILED!"; fi
69+
fi
70+
}
71+
# ------------------------------------------------------------------
72+
# apt::installPkg
73+
# ------------------------------------------------------------------
74+
apt::installPkg()
75+
{
76+
local package="${1:-}"
77+
78+
[[ -z "$package" ]] && errorReturn "apt::installPkg :: Missing Argument!"
79+
80+
shift
81+
82+
local log=1
83+
local fail=0
84+
85+
if [[ "$#" -ne 0 ]]; then
86+
for opt in "$@"
87+
do
88+
if [[ $opt =~ $isLOPTVAL ]]; then
89+
case "${BASH_REMATCH[1]}" in
90+
log)
91+
[[ ! ${BASH_REMATCH[2]} =~ ^0|1$ ]] && errorReturn "apt::installPkg :: Invalid Argument Value (log) '${BASH_REMATCH[2]}'"
92+
log=${BASH_REMATCH[2]}
93+
;;
94+
fail)
95+
[[ ! ${BASH_REMATCH[2]} =~ ^0|1$ ]] && errorReturn "apt::installPkg :: Invalid Argument Value (fail) '${BASH_REMATCH[2]}'"
96+
fail=${BASH_REMATCH[2]}
97+
;;
98+
*)
99+
errorReturn "apt::installPkg :: Invalid Option '${BASH_REMATCH[1]}'"
100+
;;
101+
esac
102+
else
103+
errorReturn "apt::installPkg :: Invalid Option '$opt'"
104+
fi
105+
done
106+
fi
107+
108+
if [[ "$log" -eq 1 ]] && [[ -f "$BB_LOG" ]]; then
109+
echoLog "Installing package '$package': " -n
110+
if apt install -qq -y; then echoLog "SUCCESS!" -c; else exitLog "FAILED!" -c; [[ "$fail" -eq 1 ]] && return 1; fi
111+
else
112+
echo -n "Installing package '$package': "
113+
if apt install -qq -y; then echoSuccess "SUCCESS!"; else echoError "FAILED!"; [[ "$fail" -eq 1 ]] && return 1; fi
114+
fi
115+
}
116+
# ------------------------------------------------------------------
117+
# apt::remove
118+
# ------------------------------------------------------------------
119+
apt::remove()
120+
{
121+
local log=1
122+
123+
for pkg in "$@"
124+
do
125+
if [[ $pkg =~ $isLOPTVAL ]]; then
126+
case "${BASH_REMATCH[1]}" in
127+
log)
128+
[[ ! ${BASH_REMATCH[2]} =~ ^0|1$ ]] && errorReturn "apt::remove :: Invalid Argument Value (log) '${BASH_REMATCH[2]}'"
129+
log=${BASH_REMATCH[2]}
130+
;;
131+
*)
132+
errorReturn "apt::remove :: Invalid Option '${BASH_REMATCH[1]}'"
133+
;;
134+
esac
135+
else
136+
apt::removePkg "$pkg" --log="${log}"
137+
fi
138+
done
139+
140+
if [[ "${log}" -eq 1 ]] && [[ -f "$BB_LOG" ]]; then
141+
echoLog "Running 'apt-get autoremove && apt-get autoclean': " -n
142+
if apt-get autoremove && apt-get autoclean -qq -y; then echoLog "SUCCESS!" -c; else errorLog "FAILED!" -c;fi
143+
else
144+
echo -n "Running 'apt-get autoremove && apt-get autoclean': "
145+
if apt-get autoremove && apt-get autoclean -qq -y; then echoSuccess "SUCCESS!" -c; else echoError "FAILED!" -c;fi
146+
fi
147+
}
148+
# ------------------------------------------------------------------
149+
# apt::removePkg
150+
# ------------------------------------------------------------------
151+
apt::removePkg()
152+
{
153+
local package="${1:-}"
154+
155+
[[ -z "$package" ]] && errorReturn "apt::removePkg :: Missing Argument!" 1
156+
157+
shift
158+
159+
local log=1
160+
161+
if [[ "$#" -ne 0 ]]; then
162+
for opt in "$@"
163+
do
164+
if [[ $opt =~ $isLOPTVAL ]]; then
165+
case "${BASH_REMATCH[1]}" in
166+
log)
167+
[[ ! ${BASH_REMATCH[2]} =~ ^0|1$ ]] && errorReturn "apt::removePkg :: Invalid Argument Value (log) '${BASH_REMATCH[2]}'" 1
168+
log=${BASH_REMATCH[2]}
169+
;;
170+
*)
171+
errorReturn "apt::removePkg :: Invalid Option '${BASH_REMATCH[1]}'" 1
172+
;;
173+
esac
174+
else
175+
errorReturn "apt::removePkg :: Invalid Option '$opt'" 1
176+
fi
177+
done
178+
fi
179+
180+
if [[ "$log" -eq 1 ]] && [[ -f "$BB_LOG" ]]; then
181+
echoLog "Removing package '$package': " -n
182+
if apt purge -qq -y; then echoLog "SUCCESS!" -c; else exitLog "FAILED!" -c; fi
183+
else
184+
echo -n "Installing package '$package': "
185+
if apt purge -qq -y; then echoSuccess "SUCCESS!"; else echoError "FAILED!"; fi
186+
fi
187+
}
188+
# ------------------------------------------------------------------
189+
# apt::findPkg
190+
# ------------------------------------------------------------------
191+
apt::findPkg()
192+
{
193+
[[ -z "$1" ]] && errorReturn "apt::findPkg :: Cowardly refusing to search for nothing!"
194+
apt-cache search "${1}"
195+
}
196+
# ------------------------------------------------------------------
197+
# apt::showPkg
198+
# ------------------------------------------------------------------
199+
apt::showPkg()
200+
{
201+
[[ -z "$1" ]] && errorReturn "apt::showPkg :: Cowardly refusing to show nothing!"
202+
apt-cache show "${1}"
203+
}
204+
# ------------------------------------------------------------------
205+
# apt::list
206+
# ------------------------------------------------------------------
207+
apt::list()
208+
{
209+
local cmd
210+
211+
[[ -z "$1" ]] && errorReturn "apt::list :: Missing Argument!" 1
212+
213+
case "$1" in
214+
-a|--available|available)
215+
cmd="apt-cache search ."
216+
;;
217+
-i|--installed|installed)
218+
cmd="apt list --installed"
219+
;;
220+
*)
221+
errorReturn "apt::list :: Invalid Argument '$1'!"
222+
;;
223+
esac
224+
225+
if [[ -n "$2" ]]; then
226+
eval "$cmd" | grep "$2"
227+
else
228+
eval "$cmd"
229+
fi
230+
}

0 commit comments

Comments
 (0)