Magellan Linux

Annotation of /trunk/sgml-common/sgml-common-0.6.3-install-catalog.in

Parent Directory Parent Directory | Revision Log Revision Log


Revision 153 - (hide annotations) (download)
Tue May 8 20:52:56 2007 UTC (17 years 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