#!/usr/bin/env bash # Store the first command line argument in the variable "command" and shift the rest 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) 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 # Evaluate the command arguments case "$command_args" in "search") command_args="-Ss" ;; "info") command_args="-Si" ;; "localinfo") command_args="-Qi" ;; "provides") # Update the cache 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 ;; "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 [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 "${@}"