aboutsummaryrefslogtreecommitdiff
path: root/gitrc_conf_gen.sh
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 !"