-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.js
67 lines (52 loc) · 2.36 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
var fs = require('fs');
var path = require('path');
var etree = require("elementtree");
exports.execute = function(relativeContentFilename) {
var content = '';
// Setup relativeContentFilename
relativeContentFilename = relativeContentFilename.replace(/\//g, '\\');
if (relativeContentFilename.charAt(0) === '\\')
{
relativeContentFilename = relativeContentFilename.substr(1);
}
addToProjectFile(relativeContentFilename);
function addToProjectFile(relativeContentFilename) {
var relativeRootFolder = path.resolve(__dirname).split('\\node_modules')[0];
fs.readdir(relativeRootFolder, function (err, files) {
if (err) {
throw err;
}
var projectFile = '';
files.map(function (file) {
return path.join(relativeRootFolder, file);
}).filter(function (file) {
return fs.statSync(file).isFile();
}).forEach(function (file) {
var fileExtension = path.extname(file);
if (projectFile === '' && (fileExtension === '.csproj' || fileExtension === '.vbproj'))
{
projectFile = file;
}
});
if (projectFile !== '') {
addToProjectFileUpsertTypeScriptFile(projectFile, relativeContentFilename)
}
});
}
function addToProjectFileUpsertTypeScriptFile(projectFile, relativeContentFilename)
{
var data = fs.readFileSync(projectFile).toString();
var xml = etree.parse(data.toString().replace(/\ufeff/g, ""));
var projectElement = xml.findall('./Project')[0];
var typeScriptFileExists = xml.findall('./ItemGroup/Content[@Include=\'' + relativeContentFilename + '\']').length === 1;
var subElement = etree.SubElement;
var newItemGroup = subElement(xml.getroot(), 'ItemGroup');
var itemContent = subElement(newItemGroup, 'Content');
itemContent.set('Include', relativeContentFilename);
var formattor = require("formattor");
var formattedXml = formattor(xml.write(), {method: 'xml'});
if (!typeScriptFileExists) {
fs.writeFileSync(projectFile, formattedXml, null);
}
}
}