var cproc = require('child_process');
var execSync = cproc.execSync;
var project_name, project_attr, projects = {},
	java_projects = [],
	node_projects = [],
	python_projects = [],
	ui_projects = [];
var param = {
	type: "",
	name: "",
	attr: ""
}
projects = {}
_projects = String(execSync(`curl -s http://192.168.4.3:10088/config_server/get_project_config_from_db`))
_projects = JSON.parse(_projects)
// console.log(typeof(projects))

for (let pro of _projects) {
		projects[pro.name] = pro;
    switch (pro['type']) {
        case "java":
            java_projects.push(pro);
            break;
        case "node":
            node_projects.push(pro);
            break;
        case "ui":
            ui_projects.push(pro);
            break;
        case "python":
            python_projects.push(pro);
            break;
    }
}

var temp = "";

process.argv.forEach(function(val, index, array) {
	if (index >= 2) {
		if (index % 2 == 0) {
			temp = val.replace(/\-/, "");
			param[temp] = "";
		} else {
			param[temp] = val;
		}
	}
});

function getListAttr(projects, attr) {
	var list = [];
	for (var i = 0; i < projects.length; i++) {
		// if (projects[i].is_active) {
			list.push(projects[i][attr])
		// }
	}
	return list.join(" ");
}
var configFunction = function() {};
configFunction.prototype = {
	getProjectAttr: function(pName, pAttr) {
		if (typeof projects[pName] == "undefined") {
			console.log("")
		} else {
				var attrs = pAttr.split("/");
				if (attrs.length == 0) {
					console.log("")
					return
				}
				var list = [];
				for (var j = 0; j < attrs.length; j++) {
					if(projects[pName][attrs[j]]){
						
						list.push(projects[pName][attrs[j]].split(" ").join("^"));
					}else{
						list.push(" ");
					}
				}
				console.log(list.join("|"))
		}
	},
	getProjectsAttrs: function(projects, attr, attr2) {
		var attrs = attr.split("/");
		if (attrs.length == 0) {
			return
		}
		var list = [];
		//attr2 专有参数，用来表示是否要取带有对外域名的服务
		if(attr2 == "true"){
			for (var i = 0; i < projects.length; i++) {
				if(projects[i].url != ""){
					var li = [projects[i]["name"]];
					for (var j = 0; j < attrs.length; j++) {
						li.push(projects[i][attrs[j]]);
					}
					// li.push(projects[i].url);
					list.push(li.join("|"));
				}
			}
		}else{
			for (var i = 0; i < projects.length; i++) {
				// if (projects[i].is_active){
					var li = [projects[i]["name"]];
					for (var j = 0; j < attrs.length; j++) {
						li.push(projects[i][attrs[j]]);
					}
					list.push(li.join("|"));
				// }
			}
		}
		return list.join(" ");
	},
	getProjectsAttr: function(type, attr) {
		switch (type) {
			case "java":
				console.log(getListAttr(java_projects, attr));
				break;
			case "ui":
				console.log(getListAttr(ui_projects, attr));
				break;
			case "python":
				console.log(getListAttr(python_projects, attr));
				break;
			case "node":
				console.log(getListAttr(node_projects, attr));
				break;
		}
	}
}

//tower add
module.exports={
	java : java_projects,
	node : node_projects,
	python : python_projects,
	ui : ui_projects
}

var F = new configFunction();


try {
	if (param["type"] == "") {
		F.getProjectAttr(param["name"], param["attr"]);
	} else if (param["type"] == "multi") {
		var str = "";
		str += F.getProjectsAttrs(java_projects, param["attr"], param["attr2"]);
		str += " " + F.getProjectsAttrs(ui_projects, param["attr"], param["attr2"]);
		str += " " + F.getProjectsAttrs(python_projects, param["attr"], param["attr2"]);
		str += " " + F.getProjectsAttrs(node_projects, param["attr"], param["attr2"]);
		console.log(str)
	} else if (param["type"] == "hosts") {
		console.log(JSON.stringify(hosts));
	} else {
		F.getProjectsAttr(param["type"], param["attr"]);
	}
} catch (e) {
		console.log("")
}