-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathpathfixer.js
More file actions
127 lines (103 loc) · 3.14 KB
/
Copy pathpathfixer.js
File metadata and controls
127 lines (103 loc) · 3.14 KB
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
var fs = require('fs');
var path = require('path');
var _ = require('lodash');
const { readFile, writeFile } = require('fs').promises;
String.prototype.replaceAll = function (search, replace) {
return this.replace(new RegExp(search, 'g'), replace);
};
function loadFiles(next) {
return walk('./src', next);
/////////////////////
function walk(dir, done) {
var results = [];
fs.readdir(dir, function (err, list) {
if (err) return done(err);
var pending = list.length;
if (!pending) return done(null, results);
list.forEach(function (file) {
file = path.resolve(dir, file);
fs.stat(file, function (err, stat) {
if (stat && stat.isDirectory()) {
walk(file, function (err, res) {
results = results.concat(res);
if (!--pending) done(null, results);
});
} else {
results.push(file);
if (!--pending) done(null, results);
}
});
});
});
}
}
///////////////////////////////////////////////////////////////
function repairFile(filepath, filedata) {
return new Promise(function (resolve, reject) {
// var matches = filedata.exec(/);
// var reg = /\'src\/(.*?)\'/g
var reg = /\"src\/(.*?)\"/g;
var result;
var matches = [];
while ((result = reg.exec(filedata)) !== null) {
matches.push(`src/` + result[1]);
}
if (!matches || !matches.length) {
return resolve();
}
var sourcePath = filepath.split('/Users/cadeembery/Code/fluro-vue-ui/').join('');
var sourcePieces = sourcePath.split('/');
// var sourcePath = _.replace(filepath, '/Users/cadeembery/Code/fluro-vue-ui')
var oneless = sourcePieces.slice(0, sourcePieces.length - 1).join('/');
var mapped = matches.map(function (original) {
var relative = path.relative(oneless, original);
if (!relative || !relative.length) {
relative = original;
}
if (relative[0] != '.') {
relative = `./${relative}`;
}
return { original, relative };
});
console.log('***************'); //, matches[1])
console.log('Entry', sourcePath, sourcePieces); //, matches[1])
var cleaned = filedata;
mapped.forEach(function (entry) {
cleaned = cleaned.replaceAll(entry.original, entry.relative);
console.log('CLEANED', entry.original, entry.relative);
});
return fs.writeFile(filepath, cleaned, function (err, result) {
if (err) {
console.log('ERrrror', err);
return reject(err);
}
console.log('Cleaned File', sourcePath);
resolve(result);
});
// console.log(mapped);
// promises.resolve(resolve);
});
}
///////////////////////////////////////////////////////////////
loadFiles(function (err, results) {
var promises = _.filter(results, function (file) {
if (_.endsWith(file, '.vue') || _.endsWith(file, '.js')) {
return new Promise(function (resolve, reject) {
return readFile(file, { encoding: 'utf8' }).then(function (fileData) {
repairFile(file, fileData).then(resolve);
// console.log('FILE DATA', fileData)
// return resolve(fileData)
}, reject);
});
} else {
return Promise.resolve(null);
}
});
Promise.all(promises)
.then(function (files) {
console.log('FILES', files);
})
.catch(function (err) {
console.log(err);
});
});