diff options
Diffstat (limited to 'contrib')
| -rw-r--r-- | contrib/.gitignore | 1 | ||||
| -rw-r--r-- | contrib/Makefile.am | 5 | ||||
| -rwxr-xr-x | contrib/paccache.in | 2 | ||||
| -rwxr-xr-x | contrib/pacsysclean.in | 50 | 
4 files changed, 56 insertions, 2 deletions
| diff --git a/contrib/.gitignore b/contrib/.gitignore index 1bd145fc..19b81e00 100644 --- a/contrib/.gitignore +++ b/contrib/.gitignore @@ -6,5 +6,6 @@ paclist  paclog-pkglist  pacscripts  pacsearch +pacsysclean  wget-xdelta.sh  zsh_completion diff --git a/contrib/Makefile.am b/contrib/Makefile.am index 970e17b8..c9f63654 100644 --- a/contrib/Makefile.am +++ b/contrib/Makefile.am @@ -5,7 +5,8 @@ OURSCRIPTS = \  	paclist \  	paclog-pkglist \  	pacscripts \ -	pacsearch +	pacsearch \ +	pacsysclean  OURFILES = \  	bash_completion \ @@ -21,6 +22,7 @@ EXTRA_DIST = \  	paclist.in \  	pacscripts.in \  	pacsearch.in \ +	pacsysclean.in \  	vimprojects \  	zsh_completion.in \  	README @@ -56,6 +58,7 @@ paclist: $(srcdir)/paclist.in  paclog-pkglist: $(srcdir)/paclog-pkglist.in  pacscripts: $(srcdir)/pacscripts.in  pacsearch: $(srcdir)/pacsearch.in +pacsysclean: $(srcdir)/pacsysclean.in  pactree: $(srcdir)/pactree.in  zsh_completion: $(srcdir)/zsh_completion.in diff --git a/contrib/paccache.in b/contrib/paccache.in index 847d44fb..b95b9646 100755 --- a/contrib/paccache.in +++ b/contrib/paccache.in @@ -263,7 +263,7 @@ if (( move || delete )); then  fi  # unlikely that this will fail, but better make sure -cd "$cachedir" || die "failed to chdir to \`%s'" "$cachedir" +cd "$cachedir" >/dev/null || die "failed to chdir to \`%s'" "$cachedir"  # note that these results are returned in an arbitrary order from awk, but  # they'll be resorted (in summarize) iff we have a verbosity level set. diff --git a/contrib/pacsysclean.in b/contrib/pacsysclean.in new file mode 100755 index 00000000..c87082e0 --- /dev/null +++ b/contrib/pacsysclean.in @@ -0,0 +1,50 @@ +#!/bin/bash + +# pacsysclean - Sort installed packages by decreasing installed size. Useful for system clean-up. + +PACMAN_OPTS= + +usage() { +       echo "pacsysclean - Sort installed packages by decreasing installed size." +       echo +       echo "Usage: pacsysclean [options]" +       echo +       echo "Options:" +       echo "  -o <options>     Specify custom pacman query options (e.g., dt)" +       echo "  -h, --help       Show this help message and exit" +} + + +if [ -n "$1" ]; then +       case "$1" in +               -o) PACMAN_OPTS="${2}" ;; +               -h|--help) usage; exit 0 ;; +               *) usage; exit 1 ;; +       esac +fi + +IFS=$'\n' +name="^Name.*: (.*)$" +size="^Installed Size.*: (.*) KiB$" +for line in $(LANG=C pacman -Qi $PACMAN_OPTS); do +       if [[ $line =~ $name ]]; then +               printf "%s\t" ${BASH_REMATCH[1]} +       elif [[ $line =~ $size ]]; then +               printf "%s\n" ${BASH_REMATCH[1]} +       fi +done | sort -g -k2 | awk ' +BEGIN { +       split("KiB MiB GiB TiB PiB EiB ZiB YiB", suffix) +} +function format_size(size) { +       count = 1 +       while (size + 0 > 1024) { +               size /= 1024 +               count++ +       } +       sizestr = sprintf("%.2f %s", size, suffix[count]) +       return sizestr +} +{ +       printf("%s\t%s\n", format_size($2), $1); +}' | 
