blob: f0fb4aa626dda25f3bce2e336c09293381814c0b [file] [log] [blame]
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0-or-later
#
# Set "% mainfile:" lines with proper "% mainfile: <...>" tags in
# sub .tex files.
#
# With no argument, the main file will be "perfbook.tex",
# which will do nothing by default.
# With abbrev target such as "1c", "hb", and so on, the main file
# will be "perfbook-1c.tex", perfbook-hb.tex", and so on.
#
# Depth of subdirectory is deduced from the path of each sub .tex file.
#
# Changes made by this script can be reverted by running without
# argument.
#
# WARNING: By runnig this script, your working tree will be modified.
# It is highly recommented to commit your changes before running
# this script.
# If LATEX_OPT does not have "synctex", do nothing
if ! echo $LATEX_OPT | grep -q synctex ; then
echo "LATEX_OPT has no synctex option. Exiting..."
echo "See #11 in FAQ-BUILD.txt for SyncTeX support."
exit 1
fi
# warn if git status is not clean later
gitstatus=`git status --porcelain | wc -l`
if [ $gitstatus != "0" ] ; then
wasnotclean=1
else
wasnotclean=0
fi
if [ $# -eq 0 ] ; then
main="perfbook.tex"
change="reverted"
else
case $1 in
2c|qq)
main="perfbook.tex"
change="reverted"
;;
1c|hb|a4|tcb|msnt|mstx|msr|msn|sf|msns|mss|nq|ix|df)
main="perfbook-$1.tex"
change="modified"
;;
1ctcb|1cmsnt|1cmstx|1cmsr|1cmsn|1csf|1cmsns|1cmss|1cnq|1cix|1cdf)
main="perfbook-$1.tex"
change="modified"
;;
eb|ebsf|ebnq|ebsfnq|ebix|ebdf)
main="perfbook-$1.tex"
change="modified"
;;
*)
echo "Unknown target!!"
exit 1
;;
esac
fi
tmpf=`mktemp`
texfiles=`find . -name '*.tex' -print`
modified=0
for i in $texfiles
do
c=$(expr `echo $i | grep -o "/" | wc -l` - 1)
x=
for j in $(seq 1 $c)
do
x=..\\/$x
done
mainpath=$x$main
pattern="s/% mainfile: .*perfbook.*\.tex/% mainfile: $mainpath/"
cat $i | sed -e "$pattern" > $tmpf
if ! diff -q $i $tmpf >/dev/null ; then
echo "$i $change."
cp -f $tmpf $i
modified=1
fi
done
if [ $modified -eq 0 ] ; then
echo "No modification."
else
if [ $main != "perfbook.tex" -a $wasnotclean -eq 1 ] ; then
echo "### Git status was not clean."
echo "### To revert the changes, just run '$0'."
fi
fi
# skip database check when reverting
if [ `echo $change | grep -c "revert"` -ne 0 ] ; then
exit 0
fi
# check if synctex database exists
mainbase="${main%.tex}"
if [ `ls -1 perfbook* | grep -c $mainbase.synctex` -eq 0 ] ; then
echo "### $mainbase.synctex*: file not found."
echo "### See #11 in FAQ-BUILD.txt for how to generate one."
fi