Jambi 相关shell脚本:扫描目录调用juic生成java

一.功能

本脚本主要配合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

你可能感兴趣的:(Jambi 相关shell脚本:扫描目录调用juic生成java)