#!/bin/sh

# script to create an index page for the dailybuild log directory
# the script expects a index_skeleton.html file to insert itself into,
# by replacing the ##DAILYBUILD_LOGS## text.

# helper functions

# take the Main filename and split the info out of it

split_name ()
{
    name=$1
    
    year=`echo $name | cut -c19-20`
    month=`echo $name | cut -c21-22`
    day=`echo $name | cut -c23-24`
    
    system=`echo $name | sed -e 's|\.[a-zA-Z]*.html.gz$||' | cut -c 26-`
}


# main script starts here

logdir=$1
skeleton=$2
target=$3

debug=0


if test ! -d $logdir -o ! -w $logdir 
then
    echo "$logdir not a directory or not writable, make_index aborted!"
    exit 1
fi

cd $logdir

if test ! -r $skeleton 
then
    echo "$skeleton not readable, make_index aborted!"
    exit 1
fi

outfile=/tmp/index_raw.html

# HTML header
cat << EOF > $outfile
<table border=1>
<tr>
<td><center>Date</center></td>
<td>System</td>
<td><center>Snapshots</center></td>
<td colspan="4"><center>Dists</center></td>
<td>Status</td>
</tr>
EOF

lastdate="00.00.00"
secondline=0

for i in `ls *.Main.html.gz | sort -r`;
do

    split_name $i
    
    echo "<tr>" >> $outfile
    
    date=$day.$month.$year
    filedate=${year}${month}${day}
    
    if test $date != $lastdate
    then
    	echo "<td style=date>$date</td>" >> $outfile
        
        # Add a line for documentation
        echo "<td style=snap colspan=7> Docs: " >> $outfile        

        for doc in userdocs.tar.gz devdocs.tar.gz StarterGuide.pdf.gz \
                   userdocs.chm.gz devdocs.chm.gz StarterGuide.pdf \
                   userdocs.chm devdocs.chm
        do
            test $debug -gt 1 && echo Name: opensg_dailybuild.${filedate}.OpenSG-*-${doc}
            file=`find . -name "opensg_dailybuild.${filedate}.OpenSG-*-${doc}" | head -n 1`
            test $debug -gt 1 && echo File: $file

            #name=`echo $doc | sed -e 's/\..*//'`
           
            if test x$file != x
            then
                echo "<a href=$file>$doc</a> " >> $outfile
            fi
            
        done
        
        echo "</td></tr><tr>" >> $outfile
        
        # Setup vars for dists
	lastdate=$date
        line=1
    fi
    
    snap=`echo $i | sed -e "s|${system}.Main.html.gz|source.tgz|"`    
    winsnap=`echo $i | sed -e "s|${system}.Main.html.gz|win-source.tgz|"`    
    if test $line = 1
    then
        if test -f $snap
        then
            echo "<td style=source><a href=$snap>Sources</a></td>" >> $outfile
        else
     	    echo "<td style=date> </td>" >> $outfile
        fi
        line=2
    elif test $line = 2
    then
        if test -f $winsnap
        then
            echo "<td style=source><a href=$winsnap>Win-Sources</a></td>" >> $outfile
        else
     	    echo "<td style=date> </td>" >> $outfile
        fi
        line=3
    elif test $line = 3
    then
        srpm=`ls -1 $srpm | head -n 1`
        if test -f $srpm
        then
            echo "<td style=source><a href=$srpm>SRPM</a></td>" >> $outfile
        else
     	    echo "<td style=date> </td>" >> $outfile
        fi
        line=4
    else
    	echo "<td style=date> </td>" >> $outfile
    fi
    
    echo "<td style=system><a href=$i>$system</a></td>" >> $outfile

    snap=`echo $i | sed -e 's|Main.html.gz|snapshot.tgz|'`    
    if test -f $snap
    then
    	echo "<td style=snap><a href=$snap>Binary</a></td>" >> $outfile
    else
    	echo "<td style=snap> </td>" >> $outfile
    fi

    distpat=`echo $i | sed -e 's|Main.html.gz|OpenSG\*|'`
    dists=`find . -name "$distpat" | fgrep -v .src.rpm | sort`

    if test "x$dists" = x
    then
        echo "<td style=snap colspan=4> </td>" >> $outfile
    else
        a=0
        for d in $dists
        do
            a=`expr $a + 1`
            dlist[$a]=$d
            ext=`echo $d | sed -e "s/.*-//" -e "s/[^.]*.//"`
            v=`echo $d | sed -e "s/.*-//" -e "s/.[^.]*$//"`
            if test $ext = "rpm"
            then
                if test $v == "devel"
                then
                    v="drpm"
                else
                    v="rpm"
                fi
            fi
            vlist[$a]=$v
        done

        case $a in
        0)  echo "<td style=snap colspan=4></td>" >> $outfile ;;
        1)  echo "<td style=snap colspan=4><center><a href="${dlist[1]}">${vlist[1]}</a></center></td>" >> $outfile ;;
        2)  echo "<td style=snap colspan=2><center><a href="${dlist[1]}">${vlist[1]}</a></center></td>" >> $outfile 
            echo "<td style=snap colspan=2><center><a href="${dlist[2]}">${vlist[2]}</a></center></td>" >> $outfile ;;
        4)  echo "<td style=snap><center><a href="${dlist[1]}">${vlist[1]}</a></center></td>" >> $outfile 
            echo "<td style=snap><center><a href="${dlist[2]}">${vlist[2]}</a></center></td>" >> $outfile 
            echo "<td style=snap><center><a href="${dlist[3]}">${vlist[3]}</a></center></td>" >> $outfile 
            echo "<td style=snap><center><a href="${dlist[4]}">${vlist[4]}</a></center></td>" >> $outfile ;;
        *)  echo "<td style=snap colspan=4></td>" >> $outfile ;;
        esac
    fi
    
    status=`gzip -dc $i | fgrep "had errors" | cut -c32- | sed -e 's|</font><br>||' -e 's|!|!<br>|g'`

    if test "x$status" = "x"
    then
			echo "<td style=status>No errors.</td>" >> $outfile
    else
			echo "<td style=status>$status</td>" >> $outfile
    fi
    				
    echo "</tr>" >> $outfile

done

# HTML footer
cat << EOF >> $outfile
</table>
EOF

# merge with index_skeleton.html

sed -e "/DAILYBUILD_LOGS/r $outfile" \
    -e "/DAILYBUILD_LOGS/d" < $skeleton > $target

# remove temporary

rm $outfile
