mariadb/ndb/test/run-test/make-index.sh
2004-04-14 10:53:21 +02:00

242 lines
4.1 KiB
Bash
Executable file

#!/bin/sh
# NAME
# make-index.sh
#
# SYNOPSIS
# make-index.sh [ -d <dir> ]
#
# DESCRIPTION
#
# OPTIONS
#
# EXAMPLES
#
#
# ENVIRONMENT
# NDB_PROJ_HOME Home dir for ndb
#
# FILES
# $NDB_PROJ_HOME/lib/funcs.sh general shell script functions
#
#
# SEE ALSO
#
# DIAGNOSTICTS
#
# VERSION
# 1.0
#
# AUTHOR
# Jonas Oreland
#
progname=`basename $0`
synopsis="make-index.sh [ -d <dir> ]"
: ${NDB_PROJ_HOME:?} # If undefined, exit with error message
: ${NDB_LOCAL_BUILD_OPTIONS:=--} # If undef, set to --. Keeps getopts happy.
# You may have to experiment a bit
# to get quoting right (if you need it).
. $NDB_PROJ_HOME/lib/funcs.sh # Load some good stuff
# defaults for options related variables
#
dst_dir=/home/autotest/html
report_date=`date '+%Y-%m-%d'`
uniq_id=$$.$$
verbose=yes
# used if error when parsing the options environment variable
#
env_opterr="options environment variable: <<$options>>"
# Option parsing, for the options variable as well as the command line.
#
# We want to be able to set options in an environment variable,
# as well as on the command line. In order not to have to repeat
# the same getopts information twice, we loop two times over the
# getopts while loop. The first time, we process options from
# the options environment variable, the second time we process
# options from the command line.
#
# The things to change are the actual options and what they do.
#
#
for optstring in "$options" "" # 1. options variable 2. cmd line
do
while getopts q:s:R:d: i $optstring # optstring empty => no arg => cmd line
do
case $i in
q) verbose="";; # echo important things
d) dst_dir=$OPTARG;; # Destination directory
\?) syndie $env_opterr;; # print synopsis and exit
esac
done
[ -n "$optstring" ] && OPTIND=1 # Reset for round 2, cmdline options
env_opterr= # Round 2 should not use the value
done
shift `expr $OPTIND - 1`
dst_dir=`abspath $dst_dir`
###
#
# General html functions
header(){
cat <<EOF
<html><head><title>$*</title></head>
<body>
EOF
}
footer(){
cat <<EOF
</body></html>
EOF
}
heading(){
h=$1; shift
cat <<EOF
<h$h>$*</h$h>
EOF
}
table(){
echo "<table $*>"
}
end_table(){
echo "</table>"
}
row(){
echo "<tr>"
}
end_row(){
echo "</tr>"
}
c_column(){
cat <<EOF
<td valign=center align=center>$*</td>
EOF
}
bold(){
cat <<EOF
<b>$*</b>
EOF
}
column(){
cat <<EOF
<td valign=center align=left>$*</td>
EOF
}
para(){
cat <<EOF
<p></p>
EOF
}
hr(){
cat <<EOF
<hr>
EOF
}
inc_summary() {
grep -v 'html>' $2 | grep -v body | sed 's/href="/href="'$1'\//g'
}
# --- option parsing done ---
# -- Verify
trace "Verifying arguments"
# --- option verifying done ---
### Main
# Re creating index
trace "Creating index"
(
header "Autotest super-duper index"
heading 1 "<center>Autotest super-duper index</center>"
cat -E README.autotest | sed 's/\$/<BR>/g'
echo "<br>"
echo "Current <a href="crontab.current">crontab</a> installed on mc01 running [" `uname -a` "]"
hr
dirs=`find $dst_dir -name 'summary.*.html' -type f -maxdepth 2 -exec dirname {} \; | sort -u`
dates=`find $dst_dir -name 'summary.*.html' -type f -maxdepth 2 -exec basename {} \; | sed 's/summary\.\(.*\)\.html/\1/g' | sort -u | sort -r`
echo "<p align=center>"
#inline 5 latest reports
r_count=5
for d in $dates
do
for o in $dirs
do
o=`basename $o`
if [ -r $dst_dir/$o/summary.$d.html ]
then
inc_summary $o $dst_dir/$o/summary.$d.html
hr
r_count=`expr $r_count - 1`
if [ $r_count -eq 0 ]
then
break 2
fi
fi
done
done
table "border=1"
row
for i in $dirs
do
i=`basename $i`
column `bold $i`
done
end_row
for d in $dates
do
row
for o in $dirs
do
o=`basename $o`
if [ -r $dst_dir/$o/summary.$d.html ]
then
column "<a href=$o/summary.$d.html>$d</a>"
else
column ""
fi
done
end_row
done
end_table
footer
) > $dst_dir/index.html
exit 0