| version 1.12, 2005/05/30 21:58:20 |
version 1.13, 2005/06/11 01:46:58 |
|
|
| # All rights reserved. |
# All rights reserved. |
| # |
# |
| |
|
| # $Platon: Platon.SK/office/_scripts/create-document,v 1.11 2005/05/29 00:02:47 rajo Exp $ |
# $Platon: platos/_scripts/create-document,v 1.12 2005/05/30 21:58:20 rajo Exp $ |
| |
|
| |
# Uncomment following 2 lines for debugging |
| |
#DEBUG="echo" |
| |
#NODEBUG=":" |
| |
|
| DATE_SHORT="`date '+%y-%m-%d'`"; |
DATE_SHORT="`date '+%y-%m-%d'`"; |
| DATE_LONG="`date '+%Y-%m-%d'`"; |
DATE_LONG="`date '+%Y-%m-%d'`"; |
| DATE=$DATE_LONG; |
DATE=$DATE_LONG; |
| YEAR="`date '+%Y'`"; |
YEAR="`date '+%Y'`"; |
| |
|
| MYSELF="Platon.SK/office/_scripts/create-document" |
PERCENT_SIGN="%" # only for testing sed |
| |
HERE=`pwd` |
| |
|
| |
MYSELF="platos/_scripts/create-document" |
| |
|
| |
dirname="$1" |
| |
filename="$2" |
| |
model="$3" |
| |
STYLESHEET="$4" |
| |
PREFIX="$5" |
| |
APPEND_DIRNAME="$6" |
| |
|
| |
usage() |
| |
{ # {{{ |
| |
echo |
| |
echo "Usage [path] [filename] [naming schema] [stylesheet] [prefix] [append dirname?]" |
| |
echo |
| |
exit 1 |
| |
} # }}} |
| |
|
| |
generate_sed_cmd() |
| |
{ # {{{ |
| |
cmd="" |
| |
for key in $*; do |
| |
cmd="$cmd s%@$key@%"`echo "${!key}" | sed -e 's/%/\\\\%/g;' `"%g;"; |
| |
done |
| |
echo "$cmd" |
| |
} # }}} |
| |
|
| if [ -z "$TOP_DIR" ]; then |
if [ -z "$TOP_DIR" ]; then |
| echo '$TOP_DIR is empty, using current directory...' |
echo '$TOP_DIR is empty, using current directory...' |
| TOP_DIR="." |
TOP_DIR="." |
| fi |
fi |
| TEMPLATES="$TOP_DIR/_templates" |
|
| |
|
| if [ -z "$1" ]; then |
# document path {{{ |
| |
if [ -z "$dirname" ]; then |
| echo -en "Enter name of directory for document withouth date string []: " |
echo -en "Enter name of directory for document withouth date string []: " |
| read dirname |
read dirname |
| if [ -z "$dirname" ]; then |
if [ -z "$dirname" ]; then |
| echo "Can't create document with empty name" |
echo "Can't create document with empty name" |
| exit 1; |
exit 1; |
| fi |
fi |
| else |
|
| dirname="$1" |
|
| fi |
fi |
| |
# }}} |
| |
|
| if [ -z "$2" ]; then |
# document filename {{{ |
| |
if [ -z "$filename" ]; then |
| echo -en "Enter name of file withouth date string and extension []: " |
echo -en "Enter name of file withouth date string and extension []: " |
| read filename |
read filename |
| if [ -z "$filename" ]; then |
if [ -z "$filename" ]; then |
| echo "Can't create document with empty name" |
echo "Can't create document with empty name" |
| exit 1; |
exit 1; |
| fi |
fi |
| else |
|
| filename="$2" |
|
| fi |
fi |
| |
filename=${filename%.tex} |
| |
|
| if [ -z "$3" ]; then |
# create available options: |
| DIRNAME=''; |
file=`basename $filename` |
| FILENAME=''; |
f_dir=`dirname $filename` |
| |
|
| while [ -z "$DIRNAME" -o -z "$FILENAME" ]; do |
dirname="$dirname/$f_dir" |
| echo "Available filename models:"; |
dirname=`$TOP_DIR/_scripts/path-cleanup "$dirname" | sed -e 's%^/%%g;'` |
| echo " [P] Prints *.tex files listing."; |
|
| echo " [D] Toggle date format" |
d_dir=`dirname $dirname` |
| echo " [1] $DATE-$dirname/$DATE-$filename.tex" |
l_dir=`basename $dirname` |
| echo " [2] $DATE-$dirname/$filename-$DATE.tex" |
|
| echo " [3] $DATE-$dirname/$filename.tex" |
out="" |
| echo " [4] $dirname/$DATE-$filename.tex" |
out_1="$d_dir/$DATE-$l_dir/$DATE-$file.tex" |
| echo " [5] $dirname/$filename-$DATE.tex" |
out_2="$d_dir/$DATE-$l_dir/$file-$DATE.tex" |
| echo " [6] $dirname/$filename.tex" |
out_3="$d_dir/$DATE-$l_dir/$file.tex" |
| |
out_4="$d_dir/$l_dir/$DATE-$file.tex" |
| echo -en "Please select action or choose filename model:"; |
out_5="$d_dir/$l_dir/$file-$DATE.tex" |
| read model |
out_6="$d_dir/$l_dir/$file.tex" |
| |
# }}} |
| case "$model" in |
|
| P*) |
# which naming sheme? {{{ |
| ls -1 "$dirname/"*.tex; |
model=`echo $model | sed -e 's%^\(.\).*%\1%g;'` |
| ;; |
|
| D*) |
which_out="out_$model" |
| echo -n "Changed date format from '$DATE' to"; |
out="${!which_out}" |
| if [ "$DATE" = "$DATE_LONG" ]; then |
# }}} |
| DATE=$DATE_SHORT; |
|
| else |
# |
| DATE=$DATE_LONG; |
# Choose filename |
| fi |
# {{{ |
| echo " '$DATE'."; |
while [ -z "$out" ]; do |
| ;; |
|
| 1*) |
out="" |
| DIRNAME="$DATE-`basename \"$dirname\"`" |
out_1="$d_dir/$DATE-$l_dir/$DATE-$file.tex" |
| FILENAME="$DATE-`basename \"$dirname\"`" |
out_2="$d_dir/$DATE-$l_dir/$file-$DATE.tex" |
| ;; |
out_3="$d_dir/$DATE-$l_dir/$file.tex" |
| 2*) |
out_4="$d_dir/$l_dir/$DATE-$file.tex" |
| DIRNAME="$DATE-`basename \"$dirname\"`" |
out_5="$d_dir/$l_dir/$file-$DATE.tex" |
| FILENAME="`basename \"$filename\"`-$DATE" |
out_6="$d_dir/$l_dir/$file.tex" |
| ;; |
|
| 3*) |
echo "Available filename models:"; |
| DIRNAME="$DATE-`basename \"$dirname\"`" |
echo " [P] Prints *.tex files listing."; |
| FILENAME="`basename \"$filename\"`" |
echo " [D] Toggle date format" |
| ;; |
for model in 1 2 3 4 5 6; do |
| 4*) |
which_out="out_$model" |
| DIRNAME="`basename \"$dirname\"`" |
echo " [$model] ${!which_out}" |
| FILENAME="$DATE-`basename \"$filename\"`" |
|
| ;; |
|
| 5*) |
|
| DIRNAME="`basename \"$dirname\"`" |
|
| FILENAME="`basename \"$filename\"`-$DATE" |
|
| ;; |
|
| 6*) |
|
| DIRNAME="`basename \"$dirname\"`" |
|
| FILENAME="`basename \"$filename\"`" |
|
| ;; |
|
| *) |
|
| echo "Unsupported model: $model"; |
|
| ;; |
|
| esac |
|
| done |
done |
| |
|
| else |
|
| model="$3" |
|
| fi |
|
| |
|
| if [ -f "$FILENAME.tex" ]; then |
echo -en "Please select action or choose filename model []: "; |
| |
read model |
| |
|
| |
# take first character from user input |
| |
model=`echo $model | sed -e 's%^\(.\).*%\1%g;'` |
| |
|
| |
case "$model" in |
| |
[pP]) |
| |
echo "-----<% Start of listing files %>-----" |
| |
ls -1 $d_dir/$DATE-$l_dir/*.tex $d_dir/$l_dir/*.tex 2> /dev/null ; |
| |
echo "-----<% End of listing files %>-----" |
| |
;; |
| |
[dD]) |
| |
echo -n "Changed date format from '$DATE' to"; |
| |
if [ "$DATE" = "$DATE_LONG" ]; then |
| |
DATE=$DATE_SHORT; |
| |
else |
| |
DATE=$DATE_LONG; |
| |
fi |
| |
echo " '$DATE'."; |
| |
;; |
| |
[1-6]) |
| |
which_out="out_$model" |
| |
out="${!which_out}" |
| |
;; |
| |
*) |
| |
echo "Unsupported model: $model"; |
| |
;; |
| |
esac |
| |
done |
| |
# }}} |
| |
|
| |
dirname=`dirname $out` |
| |
filename=`basename $out` |
| |
|
| |
if [ -f "$out" ]; then |
| echo |
echo |
| echo "Document '$NAME' already exists, please use another name" |
echo "Document '$NAME' already exists, please use another name" |
| exit 1; |
exit 1; |
| fi |
fi |
| |
|
| echo "Creating document '$DIRNAME/$FILENAME'" |
filename=${filename%.tex} |
| mkdir -p "$DIRNAME" |
FILENAME=$filename |
| |
|
| |
if [ -z "$STYLESHEET" ]; then |
| |
echo -en "Please choose stylesheet [platon]: "; |
| |
read STYLESHEET |
| |
STYLESHEET="${STYLESHEET:-platon}" |
| |
fi |
| |
|
| |
if [ -z "$PREFIX" ]; then |
| |
echo -en "Please specify prefix of your documents if you wish to use it: "; |
| |
read PREFIX |
| |
fi |
| |
|
| |
if [ -z "$APPEND_DIRNAME" ]; then |
| |
echo -en "Append directory name to output files? "; |
| |
read APPEND_DIRNAME |
| |
fi |
| |
|
| |
echo "Creating document '$out'" |
| |
$DEBUG mkdir -p "$dirname" |
| |
|
| echo "Creating files" |
# |
| for i in Makefile .cvsignore; do |
# Create recursive Makefiles, SUBDIRS, .cvsignore etc... |
| file="$DIRNAME/$i" |
# {{{ |
| if [ -f "$file" ]; then |
pathdir="" |
| echo "File '$file' already exists!" |
echo " STEP 1: Creating directory structure:"; |
| |
for DIRNAME in `echo "$dirname" | sed 's%^\./%%g; s%/% %g;'`; do |
| |
$NODEBUG cd $DIRNAME |
| |
updir="$pathdir" |
| |
pathdir="$pathdir/$DIRNAME" |
| |
TOP_DIR="$TOP_DIR/.." |
| |
TEMPLATES="$TOP_DIR/_templates" |
| |
STYLESHEET_DIR="$TOP_DIR/_stylesheets/$STYLESHEET" |
| |
|
| |
for file in Makefile .cvsignore; do |
| |
if [ -f "$file" ]; then |
| |
echo " File '.$pathdir/$file' already exists, skipping..." |
| |
else |
| |
echo " Creating file '.$pathdir/$file'" |
| |
$NODEBUG sed -e "`generate_sed_cmd APPEND_DIRNAME PREFIX STYLESHEET DATE YEAR TOP_DIR STYLESHEET_DIR DIRNAME FILENAME PERCENT_SIGN`" \ |
| |
"$TEMPLATES/$file" > "$file" |
| |
fi |
| |
done |
| |
|
| |
# check directory name is not already there |
| |
if [ "` grep -E \"^$DIRNAME\$\" ../SUBDIRS 2>/dev/null `" ]; then |
| |
echo " Checking '$DIRNAME' in .$updir/SUBDIRS file."; |
| else |
else |
| sed -e "s%@DATE@%$DATE%g; s%@YEAR@%$YEAR%g; s%@TOP_DIR@%../$TOP_DIR%g; s%@DIRNAME@%$DIRNAME%g; s%@FILENAME@%$FILENAME%g; " \ |
echo " Adding '$DIRNAME' into .$updir/SUBDIRS file."; |
| "$TEMPLATES/$i" > "$DIRNAME/$i" |
$NODEBUG echo "# Added by $MYSELF, $DATE_LONG" >> ../SUBDIRS; |
| |
$NODEBUG echo "$DIRNAME" >> ../SUBDIRS; |
| fi |
fi |
| |
|
| done |
done |
| |
# }}} |
| |
|
| |
# |
| |
# now we are in directory, where document should by located |
| |
# |
| |
|
| sed -e "s%@DATE@%$DATE%g; s%@YEAR@%$YEAR%g; s%@FILENAME@%$FILENAME%g;" \ |
echo " STEP 2: Creating document .$pathdir/$filename.tex."; |
| "$TEMPLATES/template.tex" > "$DIRNAME/$FILENAME.tex" |
$NODEBUG sed -e "`generate_sed_cmd APPEND_DIRNAME PREFIX STYLESHEET DATE YEAR TOP_DIR STYLESHEET_DIR DIRNAME FILENAME PERCENT_SIGN`" \ |
| |
"$STYLESHEET_DIR/template.tex" > "$filename.tex" |
| |
|
| |
echo " STEP 3: Adding '$filename.pdf' into .$pathdir/pdf_OUTPUT file."; |
| |
$NODEBUG echo "# Added by $MYSELF, $DATE_LONG" >> pdf_OUTPUT; |
| |
$NODEBUG echo "$filename.pdf" >> pdf_OUTPUT; |
| |
|
| |
echo " STEP 4: Adding '$filename.ps' into .$pathdir/ps__OUTPUT file."; |
| |
$NODEBUG echo "# Added by $MYSELF, $DATE_LONG" >> ps__OUTPUT; |
| |
$NODEBUG echo "$filename.ps" >> ps__OUTPUT; |
| |
|
| |
echo " STEP 5: Adding '$filename.html' into .$pathdir/htm_OUTPUT file."; |
| |
$NODEBUG echo "# Added by $MYSELF, $DATE_LONG" >> htm_OUTPUT; |
| |
$NODEBUG echo "$filename.html" >> htm_OUTPUT; |
| |
|
| |
echo " STEP 6: Adding '$filename.rtf' into .$pathdir/rtf_OUTPUT file."; |
| |
$NODEBUG echo "# Added by $MYSELF, $DATE_LONG" >> rtf_OUTPUT; |
| |
$NODEBUG echo "$filename.rtf" >> rtf_OUTPUT; |
| |
|
| echo "Updating building system:"; |
echo "Now you have to add files in directory '.$pathdir' into CVS and commit them." |
| # check directory name is not already there |
|
| if [ "` grep -E \"^$DIRNAME\$\" SUBDIRS `" ]; then |
|
| echo " STEP 1: Checking '$DIRNAME' in SUBDIRS file."; |
|
| else |
|
| echo " STEP 1: Adding '$DIRNAME' into SUBDIRS file."; |
|
| echo "$DIRNAME" >> SUBDIRS; |
|
| fi |
|
| |
|
| echo " STEP 2: Adding '$FILENAME.pdf' into $DIRNAME/pdf_OUTPUT file."; |
|
| echo "# Added by $MYSELF, $DATE_LONG" >> "$DIRNAME/pdf_OUTPUT"; |
|
| echo "$FILENAME.pdf" >> "$DIRNAME/pdf_OUTPUT"; |
|
| |
|
| echo " STEP 3: Adding '$FILENAME.ps' into $DIRNAME/ps__OUTPUT file."; |
|
| echo "# Added by $MYSELF, $DATE_LONG" >> "$DIRNAME/ps__OUTPUT"; |
|
| echo "$FILENAME.ps" >> "$DIRNAME/ps__OUTPUT"; |
|
| |
|
| echo " STEP 4: Adding '$FILENAME.html' into $DIRNAME/htm_OUTPUT file."; |
|
| echo "# Added by $MYSELF, $DATE_LONG" >> "$DIRNAME/htm_OUTPUT"; |
|
| echo "$FILENAME.html" >> "$DIRNAME/htm_OUTPUT"; |
|
| |
|
| echo "Now you have to add files in directory '$DIRNAME' into CVS and commit them." |
|
| echo " STEP 4: Adding '$FILENAME.rtf' into $DIRNAME/rtf_OUTPUT file."; |
|
| echo "# Added by $MYSELF, $DATE_LONG" >> "$DIRNAME/rtf_OUTPUT"; |
|
| echo "$FILENAME.rtf" >> "$DIRNAME/rtf_OUTPUT"; |
|
| |
|
| echo "Now you have to add files in directory '$DIRNAME' into CVS and commit them." |
# required, if script is sourced by current shell |
| |
cd $HERE |
| |
|
| # vim: ft=sh |
# vim: ft=sh |
| |
# vim600: fdm=marker fdc=3 fdl=0 |
| |
|