OSDN Git Service

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