Shell: pacman functions improvement.
parent
5d03e6507d
commit
eb6b0f025b
|
@ -131,10 +131,6 @@ if [ "$PACMAN_FRONTEND" = "pacman" ]; then
|
||||||
alias pr='sudo pacman -Rs'
|
alias pr='sudo pacman -Rs'
|
||||||
alias pss='pacman -Ss'
|
alias pss='pacman -Ss'
|
||||||
alias pu='sudo pacman -Syu'
|
alias pu='sudo pacman -Syu'
|
||||||
|
|
||||||
## Change 'name' and 'size' variables according your locale.
|
|
||||||
# alias pql='pacman -Qi | awk '"'"'/^Nom/ {pkg=$3} /Taille/ {print $4$5,pkg}'"'"' | sort -n'
|
|
||||||
alias pql='pacman -Qi | awk '"'"'/^Name/ {pkg=$3} /Size/ {print $4$5,pkg}'"'"' | sort -n'
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$PACMAN_FRONTEND" = "pacman-color" ]; then
|
if [ "$PACMAN_FRONTEND" = "pacman-color" ]; then
|
||||||
|
@ -147,10 +143,6 @@ if [ "$PACMAN_FRONTEND" = "pacman-color" ]; then
|
||||||
alias pss='pacman-color -Ss'
|
alias pss='pacman-color -Ss'
|
||||||
alias pu='sudo pacman-color -Syu'
|
alias pu='sudo pacman-color -Syu'
|
||||||
alias pql='pacman -Ql'
|
alias pql='pacman -Ql'
|
||||||
|
|
||||||
## Change 'name' and 'size' variables according your locale.
|
|
||||||
# alias pql='pacman-color -Qi | awk '"'"'/^Nom/ {pkg=$3} /Taille/ {print $4$5,pkg}'"'"' | sort -n'
|
|
||||||
alias pacman-list='pacman-color -Qi | awk '"'"'/^Name/ {pkg=$3} /Size/ {print $4$5,pkg}'"'"' | sort -n'
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
##==============================================================================
|
##==============================================================================
|
||||||
|
|
105
.shell.d/funs_rc
105
.shell.d/funs_rc
|
@ -505,7 +505,7 @@ if [ -f "/usr/bin/pacman" ]; then
|
||||||
OPTION_FOREIGN=""
|
OPTION_FOREIGN=""
|
||||||
OPTION_LOCAL=">"
|
OPTION_LOCAL=">"
|
||||||
|
|
||||||
pdhelp()
|
printhelp()
|
||||||
{
|
{
|
||||||
echo "Synopsis:"
|
echo "Synopsis:"
|
||||||
echo -e " $1 [-m|-e] [-q] FILE"
|
echo -e " $1 [-m|-e] [-q] FILE"
|
||||||
|
@ -528,7 +528,7 @@ if [ -f "/usr/bin/pacman" ]; then
|
||||||
OPTION_EXPLICIT="e"
|
OPTION_EXPLICIT="e"
|
||||||
;;
|
;;
|
||||||
h)
|
h)
|
||||||
pdhelp "$0"
|
printhelp "$0"
|
||||||
return 1
|
return 1
|
||||||
;;
|
;;
|
||||||
m)
|
m)
|
||||||
|
@ -538,7 +538,7 @@ if [ -f "/usr/bin/pacman" ]; then
|
||||||
OPTION_LOCAL="<"
|
OPTION_LOCAL="<"
|
||||||
;;
|
;;
|
||||||
?)
|
?)
|
||||||
pdhelp "$0"
|
printhelp "$0"
|
||||||
return 1
|
return 1
|
||||||
;;
|
;;
|
||||||
:)
|
:)
|
||||||
|
@ -562,30 +562,76 @@ if [ -f "/usr/bin/pacman" ]; then
|
||||||
}
|
}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
## Print of specified package and a grand total.
|
## Print specified package size and a grand total.
|
||||||
if [ -f "/usr/bin/pacman" ]; then
|
if [ -f "/usr/bin/pacman" ]; then
|
||||||
pacman-size()
|
pacman-size()
|
||||||
{
|
{
|
||||||
## Arguments
|
## Help
|
||||||
if [ $# -lt 1 ];then
|
printhelp()
|
||||||
echo "Please provide packages."
|
{
|
||||||
return
|
echo "Synopsis:"
|
||||||
fi
|
echo -e " $1 [-h|-n] PACKAGES"
|
||||||
|
echo
|
||||||
|
echo "Usage:"
|
||||||
|
echo -e " default:\tDisplay package size. Output contains no double and is alphabetically sorted. A grand total is printed at the end. It will only work for repos packages by default."
|
||||||
|
echo -e " -n:\t\tOutput is sorted by size. Argument MUST be set before package list."
|
||||||
|
echo -e " -q:\t\tUses installed packages database instead of repos database. It speeds up query and allow displaying size of local packages not available in repos."
|
||||||
|
}
|
||||||
|
|
||||||
CMD="pacman -Qi"
|
CMD="pacman -Si"
|
||||||
|
SEP=": "
|
||||||
TOTAL_SIZE=0
|
TOTAL_SIZE=0
|
||||||
|
# OPTION_SORT=""
|
||||||
|
SORT="sort -u -k3"
|
||||||
|
SORT_SIZE="cat"
|
||||||
|
|
||||||
_pacman_set_vars
|
while getopts ":hnq" opt; do
|
||||||
for i ; do
|
case $opt in
|
||||||
## TODO: better awk command?
|
h)
|
||||||
SIZE=$(eval "${CMD} $i" 2>&1 | grep "^$pacman_size" | cut -f2 -d':' | sed -e 's/\..*\| //g')
|
printhelp "$0"
|
||||||
if [ ! "${SIZE}" = "" ];then
|
return 1
|
||||||
printf "%6s KiB %s\n" ${SIZE} $i
|
;;
|
||||||
TOTAL_SIZE=$(($TOTAL_SIZE+$SIZE))
|
n)
|
||||||
fi
|
SORT_SIZE="sort -n"
|
||||||
|
;;
|
||||||
|
q)
|
||||||
|
CMD="pacman -Qi"
|
||||||
|
;;
|
||||||
|
?)
|
||||||
|
printhelp "$0"
|
||||||
|
return 1
|
||||||
|
;;
|
||||||
|
:)
|
||||||
|
echo "Missing argument."
|
||||||
|
echo "Use $0 -h for help."
|
||||||
|
return 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
echo -e "${BIRed}Total size${CReset}: $(echo ${TOTAL_SIZE}) KiB"
|
shift $(($OPTIND - 1))
|
||||||
|
|
||||||
|
if [ $# -eq 0 ]; then
|
||||||
|
echo "Missing argument."
|
||||||
|
echo "Use $0 -h for help."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
_pacman_set_vars
|
||||||
|
|
||||||
|
RESULT=$(eval "${CMD} $@ 2>/dev/null" | awk -F "$SEP" -v filter="$pacman_size" -v pkg="$pacman_name" \
|
||||||
|
'$0 ~ pkg {pkgname=$2} $0 ~ filter {gsub(/\..*/,"") ; printf("%6s KiB %s\n", $2, pkgname)}' | eval "$SORT" | eval "$SORT_SIZE")
|
||||||
|
|
||||||
|
echo "$RESULT"
|
||||||
|
|
||||||
|
## Print total size.
|
||||||
|
echo "$RESULT" | awk '{TOTAL=$1+TOTAL} END {printf("Total : %d KiB\n",TOTAL)}'
|
||||||
|
|
||||||
|
## One line version. ~ same performance.
|
||||||
|
# eval "${CMD} $@ 2>/dev/null" | awk -F "$SEP" -v filter="$pacman_size" -v pkg="$pacman_name" \
|
||||||
|
# '$0 ~ pkg {pkgname=$2} $0 ~ filter {gsub(/\..*/,"") ; printf("%6s KiB %s\n", $2, pkgname)}' | sort -u -k3 \
|
||||||
|
# | tee >(awk '{TOTAL=$1+TOTAL} END {printf("Total : %d KiB\n",TOTAL)}')
|
||||||
|
|
||||||
_pacman_unset_vars
|
_pacman_unset_vars
|
||||||
}
|
}
|
||||||
fi
|
fi
|
||||||
|
@ -600,26 +646,11 @@ if [ -f "/usr/bin/pacman" ]; then
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
CMD="pacman -Qi"
|
CMD="pacman -Si"
|
||||||
|
SEP=": "
|
||||||
APP_OUTPUT=$(eval "${CMD} $1" 2>&1)
|
|
||||||
if [ ! -z "$(echo "$APP_OUTPUT" | grep "^error:")" ];then
|
|
||||||
CMD="pacman -Si"
|
|
||||||
APP_OUTPUT=$(eval "${CMD} $1" 2>&1)
|
|
||||||
|
|
||||||
# Make sure package is available online.
|
|
||||||
if [ ! -z "$(echo "$APP_OUTPUT" | grep "^error:")" ];then
|
|
||||||
echo "Package not found!"
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
_pacman_set_vars
|
_pacman_set_vars
|
||||||
for i ; do
|
eval "${CMD} $@ 2>/dev/null" | awk -F "$SEP" -v filter="$pacman_deps" '$0 ~ filter {gsub(/[>=<][^ ]*/,"") ; print $2}'
|
||||||
## TODO: better awk command.
|
|
||||||
echo $( eval "${CMD} $i" 2>&1 | grep "^$pacman_deps"| cut -f2 -d':' | sed -e 's/[>=<][^ ]*//g')
|
|
||||||
done
|
|
||||||
_pacman_unset_vars
|
_pacman_unset_vars
|
||||||
}
|
}
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
Loading…
Reference in New Issue