create XXX.py时用template.py创建初始的python脚本
同样可以创建java、scala、shell程序文件
#!/bin/bash
set -o nounset
set -o errexit
if [[ $# -ne 1 ]]; then
echo need 1 parameter for filename to create
echo filename should be XXX.scala XXX.py or XXX.sh
exit 1
fi
bindir=`dirname $0`
file="$1"
ext=${file##*.}
classfullpath=${file%.*}
classname=${classfullpath##*.}
packagename=${classfullpath%.*}
if [[ -f "${classname}.${ext}" ]]; then
echo file "${classname}.${ext}" is already exists
exit 1
fi
case ${ext} in
scala)
templatefile=${bindir}/templates/template.scala
;;
java)
templatefile=${bindir}/templates/template.java
;;
py)
templatefile=${bindir}/templates/template.py
;;
sh)
templatefile=${bindir}/templates/template.sh
;;
*)
echo 'invalid filename'
exit 1
esac
sed "s/\${CLASSNAME}/${classname}/g" ${templatefile} | sed "s/\${PACKAGENAME}/${packagename}/g" > "${classname}.${ext}"
scala模板例
object ${CLASSNAME} {
def main(args : Array[String]) = {
val config = getProperties("../conf/${CLASSNAME}.conf")
// get config example : val value = config.get("output")
// add code here
println("Hello world!");
}
def getProperties(conffile:String) : Map[String,Any] = {
var config = new java.util.Properties();
try {
config.load(new java.io.FileInputStream(conffile));
} catch {
case _: Exception => ;
}
val map = scala.collection.JavaConversions.mapAsScalaMap(config).map(t=>(t._1.toString()->t._2))
return map.toMap
}
def runOther(scriptfile:String, args:Array[String]=Array[String]()) = {
scala.tools.nsc.MainGenericRunner.main(scriptfile +: args)
}
}
java模板例
class ${CLASSNAME} {
public static void main(String[] args) {
java.util.Properties config = getProperties("../conf/${CLASSNAME}.conf");
// get config example : String value = (String) config.get("output")
// add code here
System.out.println("Hello world!");
}
public static java.util.Properties getProperties(String conffile) {
java.util.Properties config = new java.util.Properties();
try {
config.load(new java.io.FileInputStream(conffile));
} catch(Exception e) {
}
return config;
}
public static void runOther(String classname, String[] args) throws Exception {
Class clazz = Class.forName(classname);
clazz.getMethod("main",args.getClass()).invoke(clazz.newInstance(), args);
}
}
python模板例
#!/usr/bin/python
#coding=utf-8
import sys
def main(argv):
config = getProperties("../conf/${CLASSNAME}.conf")
#get config example : value = config.get('setting', 'output')
# add code here
print("hello world!")
def getProperties(filename):
import ConfigParser
config = ConfigParser.ConfigParser()
try:
config.readfp(open(filename,"rb"))
except Exception:
pass
return config
def runOther(filename, argv):
import subprocess
subprocess.call(["python",filename] + argv)
if( __name__ == "__main__" ):
main(sys.argv)
shell模板例
#!/bin/bash
set -o nounset
set -o errexit
workdir=$(dirname $0)
cd ${workdir}
declare -a args
for((i=0;i<=$#;i++))
do
eval args[${i}]=\"\${${i}}\"
done
function main()
{
getProperties "../conf/${CLASSNAME}.conf" keys values
#get config example : value=$(findValue key keys values)
# add code here
echo "Hello world!"
}
function getProperties()
{
localfilename="$1"
localkeys="$2"
localvalues="$3"
unset ${localkeys}
unset ${localvalues}
locali=0
if [[ -f "${localfilename}" ]]; then
while read line
do
if [[ "${line:0:1}" != "[" ]]; then
localkey=${line%%=*}
if [[ "${localkey}" != "" ]]; then
eval ${localkeys}[${locali}]=\"${localkey}\"
eval ${localvalues}[${locali}]=\"${localvalue}\"
let locali=${locali}+1
fi
fi
done < "${localfilename}"
fi
}
function findValue()
{
localkey="$1"
eval localkeys=(\"\${$2[@]}\")
eval localvalues=(\"\${$3[@]}\")
for((locali=0; locali<${#localkeys[@]}; locali++))
do
if [[ "${localkey}" == "${localkeys[${locali}]}" ]]; then
localvalue="${localvalues[${locali}]}"
break
fi
done
echo ${localvalue}
}
function runOther()
{
filename="$1"
args="$2"
bash ${filename} "${args[@]}"
}
main "${args[@]}"