1
0
mirror of git://projects.qi-hardware.com/eda-tools.git synced 2024-11-22 20:45:55 +02:00

schhist2web can now identify sub-sheets by file name (also across renames).

- schhist/schhist2web: strip the top-level sheet name prefix from sub-sheet
  names
- schhist/schhist2web: option -f to identify sub-sheets by their file name
  instead of the sheet name
- schhist/schhist2web: keep the name of the top-level sheet constant across
  renames
- schhist/schhist2web: if using -f, try to keep the name of the sub-sheets
  constant across renames
This commit is contained in:
Werner Almesberger 2010-09-22 09:36:00 -03:00
parent 150f9ab4d4
commit 16001d32a7

View File

@ -98,12 +98,13 @@ EOF
usage()
{
cat <<EOF 2>&1
usage: $0 [-c cache-dir] [-n] [-S] [top-dir] [top-schem] [out-dir]
usage: $0 [-c cache-dir] [-f] [-n] [-S] [top-dir] [top-schem] [out-dir]
top-dir top-level directory of the git archive (default: locate it)
top-schem root sheet of the schematics (default: locate it in top-dir)
out-dir output directory (default: $OUTDIR)
-c cache-dir cache directory (default: same as out-dir)
-f identify sheets by their file name, not the sheet name
-n don't use previous cache content (rebuild the cache)
-S sanitize KiCad profile
EOF
@ -116,6 +117,7 @@ EOF
no_cache=false
sanitize=
use_sch_name=false
while true; do
case "$1" in
@ -124,6 +126,8 @@ while true; do
-c) [ -z "$1" ] && usage
cache="$1"
shift 2;;
-f) use_sch_name=true
shift;;
-S) sanitize=-S
shift;;
-*) usage;;
@ -221,25 +225,50 @@ for n in $first `cd "$dir" && git rev-list --reverse $first..HEAD`; do
# the ghostscript run and just put a symlink, replacing the less
# efficient optimization below.
#
gitsch2ps $sanitize "$dir" "$schname" $n "$tmp" || exit
tmp2=`gitsch2ps -k $sanitize "$dir" "$schname" $n "$tmp"` || exit
for m in "$tmp"/*.ps; do
# call sub-sheets by their own name, without prepending the
# top-level sheet's name
name=`basename "$m" .ps`
name=${name#`basename "$schname" .sch`-}
#
# short-cut for $schname: since it's derived from the present $sch,
# we can just update it without further ado.
#
if [ "$name" = "`basename \"$schname\" .sch`" ]; then
name=`basename "$sch" .sch`
elif $use_sch_name &&
path=`subschname2file "$tmp2/$schname" "$name"`; then
name=`basename "$path" .sch`
#
# if the file is easily located, also track any future name
# changes
#
path=`dirname "$schname"`/$path
if [ -f "$tmp2/$path" ]; then
name=`gitwhoareyounow "$tmp2" "$path"`
name=`basename "$name" .sch`
fi
fi
# Postscript, for making PDFs later
ps="$cache/$n/ps/`basename "$m"`"
ps="$cache/$n/ps/$name.ps"
normalizeschps "$m" "$ps" || exit
# Unadorned pixmap, for comparison
ppm="$cache/$n/ppm0/`basename "$m" .ps`.ppm"
ppm="$cache/$n/ppm0/$name.ppm"
schps2ppm -n "$ps" "$ppm" || exit
# Pixmap with thin lines, for the detail views
ppm="$cache/$n/ppm1/`basename "$m" .ps`.ppm"
ppm="$cache/$n/ppm1/$name.ppm"
normalizeschps -w 120 "$m" | schps2ppm - "$ppm" || exit
# Pixmap with thick lines, for the thumbnails
ppm="$cache/$n/ppm2/`basename "$m" .ps`.ppm"
ppm="$cache/$n/ppm2/$name.ppm"
normalizeschps -w 500 "$m" | schps2ppm - "$ppm" || exit
done
rm -rf "$tmp"
rm -rf "$tmp" "$tmp2"
fi
for m in "$cache/$n/ppm0/"*; do
[ "$m" = "$cache/$n/ppm0/*" ] && break