Compare commits

...

15 Commits
0.2.0 ... main

Author SHA1 Message Date
9c36cef1e1 updated README 2025-01-28 15:35:14 +01:00
73f7e37670 added reflector shortcut to help refresh pacman mirrorlist 2025-01-28 12:50:43 +01:00
af686fe6c0 added summary of upgradable packages in "update" command 2024-09-30 12:01:55 +02:00
ba07f6275d updated README 2024-09-16 14:22:24 +02:00
8e2bdd88d3 simplified help output (wrong command) 2024-09-16 11:13:57 +02:00
8b23dc96a3 added function providefiles
list files provided by package
2024-08-01 02:02:52 +02:00
7b3de6cef0 added info and localinfo commands 2024-06-10 07:01:46 +02:00
2c209fd7a0 added clean command 2024-06-10 06:59:23 +02:00
b1306a73b4 refactored if statements to switch case 2024-06-10 06:57:55 +02:00
e2789d200b updated cache before "provides" listings 2024-06-10 06:52:56 +02:00
eddbe307c2 moved sudo checking and command execution to separate functions 2024-06-10 06:52:28 +02:00
3e22f4ebbd moved from $command/sudo $command to include "sudo" in the command variable 2024-06-10 06:47:32 +02:00
cdc17a329b added list "installed" functionality 2023-10-28 22:03:35 +02:00
fd49c9e953 added sudo command not existent error handling 2023-10-28 22:00:06 +02:00
eeaee974bd rearranged options 2023-10-28 21:58:27 +02:00
2 changed files with 151 additions and 60 deletions

View File

@ -1,15 +1,28 @@
# pman.sh
A `pacman` helper script, because you forget the stupid flags
A `pacman` helper script, because you forget all the stupid flags
## Usage / Features:
- aur/yay
- search
- info
- localinfo
- provides
- providefiles
- installed
- install
- update
- upgradable
- upgrade
- install
- provides
- remove
- purge
- clean
- reflector
- config
`config` is the only flag that is not appended to `pacman`, instead it resolves to `nano /etc/pacman.conf`.
`reflector` and `config` are the only flag that are not appended to `pacman` (or `yay`)<br>
instead `reflector` resolves to `reflector` with the previously used parameters stored in `/etc/pacman.d/mirrorlist`<br>
and `config` resolves to `nano /etc/pacman.conf`.
`sudo` gets prepended automatically if the command requires it and if installed - no, there is no check if your user is in the `sudo` group, if you download this script you should already be, or know you can only use part of this utility
`sudo` gets prepended automatically if the command requires root privileges, if the UID is not 0 (you are not `root`) and if `sudo` installed.<br>
no, there is no check if your user is in the `sudo` group, if you download this script you should already be, or know you can only use part of this utility<br>
tho such a feature is planned, to make the script truly ubiquitus.

188
pman.sh
View File

@ -7,6 +7,24 @@ 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)
if [ "$command_args" = "yay" ] || [ "$command_args" = "aur" ]; then
command="yay"
@ -18,6 +36,15 @@ elif [ "$command_args" = "config" ]; then
command="nano"
command_args="/etc/pacman.conf"
su_needed=true
elif [ "$command_args" = "reflector" ]; then
command="reflector"
command_args=$(cat /etc/pacman.d/mirrorlist 2>/dev/null | grep -e "With.*reflector" | sed 's/#.*reflector //')
# Check if reflector was actually used to generate the mirrorlist
if [ "$command_args" = "" ]; then
echo "Error: reflector was not used to generate mirrorlist or mirrorlist location differ from standard"
exit 1
fi
su_needed=true
fi
# If command is empty, command is pacman
@ -27,60 +54,111 @@ if [ "$command" = "" ]; then
fi
# Evaluate the command arguments
if [ "$command_args" = "search" ]; then
command_args="-Ss"
elif [ "$command_args" = "update" ]; then
command_args="-Sy"
if [ "$command" = "pacman" ]; then
case "$command_args" in
"search")
command_args="-Ss"
;;
"info")
command_args="-Si"
;;
"localinfo")
command_args="-Qi"
;;
"provides")
# Update the cache
su_needed=true
fi
elif [ "$command_args" = "upgradable" ]; then
command_args="-Qu"
elif [ "$command_args" = "upgrade" ]; then
command_args="-Syu"
if [ "$command" = "pacman" ]; then
su_needed=true
fi
elif [ "$command_args" = "install" ]; then
command_args="-S"
if [ "$command" = "pacman" ]; then
su_needed=true
fi
elif [ "$command_args" = "remove" ]; then
command_args="-Rs"
if [ "$command" = "pacman" ]; then
su_needed=true
fi
elif [ "$command_args" = "purge" ]; then
command_args="-Rns"
if [ "$command" = "pacman" ]; then
su_needed=true
fi
elif [ "$command_args" = "provides" ]; then
command_args="-F"
elif [ "$more_arguments" = "true" ]; then
echo "Invalid command: \"$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 " 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 " provides - pacman -F | list packages that provide file"
echo " remove - pacman -Rs | remove packages & dependencies"
echo " purge - pacman -Rns | remove packages, dependencies & conf"
echo " config - /etc/pacman.conf | edits pacman configuration"
exit 1
fi
command_args="-Fy"
execute_command "${@}"
# If sudo is needed and necessary (and installed), prepend it
if [ "$su_needed" = "true" ] && [ "$UID" != 0 ] && command -v "sudo" &>/dev/null; then
sudo $command $command_args "${@}"
else
$command $command_args "${@}"
fi
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
;;
"clean")
command_args="-Scc"
if [ "$command" = "pacman" ]; then
su_needed=true
fi
;;
*)
if [ "$more_arguments" = "true" ]; then
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 " reflector - mirrorlist | refresh the mirrorlist with reflector (if used)"
echo " (do not use if file location differ from default /etc/pacman.d/mirrorlist)"
echo " config - /etc/pacman.conf | edits pacman configuration"
exit 1
fi
;;
esac
execute_command "${@}"