OSDN Git Service

[fix] : Fixed style.
[alterlinux/alterlinux.git] / keyring.sh
1 #!/usr/bin/env bash
2 #
3 # Yamada Hayao
4 # Twitter: @Hayao0819
5 # Email  : hayao@fascone.net
6 #
7 # (c) 2019-2020 Fascode Network.
8 #
9 # keyring.sh
10 #
11 # Script to import AlterLinux and ArchLinux keys.
12 #
13
14
15 set -eu
16
17 script_path="$(readlink -f ${0%/*})"
18
19
20 # Set pacman.conf when build alterlinux
21 alter_pacman_conf="${script_path}/system/pacman.conf"
22
23
24 # erro message
25 msg_error() {
26     echo -e "[keyring.sh] ERROR : ${@}" >&2
27 }
28
29
30 # info message
31 msg_info() {
32     echo -e "[keyring.sh] INFO: ${@}" >&1
33 }
34
35
36 # Show usage
37 _usage () {
38     echo "usage ${0} [options]"
39     echo
40     echo " General options:"
41     echo "    -a | --alter-add     Add alterlinux-keyring."
42     echo "    -r | --alter-remove  Remove alterlinux-keyring."
43     echo "    -c | --arch-add      Add archlinux-keyring."
44     echo "    -h | --help          Show this help and exit."
45     exit "${1}"
46 }
47
48
49 # Check if the package is installed.
50 checkpkg() {
51     local _pkg
52     _pkg=$(echo "${1}" | cut -d'/' -f2)
53
54     if [[ ${#} -gt 2 ]]; then
55         msg_error "Multiple package specification is not available."
56     fi
57
58     if [[ -n $( pacman -Q "${_pkg}" 2> /dev/null| awk '{print $1}' ) ]]; then
59         echo -n "true"
60     else
61         echo -n "false"
62     fi
63 }
64
65
66 _pacman_install() {
67     for i in ${@}; do
68         if [[ $(checkpkg "${i}") = false ]]; then
69             pacman -S --noconfirm "${i}"
70         fi
71     done
72 }
73
74
75 run() {
76     msg_info "Running ${@}"
77     ${@}
78 }
79
80
81 prepare() {
82     if [[ ! ${UID} = 0 ]]; then
83         msg_error "You dont have root permission."
84         msg_error 'Please run as root.'
85         exit 1
86     fi
87
88     if [[ ! -f "${alter_pacman_conf}" ]]; then
89         msg_error "${alter_pacman_conf} does not exist."
90         exit 1
91     fi
92     #pacman -Sy
93 }
94
95
96 update_arch_key() {
97     pacman-key --init
98     pacman-key --populate archlinux
99     _pacman_install core/archlinux-keyring
100     pacman-key --refresh-keys
101     pacman -Sy
102 }
103
104
105 update_alter_key() {
106     curl -L -o "/tmp/fascode.pub" "https://山d.com/repo/fascode.pub"
107     pacman-key -a "/tmp/fascode.pub"
108     rm -f "/tmp/fascode.pub"
109     pacman-key --lsign-key development@fascode.net
110
111     pacman --config "${alter_pacman_conf}" -Sy --noconfirm
112     pacman --config "${alter_pacman_conf}" -S --noconfirm alter-stable/alterlinux-keyring
113
114     pacman-key --init
115     pacman-key --populate alterlinux
116     pacman -Sy
117 }
118
119
120 remove_alter_key() {
121     pacman-key -d BDC396346243AB57ACD090F9F50544048389DA36
122     if checkpkg alterlinux-keyring; then
123         pacman -Rsnc --noconfirm alterlinux-keyring
124     fi
125     pacman -Sy
126 }
127
128
129 # 引数解析
130 while getopts 'arch-:' arg; do
131     case "${arg}" in
132         # alter-add
133         a)
134             run prepare
135             run update_alter_key
136             ;;
137         # alter-remove
138         r)
139             run prepare
140             run remove_alter_key
141             ;;
142         # arch-add
143         c)
144             run prepare
145             run update_arch_key
146             ;;
147         # help
148         h) 
149             _usage 0
150             ;;
151         -)
152             case "${OPTARG}" in
153                 alter-add)
154                     run prepare
155                     run update_alter_key
156                     ;;
157                 alter-remove)
158                     run prepare
159                     run remove_alter_key
160                     ;;
161                 arch-add)
162                     run prepare
163                     run update_arch_key
164                     ;;
165                 help)
166                     _usage 0
167                     ;;
168                 *)
169                     _usage 1
170                     ;;
171             esac
172             ;;
173         *) _usage; exit 1;;
174     esac
175 done
176
177
178 # 引数が何もなければ全てを実行する
179 if [[ ${#} = 0 ]]; then
180     run prepare
181     # run update_arch_key
182     run update_alter_key
183 fi