appcanmas
Version:
95 lines (89 loc) • 4.11 kB
JavaScript
// 创建接口
var textfile = require('textfile')
var path = require('path')
var fs = require('fs')
var ejs = require('ejs');
var DOMParser = require('xmldom').DOMParser;
var interfaceName = ''
function createInterface(workspace, data, callback){
let self = this
data.interfaceSet.c = 'false'
data.interfaceIn.c = 'false'
interfaceName = path.join(data.filePath, 'if_' + data.interfaceIn.name)
ejs.renderFile(path.join(__dirname, 'interfaces', data.type, 'root', 'if.js.ejs'), data.interfaceSet, function (err, html) {
if (!err) {
fs.exists(interfaceName, function (exists) {
if (!exists) {
fs.mkdir(interfaceName, function (err) {
if (!err) {
fs.writeFile(path.join(interfaceName, 'if.js'), html, err => {
if (!err) {
interfacexml(data, callback)
} else {
cbFun(callback, data.interfaceIn.name + '接口创建失败')
}
});
} else {
cbFun(callback, data.interfaceIn.name + '接口创建失败')
}
})
} else {
cbFun(callback, data.interfaceIn.name + '接口已经存在')
}
});
} else {
cbFun(callback, data.interfaceIn.name + '接口创建失败')
}
})
}
function cbFun(cb, err){
if (typeof cb === 'function') {
if (err && err.indexOf('接口创建失败')>0) {
fs.exists(path.join(interfaceName,'if.js'), function (exists) {
if (exists) {
fs.unlink(path.join(interfaceName,'if.js'), function (errr) {
fs.rmdir(interfaceName, function (errr) {
cb(err)
})
})
} else {
fs.exists(interfaceName, function (exists) {
if (exists) {
fs.rmdir(interfaceName, function (errr) {
cb(err)
})
} else {
cb(err)
}
});
}
});
}else
cb(err)
}
}
function interfacexml(data, callback){
ejs.renderFile(path.join(__dirname, 'interfaces', data.type, 'root', 'interface.xml.ejs'), data.interfaceIn, function (err, html) {
if (!err) {
textfile.read(path.join(data.filePath, 'interface.xml'), 'XML', xml => {
if (typeof xml === 'object') {
let interface = xml.getElementsByTagName("interface").toString()
var doc = new DOMParser().parseFromString(
'<?xml version="1.0" encoding="UTF-16"?>\n<meap>\n <interfaces>\n ' +interface+ html + '\n </interfaces>\n</meap>\n</xml>', 'text/xml');
textfile.write(path.join(interfaceName, '../interface.xml'), doc, 'XML', (err) => {
if (!err) {
cbFun(callback, err)
} else {
cbFun(callback, data.interfaceIn.name + '接口创建失败')
}
})
} else {
cbFun(callback, data.interfaceIn.name + '接口创建失败')
}
})
} else {
cbFun(callback, data.interfaceIn.name + '接口创建失败')
}
})
}
module.exports = createInterface