pman/pman.sh

154 lines
3.9 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
# Store the first command line argument in the variable "command" and shift the rest
2023-05-06 03:18:02 +02:00
command_args="$1"
shift
command=""
more_arguments=false
su_needed=false
# If sudo is needed and necessary (and installed), prepend it, if not installed throw error
check_sudo() {
if [ "$su_needed" = "true" ] && [ "$UID" != 0 ]; then
if command -v "sudo" &>/dev/null; then
command="sudo $command"
else
echo "sudo command needed but not found" > /dev/stderr
exit 1
fi
fi
}
# Execute the command
execute_command() {
check_sudo
$command $command_args "${@}"
}
# Check if yay (aur)
2023-05-06 03:37:59 +02:00
if [ "$command_args" = "yay" ] || [ "$command_args" = "aur" ]; then
command="yay"
command_args="$1"
shift
more_arguments=true
# Check if config
elif [ "$command_args" = "config" ]; then
command="nano"
command_args="/etc/pacman.conf"
su_needed=true
fi
# If command is empty, command is pacman
if [ "$command" = "" ]; then
command="pacman"
more_arguments=true
fi
2023-05-06 03:18:02 +02:00
# Evaluate the command arguments
case "$command_args" in
"search")
command_args="-Ss"
;;
2024-06-10 07:01:46 +02:00
"info")
command_args="-Si"
;;
"localinfo")
command_args="-Qi"
;;
"provides")
# Update the cache
2023-05-15 08:11:05 +02:00
su_needed=true
command_args="-Fy"
execute_command "${@}"
su_needed=false
command_args="-F"
;;
"providefiles")
# Update the cache
su_needed=true
command_args="-Fy"
execute_command "${@}"
su_needed=false
command_args="-Fl"
;;
"installed")
command_args="-Q"
;;
"install")
command_args="-S"
if [ "$command" = "pacman" ]; then
su_needed=true
fi
;;
"update")
command_args="-Sy"
if [ "$command" = "pacman" ]; then
su_needed=true
fi
execute_command "${@}"
su_needed=false
command_args="-Qu"
echo
echo "$(execute_command "${@}" | wc -l) packages are available for update"
exit 0
;;
"upgradable")
command_args="-Qu"
;;
"upgrade")
command_args="-Syu"
if [ "$command" = "pacman" ]; then
su_needed=true
fi
;;
"remove")
command_args="-Rs"
if [ "$command" = "pacman" ]; then
su_needed=true
fi
;;
"purge")
command_args="-Rns"
if [ "$command" = "pacman" ]; then
su_needed=true
fi
;;
2024-06-10 06:59:23 +02:00
"clean")
command_args="-Scc"
if [ "$command" = "pacman" ]; then
su_needed=true
fi
;;
*)
if [ "$more_arguments" = "true" ]; then
2024-09-16 11:13:57 +02:00
echo "Invalid command: \"$command_args\""
echo
echo "Usage: pman <command> [args...]"
echo "Available commands:"
echo " yay (aur) - yay | invoke yay "
echo " (aur packages - all the normal operations except config are available)"
echo " aur (yay) - yay | same as \"yay\""
echo " search - pacman -Ss | search packages"
echo " info - pacman -Si | show package information"
echo " localinfo - pacman -Qi | show local package information"
echo " provides - pacman -F | list packages that provide file"
echo " providefiles - pacman -Fl | list files provided by package"
echo " installed - pacman -Q | list installed packages"
echo " install - pacman -S | install packages"
echo " update - pacman -Sy | updates the repositories"
echo " upgradable - pacman -Qu | list available upgrades"
echo " upgrade - pacman -Syu | upgrades your system"
echo " remove - pacman -Rs | remove packages & dependencies"
echo " purge - pacman -Rns | remove packages, dependencies & conf"
echo " clean - pacman -Scc | remove all package files & trash"
echo " config - /etc/pacman.conf | edits pacman configuration"
exit 1
fi
;;
esac
execute_command "${@}"