Git Repositories

Fix ssh authentication.
[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 CMD="$0"' '"$@"
41 while [ -n "$1" ] && [ "$1" != "--" ]; do
42   ARG="$1"
43   shift
44   case "$ARG" in
45     --help|-h)
46       usage
47       exit 0
48       ;;
49     --prefix=*)
50       PREFIX=$(echo "$ARG"|cut -d= -f2-)
51       ;;
52     --logsdir=*)
53       LOGS=$(echo "$ARG"|cut -d= -f2-)
54       ;;
55     --webbasedir=*)
56       WEB_BASE_DIR=$(echo "$ARG"|cut -d= -f2-)
57       ;;
58     --gitwebdir=*)
59       GITWEB_DIR=$(echo "$ARG"|cut -d= -f2-)
60       ;;
61     --githostname=*)
62       GIT_HOSTNAME=$(echo "$ARG"|cut -d= -f2-)
63       ;;
64     --githostport=*)
65       GIT_HOSTPORT=$(echo "$ARG"|cut -d= -f2-)
66       ;;
67     --githome=*)
68       GIT_HOME=$(echo "$ARG"|cut -d= -f2-)
69       ;;
70     --gituser=*)
71       GIT_USER=$(echo "$ARG"|cut -d= -f2-)
72       ;;
73     --webuser=*)
74       WEB_USER=$(echo "$ARG"|cut -d= -f2-)
75       ;;
76     --webtype=*)
77       val=$(echo "$ARG"|cut -d= -f2-)
78       if [ "$val" = "nginx" ] || [ "$val" = "apache" ] || [ "$val" = "none" ]; then
79         WEB_TYPE=$val
80       else
81         echo "Unrecognized web type: $val" >&2
82         exit 1
83       fi
84       ;;
85     --webtitle=*)
86       WEB_TITLE=$(echo "$ARG"|cut -d= -f2-)
87       ;;
88     *)
89       echo "Unrecognized parameter: $ARG" >&2
90       exit 1
91   esac
92 done
93
94 if [ ! -d "$PREFIX" ]; then
95   echo "Prefix $PREFIX does not exist." >&2
96   exit 2
97 fi
98 PREFIX=$(readlink -f "$PREFIX")
99 if [ ! -d "$LOGS" ]; then
100   echo "Logs directory $LOGS does not exist." >&2
101   exit 2
102 fi
103 LOGS=$(readlink -f "$LOGS")
104 if echo "$GIT_HOSTPORT"|grep -v -q '^[0-9]\+$'; then
105   echo "Git host port $GIT_HOSTPORT does not seems to be valid." >&2
106   exit 2
107 fi
108 GIT_HOME=$(readlink -f "$GIT_HOME")
109 if [ -n "$WEB_BASE_DIR" ] && echo "$WEB_BASE_DIR"|grep -v -q '/$'; then
110   WEB_BASE_DIR="$WEB_BASE_DIR/"
111 fi
112 GITWEB_DIR=$(echo "$GITWEB_DIR"|sed 's,/$,,')
113 if ! grep -q "^$WEB_USER:" /etc/passwd; then
114   echo "Web user '$WEB_USER' does not exist" >&2
115   exit 2
116 fi
117
118 cd $(dirname "$0")
119 cat <<EOF > config.mk
120 # $CMD
121 PREFIX = $PREFIX
122 LOGS = $LOGS
123 WEB_BASE_DIR = $WEB_BASE_DIR
124 GITWEB_DIR = $GITWEB_DIR
125 GIT_HOSTNAME = $GIT_HOSTNAME
126 GIT_HOSTPORT = $GIT_HOSTPORT
127 GIT_USER = $GIT_USER
128 GIT_HOME = $GIT_HOME
129 WEB_USER = $WEB_USER
130 WEB_TYPE = $WEB_TYPE
131 WEB_TITLE = $WEB_TITLE
132 EOF
133
134 [ -d git-master ] || wget https://github.com/git/git/archive/master.tar.gz -O - | tar xzf -
135 sed -i 's/^GITWEB_SITE_HEADER =/& header.html/; s/^GITWEB_SITE_FOOTER =/& footer.html/;' git-master/gitweb/Makefile