termux-packages/packages/termux-tools/termux-info
Leonid Pliushch 05d57dc5cb
termux-tools: adjust termux-info for supporting pacman package management base
Support reporting updates and repository subscriptions for Pacman.
2021-12-15 20:16:45 +02:00

123 lines
2.7 KiB
Bash
Executable File

#!/bin/bash
TERMUX_PACKAGE_FORMAT="@TERMUX_PACKAGE_FORMAT@"
if [ "$#" != "0" ]; then
echo 'usage: termux-info'
echo 'Provides information about Termux, and the current system. Helpful for debugging.'
exit
fi
updates() {
local updatable
if [ "$(id -u)" = "0" ]; then
echo "Running as root. Cannot check package updates."
else
if [ "$TERMUX_PACKAGE_FORMAT" = "pacman" ]; then
pacman -Sy >/dev/null 2>&1
updatable=$(pacman -Qeu)
else
apt update >/dev/null 2>&1
updatable=$(apt list --upgradable 2>/dev/null | tail -n +2)
fi
if [ -z "$updatable" ];then
echo "All packages up to date"
else
echo "$updatable"
fi
fi
}
repo_subscriptions_apt() {
local main_sources
main_sources=$(grep -P '^\s*deb\s' "@TERMUX_PREFIX@/etc/apt/sources.list")
if [ -n "$main_sources" ]; then
echo "# sources.list"
echo "$main_sources"
fi
if [ -d "@TERMUX_PREFIX@/etc/apt/sources.list.d" ]; then
local filename repo_package supl_sources
while read -r filename; do
repo_package=$(dpkg -S "$filename" 2>/dev/null | cut -d : -f 1)
supl_sources=$(grep -P '^\s*deb\s' "$filename")
if [ -n "$supl_sources" ]; then
if [ -n "$repo_package" ]; then
echo "# $repo_package (sources.list.d/$(basename "$filename"))"
else
echo "# sources.list.d/$(basename "$filename")"
fi
echo "$supl_sources"
fi
done < <(find "@TERMUX_PREFIX@/etc/apt/sources.list.d" -maxdepth 1 ! -type d)
fi
}
repo_subscriptions_pacman() {
local conf
conf="@TERMUX_PREFIX@/etc/pacman.conf"
if [[ -f $conf ]]; then
echo "# $conf"
for i in $(pacman-conf -l); do
pacman-conf | grep "$i"
done
else
echo "$conf file not found"
fi
}
output=""
if [ -n "$TERMUX_VERSION" ]; then
# Application version is exported in Termux v0.107 or higher only.
output+="Application version:
$TERMUX_VERSION
"
else
output+="Application version:
unsupported
"
fi
output+="Packages CPU architecture:
$(
if [ "$TERMUX_PACKAGE_FORMAT" = "pacman" ]; then
pacman-conf | grep Architecture | sed 's/Architecture = //g'
else
dpkg --print-architecture
fi
)
Subscribed repositories:
$(
if [ "$TERMUX_PACKAGE_FORMAT" = "pacman" ]; then
repo_subscriptions_pacman
else
repo_subscriptions_apt
fi
)
Updatable packages:
$(updates)
Android version:
$(getprop ro.build.version.release)
Kernel build information:
$(uname -a)
Device manufacturer:
$(getprop ro.product.manufacturer)
Device model:
$(getprop ro.product.model)"
echo "$output"
if [ -n "$(command -v termux-clipboard-set)" ]; then
# Copy to clipboard (requires termux-api)
# use timeout in case termux-api is installed but the termux:api app is missing
echo "$output" | timeout 3 termux-clipboard-set 2>/dev/null
timeout 3 termux-toast "Information has been copied to the clipboard" 2>/dev/null
fi
exit 0