-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathreplace.js
More file actions
106 lines (76 loc) · 2.39 KB
/
replace.js
File metadata and controls
106 lines (76 loc) · 2.39 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
var utils = require('../utils'),
file = require('../utils/file'),
fs = require('fs'),
path = require('path'),
_ = require('underscore');
exports.summary = 'Replace the contents of files';
exports.usage = '<source> [options]';
exports.options = {
"d" : {
alias : 'dest'
,default : '<source>'
,describe : 'destination directory or file'
},
"s" : {
alias : 'search'
,describe : 'search string'
},
"r" : {
alias : 'replace'
,describe : 'replace string'
},
"f" : {
alias : 'flags'
,default : 'gm'
,describe : 'flags'
},
"c" : {
alias : 'charset'
,default : 'utf-8'
,describe : 'file encoding type'
}
};
exports.run = function (options, callback) {
//console.log(args.argv);
var source = options.source,
dest = options.dest,
replace = options.replace,
search = options.search,
charset = options.charset,
flags = options.flags;
try {
file.globSync(source).forEach(function(inputFile){
var outputFile = inputFile;
// console.log(dest, file.isDirFormat(dest));
if(file.isDirFormat(dest)){
outputFile = path.join(dest , path.basename(outputFile) );
}else{
outputFile = dest;
}
task(inputFile, outputFile, search, replace, charset, flags);
});
callback()
}catch (err){
return callback(err);
}
};
var task = exports.task = function(inputFile, outputFile, search, replace, charset, flags){
charset = charset || "utf-8";
flags = flags || "gm"; //global multiline ignoreCase
outputFile = outputFile || inputFile;
if(_.isString(search)){
search = new RegExp(search,flags);
}
var input = fs.readFileSync(inputFile, charset);
//var input = fs.readFileSync(inputFile).toString();
var output = input.replace(search, replace);
// have replaced
if(input != output){
exports.log(inputFile, ">", outputFile, "replaced");
}else{
// no replaced
exports.log(inputFile, ">", outputFile, "no replaced");
}
fs.writeFileSync(outputFile, output, charset);
//fs.writeFileSync(outputFile, output);
};