#!/bin/sh
path=../../../src_plugins
sloc()
{
(cd "$1" && sloccount .) | awk '/^Total Phys/ { size=$9; sub(",", "", size); print size }'
}
gen_pie()
{
local bn=$1 code_size=$2 color=$3
echo ""
echo "@slice"
echo "$code_size"
echo "@label"
echo "$bn ($code_size)"
if test ! -z "$color"
then
echo "@color"
echo "$color"
fi
}
rm -f *.pie *.lines
echo "#autogenerated by gen.sh" > mods.pie
echo "#autogenerated by gen.sh" > after.pie
echo Core >&2
tmp=/tmp/pcb-mods-stat
mkdir $tmp
cp -r ../../../src/*.c ../../../src/*.h ../../../src/Makefile* $tmp
code_size=`sloc $tmp`
gen_pie "core" $code_size "#00ff88" >> after.pie
#echo 3rd >&2
#code_size=`sloc ../../src_3rd`
#gen_pie "3rd" $code_size >> after.pie
echo "" > classes
echo '
digraph plugin_deps {
overlap=scale
'> deps.dot
(
cat pre.html
for n in $path/*
do
if test -d "$n"
then
echo $n >&2
bn=`basename $n`
code_size=`sloc $n`
total=$(($total + $code_size))
class=`cat $n/*.pup | sed '
/^$class/ {
s/$class *//
s/[()]//g
p
}
{ d }
' `
echo "$class" >> classes
echo "$code_size" >> $class.lines
gen_pie $bn $code_size >> $class.pie
# case $bn in
# gpmi) echo "@pull" >> mods.pie; echo "0.1" >> mods.pie;;
# esac
echo "
$bn | $code_size"
cat $n/*.pup | awk -v "plugin=$n" '
BEGIN {
q = "\""
dep="/dev/fd/3"
sub(".*/", "", plugin)
}
/^[$]/ {
key=$1
sub("[$]", "", key)
$1=""
DB[key]=$0
next
}
/^dep/ {
print q plugin q "->" q $2 q >> dep
}
/^[A-Za-z]/ {
key=$1
$1=""
DB[key]=$0
next
}
function strip(s) {
sub("^[ \t]*", "", s)
sub("[ \t]*$", "", s)
return s
}
END {
st = DB["state"]
if (st ~ "partial")
clr = "bgcolor=\"yellow\""
else if (st ~ "works")
clr = "bgcolor=\"lightgreen\""
else if ((st ~ "fail") || (st ~ "disable"))
clr = "bgcolor=\"red\""
else
clr=""
clr2 = clr
if (clr2 != "") {
sub("bgcolor=\"", "", clr2)
sub("\"", "", clr2)
print "@color" >> "mods.pie"
print clr2 >> "mods.pie"
}
print " | " st
if (DB["lstate"] != "")
print " (" strip(DB["lstate"]) ")"
dfl = DB["default"]
if (dfl ~ "buildin")
clr = "bgcolor=\"lightgreen\""
else if (dfl ~ "plugin")
clr = "bgcolor=\"yellow\""
else if ((dfl ~ "disable-all") || (dfl ~ "disable"))
clr = "bgcolor=\"red\""
else
clr=""
print " | " dfl
if (DB["ldefault"] != "")
print " (" strip(DB["ldefault"]) ")"
print " | " DB["class"]
print " | " DB["long"]
if (int(DB["autoload"]))
print q "user" q "->" q plugin q " [color=\"#a0a0a0\"]" >> dep
class = DB["class"]
if (class ~ "io")
clr = "fillcolor=\"#ffa0a0\""
else if (class ~ "import")
clr = "fillcolor=\"#a0ffff\""
else if (class ~ "export")
clr = "fillcolor=\"#a0ffff\""
else if (class ~ "lib")
clr = "fillcolor=\"#a0a0a0\""
else if (class ~ "hid")
clr = "fillcolor=\"#a0a0ff\""
print q plugin q " [style=filled " clr "]" >> dep
}
'
fi
done
cat post.html
gen_pie "plugins" "$total" "#0088ff" >> after.pie
) > index.html 3>>deps.dot
echo "}" >>deps.dot
twopi -Tsvg deps.dot > deps.svg
for n in *.lines
do
lines=`awk '{ sum += $1 } END { print sum }' < $n`
bn=${n%%.lines}
gen_pie $bn $lines >> mods.pie
done
classes=`sort < classes | uniq`
for n in $classes after mods
do
animpie < $n.pie | animator -H -d $n
pngtopnm ${n}0000.png | pnmcrop | pnmtopng > $n.png
rm ${n}0000.png
done
rm classes
|
---|