summaryrefslogtreecommitdiff
path: root/BitKeeper/triggers/post-outgoing.ciabot
blob: 4f2ec0b1db1a0c2c3fc09bd2eb01383a4ab1a382 (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
#!/bin/sh

check_sanity () {
    if [ X$BK_STATUS = XDRYRUN -o X$BK_STATUS = XNOTHING ]; then
        return 1
    fi

    # In order to make sure only pushes to public BitKeeper repositories
    # are broadcasted to #commits, we check that a) the parent repository
    # is on bkbits.net and b) we are the client.
    
    # Is parent a public BitKeeper repository at bkbits.net?
    if !(echo $BKD_HOST|grep -q bitkeeper.com); then
        return 1
    fi
    
    if [ $BK_SIDE != client ]; then
        return 1
    fi
}

# Check sanity - do we need to send anything?
check_sanity || exit 0

# Convert numbers from the cset list into something useful
nums=
for s in `cat $BK_CSETLIST`; do
    # translate cset serial to cset #
    n=`bk prs -h -d"\\$if(:DS: -eq $s){:REV:}" ChangeSet`
    # dont send notifications about empty ChangeSets
    if test -z `bk prs -h -r"$n" -d'$if(:LI: -eq 0){$if(:LD: -eq 0){:REV:}}' ChangeSet`; then
    	nums="$n $nums"
    fi
done

# Send notifications to CIA
if test -n "$nums"; then
    echo "Sending notification to CIA irc bot (cia.navi.cx)."
    (
        for n in $nums; do
            $BK_ROOT/BitKeeper/triggers/ciabot_bk.sh $n
        done
    ) &
fi
exit 0