"use custom"

var execSync = require('child_process').execSync;
let reg = /\${\S*\}/;

module.exports={
/**
 * lib = {
 * key : "runItem",
 * name: "小盈理财"
 * command: "java -jar"
 * path:"../item.jar"
 * params:[
 *    {
 *  key: "p1"
 *  name: "这个控件的名称"
 * type: "String",强转首字母大写
 * },{
 * key :"P2"
 * name:"需要转化的参数，必须是字符串类型"
 * type:"String"，强转首字母大写
 * }
 * ]
 * }
 */
    setLib:function(item){
        this.libs[item.key] = item
        // arguments[1]
    },
    init: function(items){
        this.libs = {};
        items.forEach(function(element) {
            this.setLib(element);
        }, this);
    },
    getCommand: function(key,params){
        let lib = this.libs[key];
        let temp = ""
        temp = lib.command.replace(reg,`./uploads/${lib.file_name}`);
        params.forEach(function(param){
            temp = temp.replace(reg,param)
        },this);
        return temp
    },
    exec: function(key,params){
        let command = this.getCommand(key,params);
        if(reg.test(command)){
            return lib.desc
        }
        var re_str = execSync(command);  
        return re_str.toString('utf8').replace(/[\r\n]/g, '');
    }
//     getLib: function(){
//         return this.libs[arguments[0]]
//     },
//     setLibMap: function(lib){
//         this.lib.key = lib
//     },
//     setLibMaps:function(libs){
//         this.libs = {};
//         libs.forEach(function(item) {
//             this.setLibMap(item);
//         }, this);
//     },
//     checkArgunamesType:function(){
//         if( typeof arguments[0] != "String"){
//             return false
//         }
//         if(this.libs[arguments[0]] == undefined){
//             return false
//         }
//         let flg = true;
//         this.libs[arguments[0]].params.forEach(function(item,index){
//             if(typeof arguments[index] != typeof item){
//                 flg = false;
//             }
//         },this);
//         return flg
//     },
//     executeLib:function(){
// // 参数类型检查
//         if(this.checkArgunamesType(arguments)){
//             return "参数类型错误,或不存在"
//         }
//         //返回执行结果
//         return execSync(this.getExecuteCommansString(arguments));
//     },
//     getExecuteCommansString:function(){
//         //获取lib,拿到path
//         let lib = this.getLib(arguments[0])
//         let args = [lib.command,lib.path]
//         for(var i = 1; i < arguments.length; i++ ){
//             args.push(arguments[i])
//         }
//         return args.join(" ")
//     }
}
