summaryrefslogtreecommitdiff
path: root/Omni/Cloud/post-receive.sh
blob: 179fbd05634e76fced56028eacbd86815c3ca0e0 (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
#!/usr/bin/env bash
#
# creates an archive of a git repo on push
#
# unfortunately the nixos gitolite module does not copy the 'commonHooks'
# properly, so we have to manually deploy this like so:
#
#     scp Omni/Cloud/post-receive \
#         root@simatime.com:/srv/git/.gitolite/hooks/common/post-receive
#
# One time only:
#
#     ssh root@simatime.com "sudo -u git gitolite setup -ho"
#
# Also on first-time setup, might need to manually check the permissions are
# correct on $webroot/archive or wherever else.
#
set -euo pipefail
while read -r _ newrev refname
do
    if [[ -e ./git-daemon-export-ok ]]
    then
        repo=$(basename "$PWD" | sed 's/.git//g')
        branch=$(git rev-parse --symbolic --abbrev-ref "$refname")
        webroot="/srv/www/simatime.com/"
        outdir="$webroot/archive/$repo/$branch"
        mkdir -p "$outdir"
        echo " making:  https://simatime.com/archive/$repo/$branch/$newrev.tar.gz"
        git archive "$branch" --prefix "$repo-$branch/" --format tar \
            | gzip > "$outdir/$newrev.tar.gz"
        echo " making:  https://simatime.com/archive/$repo/$branch/$newrev.sha256"
        hash=$(nix-prefetch-url --unpack file://"$outdir"/"$newrev".tar.gz 2>/dev/null)
        echo "$hash" > "$outdir/$newrev.sha256"
        echo " commit:  $newrev"
        echo " sha256:  $hash"
        echo "in omni:  deps update $repo --branch $branch --rev $newrev --attribute sha256=$hash"
        chmod -R 755 "$webroot/archive"
    fi
done