Jambi 相关shell脚本:扫描目录调用juic生成java
2017-02-08 本文已影响14人
蓝点工坊
一.功能
本脚本主要配合ant ,在编译前扫描res/jui目录,把所有.jui文件生成java文件,并输出到 src目录当中.
#!/bin/sh
# $1 --> src directory
# $2 --> dst directory
# $3 --> package name (option)
# 因为juic 生成是按对前缀+对象名的格式生成,因此这里对juic文件名有要求就是顶层对象名本身
SRC_DIR=$1
DST_DIR=$2
PACKAGE_NAME=$3
juic_make(){
echo arg $1
juicFile=$1
#baseName=${juicFile%%.*} #不带后缀的名字
#baseName=${juicFile##*/}
#baseName=$(basename $juicFile)
tmp=${juicFile##*/}
baseName=${tmp%%.*}
javaFile="$DST_DIR/Ui_${baseName}.java"
#${juicFile%/*} 取目录名
JUIC_ARGS=$juicFile
# echo "all-filename: ${juicFile%.*}"
#echo "extension: ${juicFile##*.}"
#echo "basename: ${juicFile##*/}"
#tmp=${juicFile##*/}
#echo "base2 ${tmp%%.*}"
if [ -n "$DST_DIR" ] ;then
JUIC_ARGS+=" -d $DST_DIR "
fi
if [ -n "$PACKAGE_NAME" ] ;then
JUIC_ARGS+=" -p $PACKAGE_NAME "
fi
#echo "juic cmd $JUIC_ARGS $javaFile"
echo $javaFile $juicFile
if [ "$javaFile" -ot "$juicFile" ]
then
/usr/local/bin/juic $JUIC_ARGS
else
echo cancel $juicFile
fi
}
echo $SRC_DIR
for file in $SRC_DIR/*.jui
do
echo "find $file"
if test -f $file
then
echo $file 是文件
juic_make $file
fi
done
二. 代码说明
主程序用 for file in $SRC_DIR/*.jui 进行文件扫描,得到$file是一个全路径的文件名.
如果是一个普通文件,则调用juic_make()函数进行生成工作
这里juicFile是输入的jui文件
而javaFile="$DST_DIR/Ui_${baseName}.java"是输出后名字.
这里有一个隐含规则, 因为juic 生成是按对前缀+对象名的格式生成,因此这里对juic文件名有要求就是顶层对象名本身.
if [ "$javaFile" -ot "$juicFile" ] 是判断两个文件创建日期,如果javaFile的日期比juicFile日期旧才会转换. 这里[ -ot ]有一个规则,$javaFile 是空或者不存在的文件,它总会返回true.因此文件名不符合命名规则也会生成java文件
主要转换语句是
/usr/local/bin/juic $JUIC_ARGS