-#!/bin/bash
+#!/usr/bin/env bash
#
-# __
-# /\ \__
-# __ _____\ \ ,_\ _____ __ ___
-# /'__`\ /\ '__`\ \ \//\ '__`\ /'__`\ /'___\
-#/\ \L\.\\ \ \L\ \ \ \\ \ \L\ /\ \L\.\_/\ \__/
+# __
+# /\ \__
+# __ _____\ \ ,_\ _____ __ ___
+# /'__`\ /\ '__`\ \ \//\ '__`\ /'__`\ /'___\
+#/\ \L\.\\ \ \L\ \ \ \\ \ \L\ /\ \L\.\_/\ \__/
#\ \__/.\_\ \ ,__/\ \__\ \ ,__\ \__/.\_\ \____\
# \/__/\/_/\ \ \/ \/__/\ \ \/ \/__/\/_/\/____/
-# \ \_\ \ \_\
-# \/_/ \/_/
+# \ \_\ \ \_\
+# \/_/ \/_/
# a pacman wrapper with syntax based on debian's apt
# (c) 2019-2020 Fascode Network.
# maintained by Yamada Hayao
+APTPAC_VERSION="2.2.0"
+
set -e
OPTIONS=
-AURHELP=
-
-if [[ ${UID} = 0 ]]; then
- pacman=pacman
-elif [[ -n ${AURHELP} ]]; then
- pacman=${AURHELP}
-else
- pacman=pacman
+AURHELPER="/usr/bin/hoge"
+HELPERS=(
+ "/usr/bin/yay"
+ "/usr/bin/yaourt"
+ "/usr/bin/aurman"
+ "/usr/bin/pikaur"
+ "/usr/bin/pacaur"
+)
+
+DEFAULT_PACMAN_COMMAND="pacman"
+
+debug=false
+PACMAN_COMMAND="${DEFAULT_PACMAN_COMMAND}"
+
+
+_msg_error () {
+ echo -e "${@}" >&2
+}
+
+_msg_debug () {
+ if ${debug}; then
+ echo -e "${@}" >&1
+ fi
+}
+
+if [[ ! "${UID}" = 0 ]]; then
+ if [[ -z "${AURHELPER}" ]]; then
+ for AURHELPER in ${HELPERS[@]}; do
+ if [[ -f "${AURHELPER}" ]]; then
+ PACMAN_COMMAND="${AURHELPER}"
+ break
+ elif hash "$(basename "${AURHELPER}")" 2> /dev/null; then
+ PACMAN_COMMAND="$(basename "${AURHELPER}")"
+ break
+ fi
+ done
+ if [[ "${PACMAN_COMMAND}" == "${DEFAULT_PACMAN_COMMAND}" ]]; then
+ PACMAN_COMMAND="sudo ${DEFAULT_PACMAN_COMMAND}"
+ fi
+ else
+ if [[ -f "${AURHELPER}" ]]; then
+ PACMAN_COMMAND="${AURHELPER}"
+ elif hash "$(basename "${AURHELPER}")" 2> /dev/null; then
+ PACMAN_COMMAND="$(basename "${AURHELPER}")"
+ else
+ _msg_error "${AURHELPER} is not installed."
+ exit 1
+ fi
+ fi
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 <file> 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
+_version () {
+cat << EOF
+aptpac ${APTPAC_VERSION} - A pacman wrapper with syntax based on debian's apt
+(c) 2019-2020 Fascode Network. Yamada Hayao
+EOF
}
+
ADD_OPTION () {
OPTIONS="${OPTIONS} ${@}"
}
-while getopts 'ydf-:c:' arg; do
+while getopts 'ydf-:c:hv' arg; do
case "${arg}" in
y) ADD_OPTION "--noconfirm" ;;
d) ADD_OPTION "-w" ;;
assume-yes) ADD_OPTION "--noconfirm" ;;
installed) installed=true;;
purge) ADD_OPTION "-n" ;;
+ debug) debug=true ;;
help) _usage; _exit 0 ;;
esac
esac
full-upgrade) ADD_OPTION "-Syu" ;;
edit-sources) sudo nano /etc/pacman.conf; _exit 0 ;;
dist-upgrade) ADD_OPTION "-Syu" ;;
- autoremove) ADD_OPTION "-Qttdq | pacman -Rsnc -" ;;
- list)
+ huawei)
+ if [[ "${LANG}" = "ja_JP.UTF-8" ]]; then
+ echo "(ง •ᴗ•)ว ⁾⁾ファーウェイでウェイウェイ"
+ _exit 0
+ else
+ _msg_error "Invalid comman '${COMMAND}'"
+ _exit 1
+ fi
+ ;;
+ moo)
+cat << EOF
+ (__)
+ (oo)
+ /------\/
+ / | ||
+ * /\---/\
+ ~~ ~~
+...."Have you mooed today?"...
+EOF
+ exit 0
+ ;;
+ clean)
+ ADD_OPTION "-Sccc"
+ ;;
+ autoremove) if [[ -n $(${PACMAN_COMMAND} -Qttdq) ]]; then
+ ADD_OPTION "=Rsc"
+ PACKAGE="$(${PACMAN_COMMAND} -Qttdq)"
+ else
+ echo "No packages to remove."
+ exit 0
+ fi
+ ;;
+ list)
if ${installed}; then
ADD_OPTION "-Q | grep"
else
ADD_OPTION "-Ss"
fi
;;
- *)
+ *)
_msg_error "Invalid comman '${COMMAND}'"
_exit 1
;;
esac
-# echo "${pacman} ${OPTIONS} ${PACKAGE}"
-${pacman} ${OPTIONS} ${PACKAGE}
\ No newline at end of file
+if [[ ! "${PACMAN_COMMAND}" = "pacman" ]] && [[ ! "${PACMAN_COMMAND}" = "sudo pacman" ]]; then
+ _msg_debug "Use AUR helper ${PACMAN_COMMAND}."
+fi
+
+# echo "${PACMAN_COMMAND} ${OPTIONS} ${PACKAGE}"
+${PACMAN_COMMAND} ${OPTIONS} ${PACKAGE}