ENH: add '-s|-t' options for foamNew, cat to stdout on '-' prefixed class name

- eg, "foamNewSource IO -", "foamNew -s IO -"  displays on stdout
  convenient for grabbing boilerplate directly
This commit is contained in:
Mark Olesen
2010-12-13 11:48:21 +01:00
parent 54a375ccb8
commit 75e632115c
3 changed files with 111 additions and 73 deletions

View File

@ -36,7 +36,9 @@ Usage: ${0##*/} <type> {args}
* create a new standard OpenFOAM source or template file * create a new standard OpenFOAM source or template file
type: (source|template) type:
-s | -source | source
-t | -template | template
USAGE USAGE
exit 1 exit 1
@ -47,16 +49,16 @@ USAGE
[ "$#" -gt 1 ] || usage [ "$#" -gt 1 ] || usage
case "$1" in case "$1" in
source) (-s | -source | source)
shift shift
$WM_PROJECT_DIR/etc/codeTemplates/source/foamNewSource $* $WM_PROJECT_DIR/etc/codeTemplates/source/foamNewSource $*
;; ;;
template) (-t | -template | template)
shift shift
$WM_PROJECT_DIR/etc/codeTemplates/template/foamNewTemplate $* $WM_PROJECT_DIR/etc/codeTemplates/template/foamNewTemplate $*
;; ;;
*) (*)
usage "unknown type" usage "unknown type '$1'"
;; ;;
esac esac

View File

@ -35,50 +35,66 @@ Template="$WM_PROJECT_DIR/etc/codeTemplates/source/_Template"
usage() { usage() {
while [ "$#" -ge 1 ]; do echo "$1"; shift; done while [ "$#" -ge 1 ]; do echo "$1"; shift; done
cat<<USAGE cat<<USAGE
Usage: $Script <type> <ClassName> Usage: $Script [OPTION] <type> <ClassName>
options:
-help print the usage
* create a new standard OpenFOAM source file * create a new standard OpenFOAM source file
type: (C|H|I|IO|App) type: (C|H|I|IO|App)
A ClassName starting with '-' will simply display the template
USAGE USAGE
exit 1 exit 1
} }
className="$2"
unset subType Type printOpt
# for a className starting with '-' simply display the code
if [ "${2#-}" != "${2}" ]
then
printOpt=true
fi
# this implicitly covers a lone -help # this implicitly covers a lone -help
[ "$#" -gt 1 ] || usage [ "$#" -gt 1 ] || usage
className="$2"
unset subType Type
case "$1" in case "$1" in
-h | -help) (-h | -help)
usage usage
;; ;;
C|H) (C|H)
Type=".$1" Type=".$1"
;; ;;
I) (I)
Type="$1.H" Type="$1.H"
;; ;;
IO) (IO)
Type="$1.C" Type="$1.C"
;; ;;
app|App) (app|App)
subType=App subType=App
Type=".C" Type=".C"
;; ;;
*) (*)
usage "unknown type" usage "unknown type '$1'"
;; ;;
esac esac
[ "$#" -eq 2 ] || usage "wrong number of arguments" [ "$#" -eq 2 ] || usage "wrong number of arguments"
shift 2 shift 2
fileName="$className$Type" if [ "${printOpt:-false}" = true ]
then
cat $Template$subType$Type
else
fileName="$className$Type"
echo "$Script: Creating new interface file $fileName" echo "$Script: Creating new interface file $fileName"
if [ -e "$fileName" ] if [ -e "$fileName" ]
@ -87,14 +103,13 @@ then
exit 1 exit 1
fi fi
# process class name # process class name
sed "s/CLASSNAME/$className/g" $Template$subType$Type > $fileName sed "s/CLASSNAME/$className/g" $Template$subType$Type > $fileName
if [ "$subType" = App -a ! -d Make ] if [ "$subType" = App -a ! -d Make ]
then then
wmakeFilesAndOptions wmakeFilesAndOptions
fi fi
fi
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------

View File

@ -36,12 +36,16 @@ usage() {
while [ "$#" -ge 1 ]; do echo "$1"; shift; done while [ "$#" -ge 1 ]; do echo "$1"; shift; done
cat<<USAGE cat<<USAGE
Usage: $Script <type> <ClassName> <Template arguments...> Usage: $Script [OPTION] <type> <ClassName> <Template arguments...>
options:
-help print the usage
* create a new standard OpenFOAM source file for templated classes * create a new standard OpenFOAM source file for templated classes
type: (C|H|I|IO) type: (C|H|I|IO)
A ClassName starting with '-' will simply display the template
USAGE USAGE
exit 1 exit 1
} }
@ -51,31 +55,48 @@ USAGE
className="$2" className="$2"
unset Type unset Type printOpt
# for a className starting with '-' simply display the code
if [ "${2#-}" != "${2}" ]
then
printOpt=true
fi
case "$1" in case "$1" in
-h | -help) (-h | -help)
usage usage
;; ;;
C|H) (C|H)
Type=".$1" Type=".$1"
;; ;;
I) (I)
Type="$1.H" Type="$1.H"
;; ;;
IO) (IO)
Type="$1.C" Type="$1.C"
;; ;;
*) *)
usage "unknown type" usage "unknown type '$1'"
;; ;;
esac esac
if [ "${printOpt:-false}" = true ]
then
[ "$#" -eq 2 ] || usage "wrong number of arguments"
shift 2
cat $Template$Type
else
[ "$#" -ge 3 ] || usage "wrong number of arguments" [ "$#" -ge 3 ] || usage "wrong number of arguments"
shift 2 shift 2
fileName="$className$Type" fileName="$className$Type"
echo "$Script: Creating new template interface file $fileName" echo "$Script: Creating new template interface file $fileName"
if [ -e "$fileName" ] if [ -e "$fileName" ]
then then
@ -88,7 +109,7 @@ fi
sed -e "s/CLASSNAME/$className/g" $Template$Type > $fileName.1 sed -e "s/CLASSNAME/$className/g" $Template$Type > $fileName.1
# process template arguments # process remaining (template) arguments
for tArg for tArg
do do
sed -e "s/TemplateClassArgument/class $tArg, TemplateClassArgument/g" \ sed -e "s/TemplateClassArgument/class $tArg, TemplateClassArgument/g" \
@ -105,5 +126,5 @@ sed -e "s/, TemplateClassArgument//g" \
$fileName.1 > $fileName $fileName.1 > $fileName
rm $fileName.1 rm $fileName.1
fi
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------