/
index.js
63 lines (59 loc) · 1.76 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
var fs = require("fs");
var colors = require("colors");
var thePath = function() {
return publicApi.project ? publicApi.cwd + "/hooks.json" : publicApi.cwd + "/.git/hooks.json";
}
var saveJson = function(json, callback) {
var hooksJsonPath = thePath();
var content = JSON.stringify(json, null, 2) + '\n';
fs.writeFile(hooksJsonPath, content, callback);
}
var publicApi = {
hookModule: process.env.npm_package_name,
cwd: process.cwd(),
project: true,
view: function(callback) {
publicApi.readFile(function(err, json) {
if (err) {
callback(err);
} else {
json.config = json.config || {};
callback(null, json.config[publicApi.hookModule] || {});
}
});
},
save: function(json, callback) {
module.exports.readFile(function(err, data) {
if (err) {
callback(err);
} else {
data.config = data.config || {};
data.config[publicApi.hookModule] = json;
saveJson(data, callback);
}
});
},
readFile: function(callback) {
var hooksJsonPath = thePath();
fs.readFile(hooksJsonPath, {
encoding: "utf8"
}, function(err, data) {
if (err) {
if (err.errno == 34) {
callback(null, {});
} else {
callback(err);
}
} else {
var error = err;
try {
var file = JSON.parse(data);
} catch (err) {
error = err;
}
callback(error, file);
}
});
}
}
module.exports = publicApi;