05d57dc5cb
Support reporting updates and repository subscriptions for Pacman.
123 lines
2.7 KiB
Bash
Executable File
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
|