123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- #! /bin/bash
- # Wrap apt queries in a common memorable syntax
- # Because I keep looking this stuff up do to differing comands and syntax.
- #
- set -e; set -u
- ARGV=("$@")
- ARGC=("$#")
- #ARGV=("${ARGV[@]:1}") # shift ARGV
- #ARGC=${#ARGV[@]} # get count
- # Helper functions
- PROG=`basename "$0" | tr -d '\n'`
- function info() { echo `date +%c` ${PROG}\: info: "$@" 1>&2; }
- function warn() { echo `date +%c` ${PROG}\: warning: "$@" 1>&2; }
- function error() { echo `date +%c` ${PROG}\: error: "$@" 1>&2; }
- function debug() { [[ -v DEBUG ]] && echo `date +%c` ${PROG}\: debug: "$@" 1>&2 || true ; }
- function die() { echo `date +%c` ${PROG}\: fatal: "$@" 1>&2 && exit 1; }
- function usage() {
- if [[ "$#" -gt 0 ]]; then
- warn $@
- fi
- cat <<END 1>&2
- Usage: aptq QUERY PACKAGE|FILE
- where QUERY is one of
- installed - is PACKAGE installed?
- list - list the files a package provides
- provides - what pacakge owns FILE?
- END
- exit 1
- }
- query=""
- while [ "$ARGC" != "0" ];do
- case "${ARGV[0]}" in
- -h|--help)
- usage
- ;;
- installed)
- query="installed"
- ;;
- list)
- query="list"
- ;;
- provides)
- query="provides"
- ;;
- *)
- if [[ "$1" =~ ^- ]]; then
- echo unknown flag $1
- usage
- else
- break
- fi
- esac
- shift
- ARGV=("${ARGV[@]:1}") # shift ARGV
- ARGC=${#ARGV[@]} # get count
- done
- debug ARGV ${ARGV[*]}
- debug ARGC ${ARGC}
- if [ "$query" == "" ]; then
- warn "no known query given"
- usage
- fi
- if [ "$query" == "installed" ]; then
- if [[ "$ARGC" != "0" ]]; then
- warn "extra arguments"
- usage
- fi
- apt list --installed
- elif [ "$query" == "list" ]; then
- if [[ "$ARGC" < "1" ]]; then
- warn "need a PACKAGE name or FILE"
- usage
- elif [[ "$ARGC" > "1" ]]; then
- warn "extra arguments"
- usage
- fi
- dpkg -L ${ARGV[0]}
- elif [ "$query" == "provides" ]; then
- if [[ "$ARGC" < "1" ]]; then
- warn "need a PACKAGE name or FILE"
- usage
- elif [[ "$ARGC" > "1" ]]; then
- warn "extra arguments"
- usage
- fi
- dpkg -S ${ARGV[0]}
- fi
|