The sound distributed version control system
#!/bin/bash

REPO="$(pijul remote | grep -F nest.pijul.com | sed -e 's/  //g')"
if echo "$REPO" | grep -Fq '@'; then
    # ssh url
    REPO="https://$(echo "$REPO" | cut -f2 -d@ | sed -e 's#:#/#g')"
fi
if [ -z "$REPO" ]; then
    echo "WARN: unable to get repo url" 1>&2
fi

TMPFB="$(mktemp)"
trap 'rm -f $TMPFB' EXIT

(
echo 'digraph PCG {'
#echo 'nodesep = 5;'
echo 'overlap = scale;'
echo 'node [shape=none,target="_blank"];'
# mark important nodes
for i; do
    echo "\"$i\" [fontcolor=\"#0000FF\"];"
    echo "$i" >> "$TMPFB"
done
pijul log | grep ^Change | while read DUMMY ID; do
    pijul change "$ID" | awk -v oid="$ID" -v collf="$TMPFB" '
$1 == "#" {
    section = $2;
}
$1 != "#" && $2 != "" && section == "Dependencies" && $1 != "[*]" && substr($1,length($1),1) != "+" {
    print "\"" oid "\" -> \"" $2 "\"" extra ";";
    print $2 >> collf;
}
'
    echo "$ID" >> "$TMPFB"
done
sort -u < "$TMPFB" | while read ID; do
    echo "\"$ID\" [URL=\"$REPO/changes/$ID\"]";
done
echo '}'
) | sfdp -Tsvg /dev/stdin -o /dev/stdout