Annotation of /trunk/sgml-common/sgml-common-0.6.3-install-catalog.in
Parent Directory | Revision Log
Revision 153 -
(hide annotations)
(download)
Tue May 8 20:52:56 2007 UTC (17 years, 4 months ago) by niro
File size: 4919 byte(s)
Tue May 8 20:52:56 2007 UTC (17 years, 4 months ago) by niro
File size: 4919 byte(s)
-import
1 | niro | 153 | #!/bin/bash |
2 | # Script to install a catalog in the centralized SGML catalog | ||
3 | # Send any comments to Eric Bischoff <eric@caldera.de> | ||
4 | # This program is under GPL license. See LICENSE file for details. | ||
5 | |||
6 | # Modified by Gentoo developers to better integrate it to portage. | ||
7 | # <text-markup@gentoo.org> | ||
8 | |||
9 | # Set help message | ||
10 | SGML_HELP_MESSAGE="Usage: `basename $0` [<option>] <action>\n\ | ||
11 | where <option> is:\n\ | ||
12 | \040 -d|--delegate: \t\t\t Use DELEGATE instead of CATALOG\n\ | ||
13 | and where <action> is:\n\ | ||
14 | \040 -a|--add <centralized> <ordinary>: \t Declare ordinary catalog in the centralized catalog\n\ | ||
15 | \040 -r|--remove <centralized> <ordinary>:\t Remove ordinary catalog from the centralized catalog\n\ | ||
16 | \040 -h, --help: \t\t\t\t Print this help message and exit\n\ | ||
17 | \040 -v, --version: \t\t\t Print the version number and exit\n" | ||
18 | |||
19 | # Set version message | ||
20 | SGML_VERSION_MESSAGE="sgml-common version @VERSION@ (install-catalog version 1.0)" | ||
21 | |||
22 | # Set type of pointer | ||
23 | SGML_POINTER="CATALOG" | ||
24 | |||
25 | # Set action to be performed | ||
26 | SGML_ACTION="" | ||
27 | |||
28 | # Set catalogs | ||
29 | SGML_CENTRALIZED="" | ||
30 | SGML_ORDINARY="" | ||
31 | |||
32 | # Default ROOT value (usually defined by portage) | ||
33 | [ -z "$ROOT" ] && ROOT="/" | ||
34 | [[ $ROOT == */ ]] || ROOT="${ROOT}/" | ||
35 | |||
36 | |||
37 | # Process options | ||
38 | case $1 in | ||
39 | -d|--delegate) SGML_POINTER="DELEGATE" | ||
40 | shift 1 | ||
41 | ;; | ||
42 | esac | ||
43 | |||
44 | # Process actions | ||
45 | case $1 in | ||
46 | -a|--add) SGML_ACTION="addition" | ||
47 | SGML_CENTRALIZED=$2 | ||
48 | SGML_ORDINARY=$3 | ||
49 | ;; | ||
50 | -r|--remove) if [ -z "$3" -o "$3" = "--version" ] | ||
51 | then | ||
52 | echo "install-catalog: Old syntax; doing nothing" | ||
53 | exit 0 | ||
54 | fi | ||
55 | SGML_ACTION="removal" | ||
56 | SGML_CENTRALIZED=$2 | ||
57 | SGML_ORDINARY=$3 | ||
58 | ;; | ||
59 | -h|--help) echo -e $SGML_HELP_MESSAGE | ||
60 | exit 0 | ||
61 | ;; | ||
62 | -v|--version) echo -e $SGML_VERSION_MESSAGE | ||
63 | exit 0 | ||
64 | ;; | ||
65 | --install) echo "install-catalog: Old syntax; doing nothing" | ||
66 | exit 0 | ||
67 | ;; | ||
68 | *) echo -e $SGML_HELP_MESSAGE >&2 | ||
69 | exit 1 | ||
70 | ;; | ||
71 | esac | ||
72 | |||
73 | |||
74 | # The arguments to this program should always be relative to $ROOT. Here we | ||
75 | # declare some extra variables to distingish between the absolute and | ||
76 | # relative paths. | ||
77 | SGML_ROOT_CENTRALIZED="${ROOT%/}${SGML_CENTRALIZED}" | ||
78 | SGML_ROOT_ORDINARY="${ROOT%/}${SGML_ORDINARY}" | ||
79 | |||
80 | |||
81 | # Check that the super catalog can be created and changed and deleted | ||
82 | if [ ! -w ${ROOT}etc/sgml ] | ||
83 | then | ||
84 | echo "`basename $0`: unable to write in ${ROOT}etc/sgml." >&2 | ||
85 | exit 2 | ||
86 | fi | ||
87 | case $SGML_ACTION in | ||
88 | addition) | ||
89 | if [ -e ${ROOT}etc/sgml/catalog -a ! -w ${ROOT}etc/sgml/catalog ] | ||
90 | then | ||
91 | echo "`basename $0`: can not modify \"${ROOT}etc/sgml/catalog\"." >&2 | ||
92 | exit 2 | ||
93 | fi | ||
94 | ;; | ||
95 | removal) | ||
96 | if [ ! -w ${ROOT}etc/sgml/catalog ] | ||
97 | then | ||
98 | echo "`basename $0`: can not modify \"${ROOT}etc/sgml/catalog\"." >&2 | ||
99 | exit 2 | ||
100 | fi | ||
101 | ;; | ||
102 | esac | ||
103 | |||
104 | # Check that the centralized catalog can be created, changed and deleted | ||
105 | if [ -z "$SGML_ROOT_CENTRALIZED" ] | ||
106 | then | ||
107 | echo -e $SGML_HELP_MESSAGE >&2 | ||
108 | exit 1 | ||
109 | fi | ||
110 | case $SGML_ACTION in | ||
111 | addition) | ||
112 | if [ -e "$SGML_ROOT_CENTRALIZED" -a ! -w "$SGML_ROOT_CENTRALIZED" ] | ||
113 | then | ||
114 | echo "`basename $0`: can not modify \"$SGML_ROOT_CENTRALIZED\"." >&2 | ||
115 | exit 2 | ||
116 | fi | ||
117 | ;; | ||
118 | removal) | ||
119 | if [ ! -w "$SGML_ROOT_CENTRALIZED" ] | ||
120 | then | ||
121 | echo "`basename $0`: can not modify \"$SGML_ROOT_CENTRALIZED\"." >&2 | ||
122 | exit 2 | ||
123 | fi | ||
124 | ;; | ||
125 | esac | ||
126 | |||
127 | # Check that we have at least one ordinary package to process | ||
128 | if [ -z "$SGML_ROOT_ORDINARY" ] | ||
129 | then | ||
130 | echo -e $SGML_HELP_MESSAGE >&2 | ||
131 | exit 1 | ||
132 | fi | ||
133 | case $SGML_ACTION in | ||
134 | addition) | ||
135 | if [ ! -s $SGML_ROOT_ORDINARY ] | ||
136 | then | ||
137 | echo "`basename $0`: \"$SGML_ROOT_ORDINARY\" does not exist or is empty." >&2 | ||
138 | exit 2 | ||
139 | fi | ||
140 | ;; | ||
141 | esac | ||
142 | |||
143 | # Installation or removal of pointers | ||
144 | case $SGML_ACTION in | ||
145 | addition) | ||
146 | echo "`basename $0`: addition of $SGML_ORDINARY in $SGML_CENTRALIZED" | ||
147 | if grep -q $SGML_ORDINARY $SGML_ROOT_CENTRALIZED 2>/dev/null | ||
148 | then | ||
149 | echo "Warning: $SGML_ORDINARY is already installed in the centralized catalog $SGML_CENTRALIZED" >&2 | ||
150 | else | ||
151 | echo "$SGML_POINTER \"$SGML_ORDINARY\"" >> $SGML_ROOT_CENTRALIZED | ||
152 | fi | ||
153 | grep -q $SGML_CENTRALIZED ${ROOT}etc/sgml/catalog 2>/dev/null | ||
154 | if [ $? -ne 0 ] | ||
155 | then | ||
156 | echo "`basename $0`: addition of $SGML_CENTRALIZED in ${ROOT}etc/sgml/catalog" | ||
157 | echo "$SGML_POINTER \"$SGML_CENTRALIZED\"" >> ${ROOT}etc/sgml/catalog | ||
158 | fi | ||
159 | ;; | ||
160 | removal) | ||
161 | echo "`basename $0`: removal of $SGML_ORDINARY from $SGML_CENTRALIZED" | ||
162 | if grep -q $SGML_ORDINARY $SGML_ROOT_CENTRALIZED 2>/dev/null | ||
163 | then | ||
164 | sed -e "\:$SGML_POINTER \"$SGML_ORDINARY\":d" < \ | ||
165 | $SGML_ROOT_CENTRALIZED > ${SGML_ROOT_CENTRALIZED}.new | ||
166 | mv ${SGML_ROOT_CENTRALIZED}.new $SGML_ROOT_CENTRALIZED | ||
167 | else | ||
168 | echo "Warning: $SGML_ORDINARY was not found in the centralized catalog $SGML_CENTRALIZED" >&2 | ||
169 | fi | ||
170 | if [ ! -s "$SGML_ROOT_CENTRALIZED" ] | ||
171 | then | ||
172 | rm $SGML_ROOT_CENTRALIZED | ||
173 | echo "`basename $0`: removal of $SGML_CENTRALIZED from ${ROOT}etc/sgml/catalog" | ||
174 | sed -e "\:$SGML_POINTER \"$SGML_CENTRALIZED\":d" < ${ROOT}etc/sgml/catalog > ${ROOT}etc/sgml/catalog.new | ||
175 | mv ${ROOT}etc/sgml/catalog.new ${ROOT}etc/sgml/catalog | ||
176 | fi | ||
177 | ;; | ||
178 | esac | ||
179 | |||
180 | exit 0 |