OSDN Git Service

[update] : Added help.
[alterlinux/aptpac.git] / aptpac
1 #!/bin/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
21 if [[ ${UID} = 0 ]]; then
22     pacman=pacman
23 elif [[ -n ${AURHELP} ]]; then
24     pacman=${AURHELP}
25 else
26     pacman=pacman
27 fi
28
29 # List option
30 installed=false
31
32 _usage () {
33     echo "usage ${0} [options] [command] [packages]"
34     echo " commands:              "
35     echo "    install                       Install the specified package."
36     echo "    remove                        Remove the specified package."
37     echo "    purge                         Permanently remove the package."
38     echo "    update                        Update the package database."
39     echo "    upgrade                       Update the package."
40     echo "    search                        Search for a package."
41     echo "    autoremove                    Remove unnecessary packages."
42     echo "    list                          Displays a list of packages."
43     echo
44     echo " general options:       "
45     echo "    -y | --yes  | --assume-yes    Do not check."
46     echo "    -d | --download-only          Only download the package."
47     echo "    -c <file>                     Config file for pacman."
48     echo "    -h | --help                   Display this help."
49     echo "    -v                            Displays the version of pacman."
50     echo "    --purge                       Delete the entire configuration file."
51 }
52
53 _exit () {
54     exit ${1}
55 }
56
57 _msg_error () {
58     echo -e "${@}" >&2
59 }
60
61 ADD_OPTION () {
62     OPTIONS="${OPTIONS} ${@}"
63 }
64
65 while getopts 'ydf-:c:hv' arg; do
66     case "${arg}" in
67         y) ADD_OPTION "--noconfirm" ;;
68         d) ADD_OPTION "-w" ;;
69         f) : ;;
70         c) ADD_OPTION "--config ${OPTARG}" ;;
71         h) _usage; _exit 0 ;;
72         v) _version; _exit 0 ;;
73         -)
74             case "${OPTARG}" in
75                 download-only) ADD_OPTION "-w" ;;
76                 fix-broken) :;;
77                 yes) ADD_OPTION "--noconfirm" ;;
78                 assume-yes) ADD_OPTION "--noconfirm" ;;
79                 installed) installed=true;;
80                 purge) ADD_OPTION "-n" ;;
81                 help) _usage; _exit 0 ;;
82             esac
83     esac
84 done
85
86 shift $((OPTIND - 1))
87
88 if [[ $# -lt 1 ]]; then
89     _msg_error "No command specified"
90     _usage
91     _exit 1
92 fi
93 COMMAND="${1}"
94
95 shift 1
96
97 PACKAGE="${@}"
98
99 case "${COMMAND}" in
100     install) ADD_OPTION "-S" ;;
101     remove) ADD_OPTION "-Rsc" ;;
102     purge) ADD_OPTION "-Rsnc" ;;
103     update) ADD_OPTION "-Syy" ;;
104     upgrade) ADD_OPTION "-Syu" ;;
105     search) ADD_OPTION "-Ss" ;;
106     full-upgrade) ADD_OPTION "-Syu" ;;
107     edit-sources) sudo nano /etc/pacman.conf; _exit 0 ;;
108     dist-upgrade) ADD_OPTION "-Syu" ;;
109     autoremove) ADD_OPTION "-Qttdq | pacman -Rsnc -" ;;
110     list) 
111         if ${installed}; then
112             ADD_OPTION "-Q | grep"
113         else
114             ADD_OPTION "-Ss"
115         fi
116         ;;
117     *) 
118         _msg_error "Invalid comman '${COMMAND}'"
119         _exit 1
120         ;;
121 esac
122
123 # echo "${pacman} ${OPTIONS} ${PACKAGE}"
124 ${pacman} ${OPTIONS} ${PACKAGE}