aboutsummaryrefslogtreecommitdiff
path: root/apkg
diff options
context:
space:
mode:
authoremmett1 <emmett1.2miligrams@protonmail.com>2024-07-01 00:50:18 +0800
committeremmett1 <emmett1.2miligrams@protonmail.com>2024-07-01 00:50:18 +0800
commit73e405670670b4ff676d0fd26c4b9f9fdf63644c (patch)
treed5d0bccb551fdcb6e8be96afdf85b6b1d79a645d /apkg
parent1a6cfc51c56a5f3447067573d764fe498af409ae (diff)
downloadautils-73e405670670b4ff676d0fd26c4b9f9fdf63644c.tar.gz
autils-73e405670670b4ff676d0fd26c4b9f9fdf63644c.zip
added trigger function and needroot function
Diffstat (limited to 'apkg')
-rwxr-xr-xapkg125
1 files changed, 125 insertions, 0 deletions
diff --git a/apkg b/apkg
index c876fc5..ef59b03 100755
--- a/apkg
+++ b/apkg
@@ -458,12 +458,14 @@ pkg_outdate() {
}
pkg_remove() {
+ needroot
for i in $@; do
SPM_ROOT=$APKG_ROOT spm -r $i
done
}
pkg_sysup() {
+ needroot
msg "Checking for outdated packages..."
od=$(pkg_outdate | awk '{print $1}')
if [ ! "$od" ]; then
@@ -499,6 +501,7 @@ pkg_search() {
}
pkg_depinstalll() {
+ needroot
for p in $@; do
if [ -s $SPM_PKGDB/$p ]; then
msg "Package '$p' is installed"
@@ -527,6 +530,118 @@ pkg_depinstalll() {
$APKG -i $installthis || die
}
+_trigger_fccache() {
+ command -v fc-cache >/dev/null || return 0
+ spm -l $1 | grep -q ^usr/share/fonts/$ && {
+ msg "Updating fontconfig cache..."
+ fc-cache -sf
+ }
+}
+
+_trigger_gdkpixbufcache() {
+ command -v gdk-pixbuf-query-loaders >/dev/null || return 0
+ spm -l $1 | grep -q ^usr/lib/gdk-pixbuf-2.0/2.10.0/loaders/$ && {
+ msg "Probing GDK-Pixbuf loader modules..."
+ gdk-pixbuf-query-loaders --update-cache
+ }
+}
+
+_trigger_giomodules() {
+ command -v gio-querymodules >/dev/null || return 0
+ spm -l $1 | grep -q ^usr/lib/gio/modules/$ && {
+ msg "Updating GIO module cache..."
+ gio-querymodules /usr/lib/gio/modules
+ }
+}
+
+_trigger_glibschema() {
+ command -v glib-compile-schemas >/dev/null || return 0
+ spm -l $1 | grep -q ^usr/share/glib-2.0/schemas/$ && {
+ msg "Compiling GSettings XML schema files..."
+ glib-compile-schemas /usr/share/glib-2.0/schemas
+ }
+}
+
+_trigger_gtk2immodules() {
+ command -v gtk-query-immodules-2.0 >/dev/null || return 0
+ spm -l $1 | grep -q ^usr/lib/gtk-2.0/2.10.0/immodules/$ && {
+ msg "Probing GTK2 input method modules..."
+ gtk-query-immodules-2.0 --update-cache
+ }
+}
+
+_trigger_gtk3immodules() {
+ command -v gtk-query-immodules-3.0 >/dev/null || return 0
+ spm -l $1 | grep -q ^usr/lib/gtk-3.0/3.0.0/immodules/$ && {
+ msg "Probing GTK3 input method modules..."
+ gtk-query-immodules-3.0 --update-cache
+ }
+}
+
+_trigger_iconcache() {
+ command -v gtk-update-icon-cache >/dev/null || return 0
+ spm -l $1 | grep -q ^usr/share/icons/$ && {
+ msg "Updating icon theme caches..."
+ for dir in /usr/share/icons/* ; do
+ if [ -e $dir/index.theme ]; then
+ gtk-update-icon-cache -q $dir 2>/dev/null
+ else
+ rm -f $dir/icon-theme.cache
+ rmdir --ignore-fail-on-non-empty $dir
+ fi
+ done
+ }
+}
+
+_trigger_udevdb() {
+ command -v udevadm >/dev/null || return 0
+ spm -l $1 | grep -q ^etc/udev/hwdb.d/$ && {
+ msg "Updating hardware database..."
+ echo udevadm hwdb --update
+ }
+}
+
+_trigger_fontcache() {
+ command -v mkfontdir >/dev/null || return 0
+ command -v mkfontscale >/dev/null || return 0
+ spm -l $1 | grep -q ^usr/share/fonts/$ && {
+ msg "Updating X fontdir indices..."
+ for dir in $(find /usr/share/fonts -maxdepth 1 -type d \( ! -path /usr/share/fonts \)); do
+ rm -f $dir/fonts.scale $dir/fonts.dir $dir/.uuid
+ rmdir --ignore-fail-on-non-empty $dir
+ [ -d "$dir" ] || continue
+ mkfontdir $dir
+ mkfontscale $dir
+ done
+ }
+}
+
+_trigger_desktopdb() {
+ command -v update-desktop-database >/dev/null || return 0
+ spm -l $1 | grep -q ^usr/share/applications/$ && {
+ msg "Updating desktop file MIME type cache..."
+ update-desktop-database --quiet
+ }
+}
+
+_trigger_mimedb() {
+ command -v update-mime-database >/dev/null || return 0
+ spm -l $1 | grep -q ^usr/share/mime/$ && {
+ msg "Updating the MIME type database..."
+ update-mime-database /usr/share/mime
+ }
+}
+
+pkg_trigger() {
+ needroot
+ [ "$@" ] || set -- $($APKG -a)
+ for t in mimedb desktopdb fontcache fccache udevdb iconcache gtk3immodules gtk2immodules glibschema giomodules gdkpixbufcache; do
+ for p in $@; do
+ _trigger_$t $p && break
+ done
+ done
+}
+
pkg_allinstalled() {
[ "$1" ] && grep="grep $1" || grep=cat
ls -1 $SPM_PKGDB | $grep
@@ -554,6 +669,13 @@ runscript() {
fi
}
+needroot() {
+ [ $(id -u) = 0 ] || {
+ msg 'This operation need root access'
+ exit 1
+ }
+}
+
parsesubopt() {
# loop opts until found '-*'
shift; while [ "$1" ]; do
@@ -582,6 +704,7 @@ parseopts() {
-D) pkg_deplist $(parsesubopt $@); exit 0;;
-r) pkg_remove $(parsesubopt $@); exit 0;;
-p) pkg_path $(parsesubopt $@); exit 0;;
+ -t) pkg_trigger $(parsesubopt $@); exit 0;;
-U) pkg_sysup; exit 0;;
-d) pkg_depends $2; exit 0;;
-s) pkg_search $2; exit 0;;
@@ -613,6 +736,7 @@ options:
-D <pkg(s)> list all dependencies
-j <pkg> list all dependents
-u <pkg(s)> upgrade package(s)
+ -t [pkg(s)] trigger system cache/db updates
-U update system
-f force rebuild
-o <pkg(s)> download source
@@ -710,6 +834,7 @@ main() {
fi
# run postinstall script after installed/upgraded
runscript post
+ pkg_trigger $name
}
umask 022