OSDN Git Service

[fix] : aur helper message
[alterlinux/aptpac.git] / aptpac
1 #!/usr/bin/env bash
2 #
3 #               __
4 #              /\ \__
5 #   __    _____\ \ ,_\ _____     __      ___
6 # /'__`\ /\ '__`\ \ \//\ '__`\ /'__`\   /'___\
7 #/\ \L\.\\ \ \L\ \ \ \\ \ \L\ /\ \L\.\_/\ \__/
8 #\ \__/.\_\ \ ,__/\ \__\ \ ,__\ \__/.\_\ \____\
9 # \/__/\/_/\ \ \/  \/__/\ \ \/ \/__/\/_/\/____/
10 #           \ \_\        \ \_\
11 #            \/_/         \/_/
12 # a pacman wrapper with syntax based on debian's apt
13 # (c) 2019-2020 Fascode Network.
14 # maintained by Yamada Hayao
15
16 set -e
17
18 OPTIONS=
19 AURHELP=
20 HELPERS=(
21     "yay"
22     "yaourt"
23     "aurman"
24 )
25
26 debug=false
27 pacman="pacman"
28
29
30 if [[ ! "${UID}" = 0 ]]; then
31     if [[ -z ${AURHELP} ]]; then
32         for AURHELP in ${HELPERS[@]}; do
33             if [[ -f $(which ${AURHELP} 2> /dev/null) ]]; then
34                 pacman=$(which ${AURHELP})
35                 break
36             fi
37         done
38     else
39         if [[ -f $(which ${AURHELP} 2> /dev/null) ]]; then
40             pacman=${AURHELP}
41         else
42             echo "${AURHELP} is not installed." >&2
43             exit 1
44         fi
45     fi
46 fi
47
48
49 if [[ ! "${UID}" = 0 ]]; then
50     pacman="sudo pacman"
51 fi
52
53
54 # List option
55 installed=false
56
57 _usage () {
58     echo "usage ${0} [options] [command] [packages]"
59     echo " commands:              "
60     echo "    install                       Install the specified package."
61     echo "    remove                        Remove the specified package."
62     echo "    purge                         Permanently remove the package."
63     echo "    update                        Update the package database."
64     echo "    upgrade                       Update the package."
65     echo "    search                        Search for a package."
66     echo "    autoremove                    Remove unnecessary packages."
67     echo "    clean                         Remove the package cache."
68     echo "    list                          Displays a list of packages."
69     echo
70     echo " general options:       "
71     echo "    -y | --yes  | --assume-yes    Do not check."
72     echo "    -d | --download-only          Only download the package."
73     echo "    -c <file>                     Config file for pacman."
74     echo "    -h | --help                   Display this help."
75     echo "    -v                            Displays the version of pacman."
76     echo "    --purge                       Delete the entire configuration file."
77 }
78
79 _exit () {
80     exit ${1}
81 }
82
83 _msg_error () {
84     echo -e "${@}" >&2
85 }
86
87 ADD_OPTION () {
88     OPTIONS="${OPTIONS} ${@}"
89 }
90
91 while getopts 'ydf-:c:hv' arg; do
92     case "${arg}" in
93         y) ADD_OPTION "--noconfirm" ;;
94         d) ADD_OPTION "-w" ;;
95         f) : ;;
96         c) ADD_OPTION "--config ${OPTARG}" ;;
97         h) _usage; _exit 0 ;;
98         v) _version; _exit 0 ;;
99         -)
100             case "${OPTARG}" in
101                 download-only) ADD_OPTION "-w" ;;
102                 fix-broken) :;;
103                 yes) ADD_OPTION "--noconfirm" ;;
104                 assume-yes) ADD_OPTION "--noconfirm" ;;
105                 installed) installed=true;;
106                 purge) ADD_OPTION "-n" ;;
107                 debug) debug=true ;;
108                 help) _usage; _exit 0 ;;
109             esac
110     esac
111 done
112
113 shift $((OPTIND - 1))
114
115 if [[ $# -lt 1 ]]; then
116     _msg_error "No command specified"
117     _usage
118     _exit 1
119 fi
120 COMMAND="${1}"
121
122 shift 1
123
124 PACKAGE="${@}"
125
126 case "${COMMAND}" in
127     install) ADD_OPTION "-S" ;;
128     remove) ADD_OPTION "-Rsc" ;;
129     purge) ADD_OPTION "-Rsnc" ;;
130     update) ADD_OPTION "-Syy" ;;
131     upgrade) ADD_OPTION "-Syu" ;;
132     search) ADD_OPTION "-Ss" ;;
133     full-upgrade) ADD_OPTION "-Syu" ;;
134     edit-sources) sudo nano /etc/pacman.conf; _exit 0 ;;
135     dist-upgrade) ADD_OPTION "-Syu" ;;
136     huawei) 
137         if [[ "${LANG}" = "ja_JP.UTF-8" ]]; then
138             echo "(ง •ᴗ•)ว ⁾⁾ファーウェイでウェイウェイ"
139         fi
140         exit 0
141         ;;
142     moo)
143 cat << EOF
144          (__) 
145          (oo) 
146    /------\/ 
147   / |    ||   
148  *  /\---/\ 
149     ~~   ~~   
150 ...."Have you mooed today?"...
151 EOF
152     exit 0
153     ;;
154     clean)
155         ADD_OPTION "-Sccc"
156         ;;
157     autoremove) if [[ -n $(${pacman} -Qttdq) ]]; then
158                     ADD_OPTION "=Rsc"
159                     PACKAGE="$(${pacman} -Qttdq)"
160                 else
161                     echo "No packages to remove."
162                     exit 0
163                 fi
164                 ;;
165     list)
166         if ${installed}; then
167             ADD_OPTION "-Q | grep"
168         else
169             ADD_OPTION "-Ss"
170         fi
171         ;;
172     *)
173         _msg_error "Invalid comman '${COMMAND}'"
174         _exit 1
175         ;;
176 esac
177
178 if [[ ! "${pacman}" = "pacman" ]] && [[ ! "${pacman}" = "sudo pacman" ]]; then
179     echo "Use AUR helper ${pacman}."
180 fi
181
182 # echo "${pacman} ${OPTIONS} ${PACKAGE}"
183 ${pacman} ${OPTIONS} ${PACKAGE}