blob: cb41fd2588d1e531b7915d57ce69fa18dbc9730c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
#!/bin/bash
GITROOT="/home/git/pub_repo"
if [ $USER != $(stat -c %U ${GITROOT}) ] && [ $USER != "root" ] ; then
echo "Sorry you cannot write in ${GITROOT}."
echo "You must be the $(stat -c %U ${GITROOT}) user or the root user."
exit
fi
pushd ${GITROOT} > /dev/null
echo "=== Generate config ==="
find . -mindepth 1 -maxdepth 5 -type d \( ! -iname ".*" \) \( ! -iname "refs" \) \( ! -iname "hooks" \) \( ! -iname "info" \) \( ! -iname "branches" \) \( ! -iname "objects" \) \( -iname "*.git" \)| sed 's|^\./||g' |
while read filename
do
echo "repo.url=$filename"
echo "repo.path=${GITROOT}/$filename"
echo "repo.readme=${GITROOT}/$filename/info/web/about.html"
echo "repo.desc=$(cat ${GITROOT}/$filename/description)"
echo "repo.owner=neodarz"
echo ""
done > cgitrepos
echo "=== Generate post-receive ==="
find . -mindepth 1 -maxdepth 5 -type d \( ! -iname ".*" \) \( ! -iname "refs" \) \( ! -iname "hooks" \) \( ! -iname "info" \) \( ! -iname "branches" \) \( ! -iname "objects" \) \( -iname "*.git" \)| sed 's|^\./||g' |
while read filename
do
cat << EOF > ${GITROOT}/$filename/hooks/post-receive
#!/bin/bash
agefile="\$(git rev-parse --git-dir)"/info/web/last-modified
aboutfile="\$(git rev-parse --git-dir)"/info/web/about.html
echo "Generating $filename project about page..."
mkdir -p "\$(dirname "\$agefile")" && git for-each-ref --sort=-authordate --count=1 --format='%(authordate:iso8601)' > "\$agefile"
mkdir -p "\$(dirname "\$aboutfile")" && git show master:README.md | pandoc -f markdown > "\$aboutfile"
if [[ \$(wc -c < \$(git rev-parse --git-dir)/info/web/about.html) -gt 1 && \$(cat ${GITROOT}/cgitrepos | grep "repo.readme=.*$filename.*" | wc -l) -eq 0 ]]; then
echo "=> About page generated, update configuration..."
sed -i "s repo.path.*$filename.*$ &\nrepo.readme=${GITROOT}/$filename/info/web/about.html g" ${GITROOT}/cgitrepos
fi
EOF
chmod +x ${GITROOT}/$filename/hooks/post-receive
pushd ${GITROOT}/$filename/hooks/ > /dev/null
./post-receive
popd > /dev/null
sudo chown -R git:git ${GITROOT}
if [ ! $(wc -c < ${GITROOT}/$filename/info/web/about.html) -gt 1 ]; then
sed -i "\ repo.readme=${GITROOT}/$filename/info/web/about.html d" cgitrepos
fi
done
echo "done !"
|