## Aliases
local dnfprog="dnf"

# Prefer dnf5 if installed
command -v dnf5 > /dev/null && dnfprog=dnf5

alias dnfl="${dnfprog} list"                       # List packages
alias dnfli="${dnfprog} list --installed"          # List installed packages
alias dnfmc="${dnfprog} makecache"                 # Generate metadata cache
alias dnfp="${dnfprog} info"                       # Show package information
alias dnfs="${dnfprog} search"                     # Search package

alias dnfu="sudo ${dnfprog} upgrade"               # Upgrade package
alias dnfi="sudo ${dnfprog} install"               # Install package
alias dnfr="sudo ${dnfprog} remove"                # Remove package
alias dnfc="sudo ${dnfprog} clean all"             # Clean cache

# Conditional aliases based on dnfprog value
if [[ "${dnfprog}" == "dnf5" ]]; then
    alias dnfgl="${dnfprog} group list"            # List package groups (dnf5)
    alias dnfgi="sudo ${dnfprog} group install"    # Install package group (dnf5)
    alias dnfgr="sudo ${dnfprog} group remove"     # Remove package group (dnf5)
else
    alias dnfgl="${dnfprog} grouplist"             # List package groups (dnf)
    alias dnfgi="sudo ${dnfprog} groupinstall"     # Install package group (dnf)
    alias dnfgr="sudo ${dnfprog} groupremove"      # Remove package group (dnf)
fi
