Git Repositories

Use a real configure and Makefile
[simple-git-host.git] / configure
1 #!/bin/sh
2 PREFIX=/var/www/git/pages
3 LOGS=/var/www/git/logs
4 WEB_BASE_DIR=
5 GITWEB_DIR=gitweb
6 GIT_HOSTNAME=localhost
7 GIT_HOSTPORT=80
8 GIT_USER=git
9 GIT_HOME=/home/$GIT_USER
10 WEB_USER=nobody
11 WEB_TYPE=nginx
12 WEB_TITLE="Git Repositories"
13
14 usage() {
15   cat <<EOF
16 configure [OPTIONS]
17
18 OPTIONS:
19   --help                      print this message
20
21   --prefix=PREFIX             install web files into PREFIX [$PREFIX]
22   --logsdir=DIR               logs location of the web site [$LOGS]
23   --webbasedir=NAME           NAME of the web base dir, empty for virtual host [$WEB_BASE_DIR]
24   --gitwebdir=NAME            NAME of the gitweb directory [$GITWEB_DIR]
25   --githostname=HOSTNAME      HOSTNAME of the git service [$GIT_HOSTNAME]
26   --githostport=PORT          PORT of the git service [$GIT_HOSTPORT]
27   --githome=DIR               location where to store the repositories [$GIT_HOME]
28                               This directory will be created if not exists.
29   --gituser=USER              system USER to handle the repositories [$GIT_USER]
30                               This user will be created if not exists.
31   --webuser=USER              system USER to run the webserver [$WEB_USER]
32                               This user should exist.
33   --webtype=TYPE              TYPE of webserver. Could be nginx, apache or none.
34                               Will generate the corresponding template here.
35                               Default to [$WEB_TYPE]
36   --webtitle=TITLE            TITLE of the web site [$WEB_TITLE]
37 EOF
38 }
39
40 while [ -n "$1" ] && [ "$1" != "--" ]; do
41   ARG="$1"
42   shift
43   case "$ARG" in
44     --help|-h)
45       usage
46       exit 0
47       ;;
48     --prefix=*)
49       PREFIX=$(echo "$ARG"|cut -d= -f2-)
50       ;;
51     --logsdir=*)
52       LOGS=$(echo "$ARG"|cut -d= -f2-)
53       ;;
54     --webbasedir=*)
55       WEB_BASE_DIR=$(echo "$ARG"|cut -d= -f2-)
56       ;;
57     --gitwebdir=*)
58       GITWEB_DIR=$(echo "$ARG"|cut -d= -f2-)
59       ;;
60     --githostname=*)
61       GIT_HOSTNAME=$(echo "$ARG"|cut -d= -f2-)
62       ;;
63     --githostport=*)
64       GIT_HOSTPORT=$(echo "$ARG"|cut -d= -f2-)
65       ;;
66     --githome=*)
67       GIT_HOME=$(echo "$ARG"|cut -d= -f2-)
68       ;;
69     --gituser=*)
70       GIT_USER=$(echo "$ARG"|cut -d= -f2-)
71       ;;
72     --webuser=*)
73       WEB_USER=$(echo "$ARG"|cut -d= -f2-)
74       ;;
75     --webtype=*)
76       val=$(echo "$ARG"|cut -d= -f2-)
77       if [ "$val" = "nginx" ] || [ "$val" = "apache" ] || [ "$val" = "none" ]; then
78         WEB_TYPE=$val
79       else
80         echo "Unrecognized web type: $val" >&2
81         exit 1
82       fi
83       ;;
84     --webtitle=*)
85       WEB_TITLE=$(echo "$ARG"|cut -d= -f2-)
86       ;;
87     *)
88       echo "Unrecognized parameter: $ARG" >&2
89       exit 1
90   esac
91 done
92
93 if [ ! -d "$PREFIX" ]; then
94   echo "Prefix $PREFIX does not exist." >&2
95   exit 2
96 fi
97 PREFIX=$(readlink -f "$PREFIX")
98 if [ ! -d "$LOGS" ]; then
99   echo "Logs directory $LOGS does not exist." >&2
100   exit 2
101 fi
102 LOGS=$(readlink -f "$LOGS")
103 if echo "$GIT_HOSTPORT"|grep -vq '^[0-9]\+$'; then
104   echo "Git host port $GIT_HOSTPORT does not seems to be valid." >&2
105   exit 2
106 fi
107 GIT_HOME=$(readlink -f "$GIT_HOME")
108 if [ -n "$WEB_BASE_DIR" ] && echo "$WEB_BASE_DIR"|grep -vq '/$'; then
109   WEB_BASE_DIR="$WEB_BASE_DIR/"
110 fi
111 GITWEB_DIR=$(echo "$GITWEB_DIR"|sed 's,/$,,')
112 if grep -vq "^$WEB_USER:" /etc/passwd; then
113   echo "Web user '$WEB_USER' does not exist" >&2
114   exit 2
115 fi
116
117 cd $(dirname "$0")
118 cat <<EOF > config.mk
119 PREFIX = $PREFIX
120 LOGS = $LOGS
121 WEB_BASE_DIR = $WEB_BASE_DIR
122 GITWEB_DIR = $GITWEB_DIR
123 GIT_HOSTNAME = $GIT_HOSTNAME
124 GIT_HOSTPORT = $GIT_HOSTPORT
125 GIT_USER = $GIT_USER
126 GIT_HOME = $GIT_HOME
127 WEB_USER = $WEB_USER
128 WEB_TYPE = $WEB_TYPE
129 WEB_TITLE = $WEB_TITLE
130 EOF
131
132 [ -d git-master ] || wget https://github.com/git/git/archive/master.tar.gz -O - | tar xzf -