Skip to content

Instantly share code, notes, and snippets.

@Gen2ly
Created March 23, 2014 14:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Gen2ly/9723893 to your computer and use it in GitHub Desktop.
Save Gen2ly/9723893 to your computer and use it in GitHub Desktop.
#!/bin/sh
# (Ar)ch (pa)ckages - generic package tasks wrapper script
# Required programs
req_prgs=(pacaur sudo)
for prog in ${req_prgs[@]}; do
if ! hash "$prog" 2>&- ; then
echo >&2 ""${0##*/}": requires program: "$prog""
error=y ;fi ; done
[ "$error" = y ] && exit 1
# Parameter existence check
param_tst () {
if [ -n "$@" ]; then
return 0
else
echo "no input specified"; exit 1; fi; }
help_prnt () {
echo ""${0##*/}" [option] [*package] - generic package tasks wrapper script
-e, --explicit - install a package as explicit
-g, --get - only download package files : -G for upgrade files
-i, --install - install a package : -I for deps, *.pkg.tar.*
-l, --list - list files installed by a package : -L genlist inst. pkgs
-n, --info - information about a package
-o, --owns - owning package of a file
-q, --query - query for an installed package : -Q adds description
-r, --remove - remove a pkg and its deps : -R force, no param orphs
-s, --search - search for a package : -S adds description
-u, --upgrade - sync package db and upgrade system : -U for the AUR
-y, --sync - sync package db"; }
case $1 in
-e | --explicit )
shift; param_tst && sudo pacman -S --asexplicit "$@" ;;
-g | --get )
shift; param_tst && sudo pacman -Sw "$@" ;;
-G | --getup )
sudo pacman -Syuw ;;
-i | --install )
shift; param_tst
pre="[a-z,A-Z,0-9,@,/,\.\_\+\-]*pkg.tar[.]\?\(gz\|xz\|bz2\|lrz\|lzo\|Z\)\?"
pkgoff="$(echo "$@" | \
sed "s/$pre//g")"
pkgloc="$(echo "$@" | \
grep -o "$pre")"
[ -n "$pkgoff" ] && pacaur -S $pkgoff
[ -n "$pkgloc" ] && sudo pacman -U $pkgloc ;;
-I | --depinst )
shift; param_tst
pre="[a-z,A-Z,0-9,@,/,\.\_\+\-]*pkg.tar[.]\?\(gz\|xz\|bz2\|lrz\|lzo\|Z\)\?"
pkgoff="$(echo "$@" | \
sed "s/$pre//g")"
pkgloc="$(echo "$@" | \
grep -o "$pre")"
[ -n "$pkgoff" ] && sudo pacman -S --asdeps $pkgoff
[ -n "$pkgloc" ] && sudo pacman -U --asdeps $pkgloc ;;
-l | --list )
shift; param_tst && pacman -Qql "$@" ;;
-L | --pkglist )
date="$(date "+%F")"
pacman -Qqe | grep -v "$(pacman -Qqm)" > pkglist-off_$date.txt
pacman -Qqm > pkglist-loc_$date.txt
[ $? = 0 ] && \
echo "Generated package lists: pkglist-off_date.txt pkglist-loc_date.txt" ;;
-n | --info )
shift; param_tst
for package in "$@"; do
pacaur -Si "$package" 2>&-; done ;;
-o | --own )
shift; param_tst && pacman -Qo "$@" ;;
-q | --query )
shift; param_tst && pacman -Qqs "$@" ;;
-Q | --Query )
shift; param_tst && pacman -Qs "$@" ;;
-r | --remove )
shift
if [ -z "$@" ]; then
sudo pacman -Rcs $(pacman -Qtdq)
else
sudo pacman -Rs "$@"; fi ;;
-R | --forcerm )
shift; param_tst && sudo pacman -Rdd "$@" ;;
-s | --search )
shift; param_tst
pacaur -Ss "$@" | sed '/^ .*$/d' | cut -d " " -f 1 ;;
-S | --Search )
shift; param_tst
pacaur -Ss "$@" ;;
-u | --upgrade )
sudo pacman -Syu ;;
-U | --upaur )
pacaur -Syu --aur --devel ;;
-y | --sync )
sudo pacman -Syy ;;
* ) help_prnt ;;
esac
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment