fixing display of online resources with all-numeric display labels (thanks to Dan...
[Evergreen.git] / config.sh
1 #!/bin/bash
2 # --------------------------------------------------------------------
3 # Copyright (C) 2005  Georgia Public Library Service 
4 # Bill Erickson <highfalutin@gmail.com>
5 # Mike Rylander <mrylander@gmail.com>
6 #
7 # This program is free software; you can redistribute it and/or
8 # modify it under the terms of the GNU General Public License
9 # as published by the Free Software Foundation; either version 2
10 # of the License, or (at your option) any later version.
11 #
12 # This program is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 # GNU General Public License for more details.
16 # --------------------------------------------------------------------
17
18
19 # --------------------------------------------------------------------
20 # Prompts the user for config settings and writes a custom config
21 # file based on these settings
22 # --------------------------------------------------------------------
23
24
25 CONFIG_FILE="install.conf";
26 DEFAULT_CONFIG_FILE="install.conf.default";
27 USE_DEFAULT="$1";
28
29 function buildConfig {
30
31         if [ -f "$CONFIG_FILE" ]; then
32                 source "$CONFIG_FILE";
33         else
34                 if [ -f "$DEFAULT_CONFIG_FILE" ]; then
35                         source "$DEFAULT_CONFIG_FILE";
36                 fi;
37         fi;
38
39     if [ -n "$USE_DEFAULT" ]; then
40         prompt "Default config requested, not prompting for values...\n";
41         writeConfig;
42         return 0;
43     fi;
44
45
46         echo "";
47         echo "-----------------------------------------------------------------------";
48         echo "Type Enter to select the default"
49         echo "-----------------------------------------------------------------------";
50
51         prompt "Install prefix [$PREFIX] ";
52         read X; if [ ! -z "$X" ]; then PREFIX="$X"; fi
53
54         BINDIR="$PREFIX/bin/";
55         LIBDIR="$PREFIX/lib/";
56         PERLDIR="$LIBDIR/perl5/";
57         INCLUDEDIR="$PREFIX/include/";
58         ETCDIR="$PREFIX/conf";
59         WEBDIR="$PREFIX/var/web";
60         DATADIR="$PREFIX/var/data";
61         CGIDIR="$PREFIX/var/cgi-bin";
62         TEMPLATEDIR="$PREFIX/var/templates";
63         CIRCRULESDIR="$PREFIX/var/circ";
64         CATALOGSCRIPTDIR="$PREFIX/var/catalog";
65         PENALTYRULESDIR="$PREFIX/var/penalty";
66         XSLDIR="$PREFIX/var/xsl";
67         REPORTERDIR="$PREFIX/var/web/reporter";
68         TMP="$(pwd)/.tmp";
69         ADMINDIR="$PREFIX/var/admin";
70
71         prompt "Apache2 apxs binary [$APXS2] "
72         read X; if [ ! -z "$X" ]; then APXS2="$X"; fi;
73
74         prompt "Apache2 headers directory [$APACHE2_HEADERS] "
75         read X; if [ ! -z "$X" ]; then APACHE2_HEADERS="$X"; fi;
76
77         prompt "Apache2 APR headers directory [$APR_HEADERS] "
78         read X; if [ ! -z "$X" ]; then APR_HEADERS="$X"; fi;
79
80         prompt "Libdbi libraries directory [$DBI_LIBS] "
81         read X; if [ ! -z "$X" ]; then DBI_LIBS="$X"; fi;
82
83         prompt "Libxml2 headers directory [$LIBXML2_HEADERS] "
84         read X; if [ ! -z "$X" ]; then LIBXML2_HEADERS="$X"; fi;
85
86         prompt "OpenSRF headers directory [$OPENSRF_HEADERS] "
87         read X; if [ ! -z "$X" ]; then OPENSRF_HEADERS="$X"; fi;
88
89         prompt "OpenSRF libraries directory [$OPENSRF_LIBS] "
90         read X; if [ ! -z "$X" ]; then OPENSRF_LIBS="$X"; fi;
91
92         prompt "Build targets [${TARGETS[@]:0}] "
93         read X; if [ ! -z "$X" ]; then TARGETS=("$X"); fi;
94
95         prompt "Should we build Python modules? (Y/N) [$EG_PYTHON_INSTALL] "
96         read X; 
97     if [ "$X" = "Y" ]; 
98         then EG_PYTHON_INSTALL="Y"; 
99         else EG_PYTHON_INSTALL="";
100     fi;
101
102         prompt "Database Driver [$DBDRVR] "
103         read X; if [ ! -z "$X" ]; then DBDRVR="$X"; fi;
104
105         if [ "$DBDRVR" == "Pg" ]; then
106                 prompt "Bootstrapping Database Version (80 for 8.0.x, 81 for 8.1.x, 82 for 8.2.x) [$DBVER] "
107                 read X; if [ ! -z "$X" ]; then DBVER="$X"; fi;
108         fi;
109
110         prompt "Database Host [$DBHOST] "
111         read X; if [ ! -z "$X" ]; then DBHOST="$X"; fi;
112
113         prompt "Database Port [$DBPORT] "
114         read X; if [ ! -z "$X" ]; then DBPORT="$X"; fi;
115
116         prompt "Database Name [$DBNAME] "
117         read X; if [ ! -z "$X" ]; then DBNAME="$X"; fi;
118
119         prompt "Database User [$DBUSER] "
120         read X; if [ ! -z "$X" ]; then DBUSER="$X"; fi;
121
122         prompt "Database Password [$DBPW] "
123         read X; if [ ! -z "$X" ]; then DBPW="$X"; fi;
124
125         prompt "Reporter Template Directory [$REPORTERDIR] "
126         read X; if [ ! -z "$X" ]; then REPORTERDIR="$X"; fi;
127
128         writeConfig;
129 }
130
131 function prompt { echo ""; echo -en "$*"; }
132
133 function writeConfig {
134
135         rm -f "$CONFIG_FILE";
136         echo "Writing installation config to $CONFIG_FILE...";
137
138         _write "PREFIX=\"$PREFIX\"";
139         _write "BINDIR=\"$BINDIR\"";
140         _write "LIBDIR=\"$LIBDIR\"";
141         _write "PERLDIR=\"$PERLDIR\"";
142         _write "INCLUDEDIR=\"$INCLUDEDIR\"";
143         _write "SOCK=\"$PREFIX/var/sock\"";
144         _write "PID=\"$PREFIX/var/pid\"";
145         _write "LOG=\"$PREFIX/var/log\"";
146         _write "DATADIR=\"$DATADIR\"";
147
148         _write "TMP=\"$TMP\"";
149         _write "APXS2=\"$APXS2\"";
150         _write "APACHE2_HEADERS=\"$APACHE2_HEADERS\"";
151         _write "APR_HEADERS=\"$APR_HEADERS\"";
152         _write "DBI_LIBS=\"$DBI_LIBS\"";
153         _write "LIBXML2_HEADERS=\"$LIBXML2_HEADERS\"";
154
155         _write "OPENSRF_HEADERS=\"$OPENSRF_HEADERS\"";
156         _write "OPENSRF_LIBS=\"$OPENSRF_LIBS\"";
157
158         _write "WEBDIR=\"$WEBDIR\"";
159         _write "TEMPLATEDIR=\"$TEMPLATEDIR\"";
160         _write "ETCDIR=\"$ETCDIR\"";
161         _write "CIRCRULESDIR=\"$CIRCRULESDIR\"";
162         _write "CATALOGSCRIPTDIR=\"$CATALOGSCRIPTDIR\"";
163         _write "PENALTYRULESDIR=\"$PENALTYRULESDIR\"";
164         _write "XSLDIR=\"$XSLDIR\"";
165
166         # print out the targets
167         STR="TARGETS=(";
168         for target in ${TARGETS[@]:0}; do
169                 STR="$STR \"$target\"";
170         done;
171         STR="$STR)";
172         _write "$STR";
173
174     _write "EG_PYTHON_INSTALL=\"$EG_PYTHON_INSTALL\"";
175         _write "OPENILSDIR=\"Open-ILS/src/\"";
176         _write "EVERGREENDIR=\"Evergreen/\"";
177
178
179         _write "CGIDIR=\"$CGIDIR\"";
180
181         # db vars
182         _write "DBDRVR=\"$DBDRVR\"";
183         _write "DBHOST=\"$DBHOST\"";
184         _write "DBPORT=\"$DBPORT\"";
185         _write "DBNAME=\"$DBNAME\"";
186         _write "DBUSER=\"$DBUSER\"";
187         _write "DBPW=\"$DBPW\"";
188         _write "DBVER=\"$DBVER\"";
189         _write "REPORTERDIR=\"$REPORTERDIR\"";
190         _write "ADMINDIR=\"$ADMINDIR\"";
191
192
193         # Now we'll write out the DB bootstrapping config
194         CONFIG_FILE='Open-ILS/src/cgi-bin/setup.pl';
195         rm -f "$CONFIG_FILE";
196         echo "Writing bootstrapping config to $CONFIG_FILE...";
197
198         STR='$main::config{dsn} =';
199                 STR="$STR 'dbi:${DBDRVR}:host=";
200                 STR="${STR}${DBHOST};dbname=";
201                 STR="${STR}${DBNAME};port=";
202                 STR="${STR}${DBPORT}';";
203         _write "$STR"
204
205         STR='$main::config{usr} =';
206                 STR="$STR '$DBUSER';";
207         _write "$STR"
208         
209         STR='$main::config{pw} =';
210                 STR="$STR '$DBPW';";
211         _write "$STR"
212         
213         _write '$main::config{index} = "config.cgi";';
214
215
216     # --------------------------------------------------------------------
217         # Now we'll write out the offline config
218         CONFIG_FILE='Open-ILS/src/offline/offline-config.pl';
219         rm -f "$CONFIG_FILE";
220         echo "Writing bootstrapping config to $CONFIG_FILE...";
221
222     _write "\$main::config{base_dir} = '$PREFIX/var/data/offline/';";
223     _write "\$main::config{bootstrap} = '$ETCDIR/opensrf_core.xml';";
224
225         STR='$main::config{dsn} =';
226                 STR="$STR 'dbi:${DBDRVR}:host=";
227                 STR="${STR}${DBHOST};dbname=";
228                 STR="${STR}${DBNAME};port=";
229                 STR="${STR}${DBPORT}';";
230         _write "$STR"
231
232         STR='$main::config{usr} =';
233                 STR="$STR '$DBUSER';";
234         _write "$STR"
235         
236         STR='$main::config{pw} =';
237                 STR="$STR '$DBPW';";
238         _write "$STR"
239     # --------------------------------------------------------------------
240         
241
242         prompt "";
243         prompt "";
244         prompt "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!";
245         prompt "!! If installing openils_all / openils_db !!";
246         prompt "!! Before running 'make install' you MUST !!";
247         prompt "!! create a database for Open-ILS.  Use   !!";
248         prompt "!! the settings that you listed above and !!";
249         prompt "!! the install scripts will create the    !!";
250         prompt "!! database for you.  -miker              !!";
251         prompt "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!";
252         prompt "";
253         prompt "";
254
255         prompt "To write a new config, run 'make config'";
256         prompt "";
257         prompt "To edit individual install locations (e.g. changing the lib directory),"
258         prompt "edit the install.conf file generated from this script"
259         prompt ""
260
261 }
262
263 function _write {
264         echo "$*" >> "$CONFIG_FILE";
265 }
266
267
268
269 buildConfig;