1
0
mirror of git://projects.qi-hardware.com/eda-tools.git synced 2024-11-26 08:19:42 +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() usage()
{ {
cat <<EOF 2>&1 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-dir top-level directory of the git archive (default: locate it)
top-schem root sheet of the schematics (default: locate it in top-dir) top-schem root sheet of the schematics (default: locate it in top-dir)
out-dir output directory (default: $OUTDIR) out-dir output directory (default: $OUTDIR)
-c cache-dir cache directory (default: same as out-dir) -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) -n don't use previous cache content (rebuild the cache)
-S sanitize KiCad profile -S sanitize KiCad profile
EOF EOF
@ -116,6 +117,7 @@ EOF
no_cache=false no_cache=false
sanitize= sanitize=
use_sch_name=false
while true; do while true; do
case "$1" in case "$1" in
@ -124,6 +126,8 @@ while true; do
-c) [ -z "$1" ] && usage -c) [ -z "$1" ] && usage
cache="$1" cache="$1"
shift 2;; shift 2;;
-f) use_sch_name=true
shift;;
-S) sanitize=-S -S) sanitize=-S
shift;; shift;;
-*) usage;; -*) 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 # the ghostscript run and just put a symlink, replacing the less
# efficient optimization below. # 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 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 # Postscript, for making PDFs later
ps="$cache/$n/ps/`basename "$m"`" ps="$cache/$n/ps/$name.ps"
normalizeschps "$m" "$ps" || exit normalizeschps "$m" "$ps" || exit
# Unadorned pixmap, for comparison # Unadorned pixmap, for comparison
ppm="$cache/$n/ppm0/`basename "$m" .ps`.ppm" ppm="$cache/$n/ppm0/$name.ppm"
schps2ppm -n "$ps" "$ppm" || exit schps2ppm -n "$ps" "$ppm" || exit
# Pixmap with thin lines, for the detail views # 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 normalizeschps -w 120 "$m" | schps2ppm - "$ppm" || exit
# Pixmap with thick lines, for the thumbnails # 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 normalizeschps -w 500 "$m" | schps2ppm - "$ppm" || exit
done done
rm -rf "$tmp" rm -rf "$tmp" "$tmp2"
fi fi
for m in "$cache/$n/ppm0/"*; do for m in "$cache/$n/ppm0/"*; do
[ "$m" = "$cache/$n/ppm0/*" ] && break [ "$m" = "$cache/$n/ppm0/*" ] && break