comparison bin/fpkg @ 88:76ddab9ab965

Add a tool for host and jail "pkg" management
author Franz Glasner <hg@dom66.de>
date Fri, 06 Sep 2019 17:07:06 +0200
parents
children aefad9391470
comparison
equal deleted inserted replaced
87:28d4bea7cd1c 88:76ddab9ab965
1 #!/bin/sh
2 # -*- indent-tabs-mode: nil; -*-
3 : 'A pkg frontend for common operations that also operates in all
4 running jails.
5
6 :Author: Franz Glasner
7 :Copyright: (c) 2019 Franz Glasner.
8 All rights reserved.
9 :License: 3-Clause BSD License.
10 See LICENSE for details.
11 If you cannot find LICENSE see
12 <https://opensource.org/licenses/BSD-3-Clause>
13 :Id: @(#)@@PKGORIGIN@@ $HGid$
14
15 '
16
17 VERSION="@@VERSION@@"
18
19 USAGE='
20 USAGE: fpkg [ OPTIONS] COMMAND [ COMMAND-OPTIONS ]
21
22 OPTIONS:
23
24 -V Print the program name and version number to stdout and exit
25
26 -h Print this help message to stdout and exit
27
28 COMMANDS:
29
30 audit
31
32 `pkg audit` on the local host and all running visible jails
33
34 update
35
36 `pkg update` on the local host and all running visible jails
37
38 upgrade
39
40 `pkg upgrade` on the local host and all running visible jails
41
42 upgrade-check
43
44 `pkg upgrade -n` on the local host and all running visible jails
45 '
46
47 : ${AUDIT_FLAGS:=-Fr}
48 : ${UPDATE_FLAGS:=}
49 : ${UPGRADE_FLAGS:=}
50 : ${SIGN:='===> '}
51
52
53 command_audit() {
54 : 'Do a local `pkg audit -Fr` and also for all running jails
55
56 '
57 echo "${SIGN}LOCALHOST:"
58 pkg audit ${AUDIT_FLAGS}
59 for _j in $(jls -N | awk '{if(NR>1)print $1}' | sort); do
60 echo ""
61 echo "${SIGN}JAIL: ${_j}"
62 pkg -j "${_j}" audit ${AUDIT_FLAGS}
63 done
64 }
65
66
67 command_update() {
68 : 'Do a local `pkg update` and also for all running jails
69
70 '
71 echo "${SIGN}HOST:"
72 pkg update ${UPDATE_FLAGS}
73 for _j in $(jls -N | awk '{if(NR>1)print $1}' | sort); do
74 echo ""
75 echo "${SIGN}JAIL: ${_j}"
76 pkg -j "${_j}" update ${UPDATE_FLAGS}
77 done
78 }
79
80
81 command_upgrade() {
82 : 'Do a local `pkg upgrade` and also for all running jails
83
84 '
85 echo "${SIGN}HOST:"
86 pkg upgrade ${UPGRADE_FLAGS}
87 for _j in $(jls -N | awk '{if(NR>1)print $1}' | sort); do
88 echo ""
89 echo "${SIGN}JAIL: ${_j}"
90 pkg -j "${_j}" upgrade ${UPGRADE_FLAGS}
91 done
92 }
93
94
95 command_upgrade_check() {
96 : 'Do a local `pkg upgrade -n` and also for all running jails
97
98 '
99 echo "${SIGN}HOST:"
100 pkg upgrade -n ${UPGRADE_FLAGS}
101 for _j in $(jls -N | awk '{if(NR>1)print $1}' | sort); do
102 echo ""
103 echo "${SIGN}JAIL: ${_j}"
104 pkg -j "${_j}" upgrade -n ${UPGRADE_FLAGS}
105 done
106 }
107
108
109 #
110 # Global option handling
111 #
112 while getopts "Vh" _opt ; do
113 case ${_opt} in
114 V)
115 echo "fpkg v${VERSION} (rv:@@HGREVISION@@)"
116 exit 0
117 ;;
118 h)
119 echo "${USAGE}"
120 exit 0
121 ;;
122 \?)
123 exit 2;
124 ;;
125 *)
126 echo "ERROR: option handling failed" >&2
127 exit 2
128 ;;
129 esac
130 done
131
132 #
133 # Reset the Shell's option handling system to prepare for handling
134 # command-local options.
135 #
136 shift $((OPTIND-1))
137 OPTIND=1
138
139 command="$1"
140 shift
141
142 case "${command}" in
143 audit)
144 command_audit "$@"
145 ;;
146 update)
147 command_update "$@"
148 ;;
149 upgrade)
150 command_upgrade "$@"
151 ;;
152 upgrade-check|upgrade_check)
153 command_upgrade_check "$@"
154 ;;
155 *)
156 echo "ERROR: unknown command \`${command}'" >&2
157 exit 2;
158 ;;
159 esac