buddylistgrapher

diff graph_sh.sh @ 16:dbaa8a943271

merge
author ju
date Thu, 05 Jul 2007 18:13:01 +0200
parents 6c327ae23d2c
children
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/graph_sh.sh	Thu Jul 05 18:13:01 2007 +0200
     1.3 @@ -0,0 +1,72 @@
     1.4 +#!/bin/bash
     1.5 +# 
     1.6 +# Autor: Julian Forster (www.ProgMaschine.de.vu)
     1.7 +# Autor: markus schnalke (prog.marmaro.de)
     1.8 +#
     1.9 +
    1.10 +
    1.11 +if [ $# -eq 1 ]; then
    1.12 +  if [ $1 = '--version' ] ; then
    1.13 +    echo 'Buddylistgrapher (shell)'
    1.14 +    echo '========================'
    1.15 +    echo 'version 0.2'
    1.16 +    echo
    1.17 +    echo 'by Julian Forster (http://progmaschine.de.vu)'
    1.18 +    echo 'and Markus Schnalke (http://prog.marmaro.de)'
    1.19 +    exit 0
    1.20 +  elif [ $1 = '--help' ] ; then
    1.21 +    echo 'Buddylistgrapher (shell)'
    1.22 +    echo '========================'
    1.23 +    echo
    1.24 +    echo "usage: $0 <input.txt>"
    1.25 +    echo
    1.26 +    echo "The grapher generates output to stdout."
    1.27 +    echo "This output is the input for the graphviz tools."
    1.28 +    echo
    1.29 +    echo "You can use it like this:"
    1.30 +    echo "$0 input.txt | dot -Tpng > pic.png"
    1.31 +    echo
    1.32 +    echo "ToDo:"
    1.33 +    echo "The program was written for one specific kind of input data,"
    1.34 +    echo "so there is still some work to do to use it for general input."
    1.35 +    exit 0
    1.36 +  else
    1.37 +
    1.38 +    file=/tmp/`basename $0`-$$
    1.39 +    file2=/tmp/`basename $0`-$$-2
    1.40 +
    1.41 +    # extract all needed lines
    1.42 +    grep -e "Profil von:" -e "Nachricht schreiben" $1 > $file
    1.43 +
    1.44 +
    1.45 +    # collect all profil names (we only want them as nodes)
    1.46 +    cat $file | while read line ; do
    1.47 +      echo -n "`echo $line | grep "Profil von:" | awk '{print " " $3 " "}'`" >> $file2
    1.48 +    done
    1.49 +    echo >> $file2
    1.50 +
    1.51 +
    1.52 +    # output
    1.53 +    echo "digraph G {"
    1.54 +    
    1.55 +    cat $file | while read line ; do
    1.56 +      if [ -n "`echo $line | grep "Profil von:"`" ] ; then
    1.57 +        name=$(echo $line |  awk '{ print $3 }')
    1.58 +      else
    1.59 +        buddy=$(echo $line |  awk '{ print $3 }')
    1.60 +        if [ -n "`grep -F " $buddy " $file2`" ] ; then
    1.61 +          echo "  \"$name\" -> \"$buddy\";"
    1.62 +        fi
    1.63 +      fi    
    1.64 +    done
    1.65 +
    1.66 +    echo "}"
    1.67 +
    1.68 +    rm $file $file2
    1.69 +    exit 0
    1.70 +
    1.71 +  fi
    1.72 +else
    1.73 +    echo "usage: $0 <input.txt>"
    1.74 +    exit 1
    1.75 +fi