Platon Technologies
neprihlásený Prihlásiť Registrácia
SlovakEnglish
open source software development oslavujeme 10 rokov vývoja otvoreného softvéru! Sobota, 7. marec 2026

Súbor: [Platon] / platos / _scripts / create-document (stiahnutie)

Revízia 1.16, Sat Feb 22 03:13:50 2014 UTC (12 years ago) by nepto


Zmeny od 1.15: +2 -2 [lines]

Shell changed to bash, because something was not working properly

#!/bin/bash

#
# create-document - create document using templates in templates/ directory
#
# Developed by Lubomir Host 'rajo' <rajo AT platon.sk>
# Copyright (c) 2003-2005 Platon SDG, http://platon.sk/
# Licensed under terms of GNU General Public License.
# All rights reserved.
#

# $Platon: Platon.SK/office/_scripts/create-document,v 1.15 2005-09-18 00:57:53 rajo Exp $

# Uncomment following 2 lines for debugging
#DEBUG="echo"
#NODEBUG=":"

DATE_SHORT="`date '+%y-%m-%d'`";
DATE_LONG="`date '+%Y-%m-%d'`";
DATE=$DATE_LONG;
YEAR="`date '+%Y'`";

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
    echo '$TOP_DIR is empty, using current directory...'
    TOP_DIR="."
fi

# document path {{{
if [ -z "$dirname" ]; then
    echo -en "Enter name of directory for document withouth date string []: "
    read dirname
    if [ -z "$dirname" ]; then
        echo "Can't create document with empty name"
        exit 1;
    fi
fi
# }}}

# document filename {{{
if [ -z "$filename" ]; then
    echo -en "Enter name of file withouth date string and extension []: "
    read filename
    if [ -z "$filename" ]; then
        echo "Can't create document with empty name"
        exit 1;
    fi
fi
filename=${filename%.tex}

# create available options:
file=`basename $filename`
f_dir=`dirname $filename`

dirname="$dirname/$f_dir"
dirname=`$TOP_DIR/_scripts/path-cleanup "$dirname" | sed -e 's%^/%%g;'`

d_dir=`dirname  $dirname`
l_dir=`basename $dirname`

out=""
out_1="$d_dir/$DATE-$l_dir/$DATE-$file.tex"
out_2="$d_dir/$DATE-$l_dir/$file-$DATE.tex"
out_3="$d_dir/$DATE-$l_dir/$file.tex"
out_4="$d_dir/$l_dir/$DATE-$file.tex"
out_5="$d_dir/$l_dir/$file-$DATE.tex"
out_6="$d_dir/$l_dir/$file.tex"
# }}}

# which naming sheme? {{{
model=`echo $model | sed -e 's%^\(.\).*%\1%g;'`

which_out="out_$model"
out="${!which_out}"
# }}}

#
# Choose filename
# {{{
while [ -z "$out" ]; do

    out=""
    out_1="$d_dir/$DATE-$l_dir/$DATE-$file.tex"
    out_2="$d_dir/$DATE-$l_dir/$file-$DATE.tex"
    out_3="$d_dir/$DATE-$l_dir/$file.tex"
    out_4="$d_dir/$l_dir/$DATE-$file.tex"
    out_5="$d_dir/$l_dir/$file-$DATE.tex"
    out_6="$d_dir/$l_dir/$file.tex"

    echo "Available filename models:";
    echo "    [P] Prints *.tex files listing.";
    echo "    [D] Toggle date format"
    for model in 1 2 3 4 5 6; do
        which_out="out_$model"
        echo "    [$model] ${!which_out}"
    done

    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 "Document '$out' already exists, please use another name"
    exit 1;
fi

filename=${filename%.tex}
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"

#
# Create recursive Makefiles, SUBDIRS, .cvsignore etc...
# {{{
pathdir=""
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" # is not the same STYLESHEET_DIR as in Rules.make

    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
        echo "    Adding '$DIRNAME' into .$updir/SUBDIRS file.";
        $NODEBUG echo "# Added by $MYSELF, $DATE_LONG" >> ../SUBDIRS;
        $NODEBUG echo "$DIRNAME" >> ../SUBDIRS;
    fi

done
# }}}

#
# now we are in directory, where document should by located
#

echo "  STEP 2: Creating document .$pathdir/$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 "Now you have to add files in directory '.$pathdir' into CVS and commit them."

# required, if script is sourced by current shell
cd $HERE

# vim: ft=sh
# vim600: fdm=marker fdc=3 fdl=0


Platon Group <platon@platon.sk> http://platon.sk/
Copyright © 2002-2006 Platon Group
Stránka používa redakčný systém Metafox
Na začiatok