#!/usr/bin/env bash # # __ # /\ \__ # __ _____\ \ ,_\ _____ __ ___ # /'__`\ /\ '__`\ \ \//\ '__`\ /'__`\ /'___\ #/\ \L\.\\ \ \L\ \ \ \\ \ \L\ /\ \L\.\_/\ \__/ #\ \__/.\_\ \ ,__/\ \__\ \ ,__\ \__/.\_\ \____\ # \/__/\/_/\ \ \/ \/__/\ \ \/ \/__/\/_/\/____/ # \ \_\ \ \_\ # \/_/ \/_/ # a pacman wrapper with syntax based on debian's apt # (c) 2019-2020 Fascode Network. # maintained by Yamada Hayao set -e OPTIONS= AURHELP= HELPERS=( "yay" "yaourt" "aurman" ) pacman="pacman" if [[ ! "${UID}" = 0 ]]; then if [[ -z ${AURHELP} ]]; then for AURHELP in ${HELPERS[@]}; do if [[ -f $(which ${AURHELP} 2> /dev/null) ]]; then pacman=$(which ${AURHELP}) break fi done else if [[ -f $(which ${AURHELP} 2> /dev/null) ]]; then pacman=${AURHELP} else echo "${AURHELP} is not installed." >&2 exit 1 fi fi fi if [[ ! "${UID}" = 0 ]]; then pacman="sudo pacman" fi # List option installed=false _usage () { echo "usage ${0} [options] [command] [packages]" echo " commands: " echo " install Install the specified package." echo " remove Remove the specified package." echo " purge Permanently remove the package." echo " update Update the package database." echo " upgrade Update the package." echo " search Search for a package." echo " autoremove Remove unnecessary packages." echo " clean Remove the package cache." echo " list Displays a list of packages." echo echo " general options: " echo " -y | --yes | --assume-yes Do not check." echo " -d | --download-only Only download the package." echo " -c Config file for pacman." echo " -h | --help Display this help." echo " -v Displays the version of pacman." echo " --purge Delete the entire configuration file." } _exit () { exit ${1} } _msg_error () { echo -e "${@}" >&2 } ADD_OPTION () { OPTIONS="${OPTIONS} ${@}" } while getopts 'ydf-:c:hv' arg; do case "${arg}" in y) ADD_OPTION "--noconfirm" ;; d) ADD_OPTION "-w" ;; f) : ;; c) ADD_OPTION "--config ${OPTARG}" ;; h) _usage; _exit 0 ;; v) _version; _exit 0 ;; -) case "${OPTARG}" in download-only) ADD_OPTION "-w" ;; fix-broken) :;; yes) ADD_OPTION "--noconfirm" ;; assume-yes) ADD_OPTION "--noconfirm" ;; installed) installed=true;; purge) ADD_OPTION "-n" ;; help) _usage; _exit 0 ;; esac esac done shift $((OPTIND - 1)) if [[ $# -lt 1 ]]; then _msg_error "No command specified" _usage _exit 1 fi COMMAND="${1}" shift 1 PACKAGE="${@}" case "${COMMAND}" in install) ADD_OPTION "-S" ;; remove) ADD_OPTION "-Rsc" ;; purge) ADD_OPTION "-Rsnc" ;; update) ADD_OPTION "-Syy" ;; upgrade) ADD_OPTION "-Syu" ;; search) ADD_OPTION "-Ss" ;; full-upgrade) ADD_OPTION "-Syu" ;; edit-sources) sudo nano /etc/pacman.conf; _exit 0 ;; dist-upgrade) ADD_OPTION "-Syu" ;; huawei) if [[ "${LANG}" = "ja_JP.UTF-8" ]]; then echo "(ง •ᴗ•)ว ⁾⁾ファーウェイでウェイウェイ" fi exit 0 ;; moo) cat << EOF (__) (oo) /------\/ / | || * /\---/\ ~~ ~~ ...."Have you mooed today?"... EOF exit 0 ;; clean) ADD_OPTION "-Sccc" ;; autoremove) if [[ -n $(${pacman} -Qttdq) ]]; then pacman -Qttdq | pacman -Rsnc - else echo "No packages to remove." fi exit 0 ;; list) if ${installed}; then ADD_OPTION "-Q | grep" else ADD_OPTION "-Ss" fi ;; *) _msg_error "Invalid comman '${COMMAND}'" _exit 1 ;; esac if [[ ! "${pacman}" = "pacman" ]]; then echo "Use AUR helper ${pacman}." fi # echo "${pacman} ${OPTIONS} ${PACKAGE}" ${pacman} ${OPTIONS} ${PACKAGE}