OSDN Git Service

[update] : Supported fullpath
[alterlinux/aptpac.git] / aptpac
diff --git a/aptpac b/aptpac
index 2ac3894..547994c 100755 (executable)
--- a/aptpac
+++ b/aptpac
-#!/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" ;;
@@ -61,6 +127,7 @@ while getopts 'ydf-:c:' arg; do
                 assume-yes) ADD_OPTION "--noconfirm" ;;
                 installed) installed=true;;
                 purge) ADD_OPTION "-n" ;;
+                debug) debug=true ;;
                 help) _usage; _exit 0 ;;
             esac
     esac
@@ -89,19 +156,54 @@ case "${COMMAND}" in
     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}