blob: f74caeab3517c5f793520816514d74d69390aa85 (
plain)
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
|
var libaugeas = require('../../build/Release/libaugeas');
/*
* This module overrides function createAugeas() from libaugeas,
* so that created Augeas object has two additional functions:
* fileErrorMsg(fname) and dumpFileErrors().
*/
// Error message formatter, sample return value:
// "/etc/mke2fs.conf:3:0: Get did not match entire input"
function file_error(fname) {
var aug = this;
var base = "/augeas/files" + fname + "/error";
var msg = aug.get(base + "/message");
var line = aug.get(base + "/line");
var col = aug.get(base + "/char");
var ret = undefined;
if (aug.nmatch(base)) {
ret = fname;
if (line)
ret += ":" + line;
if (col)
ret += ":" + col;
if (msg)
ret += ": " + msg;
else
ret += ": unknown error";
}
return ret;
}
// Returns an array of error messages for every file with error:
function dump_file_error() {
var aug = this;
var files_with_errors =
aug.match(
'/augeas/files/*/*[error]'
).map(function(s){
return s.substr(13); // cutoff /augeas/files: 13 = strlen(/augeas/files)
});
var res =
files_with_errors.map(function(fname){
return aug.fileErrorMsg(fname);
});
return res;
}
function createAugeas(cb) {
if (undefined == cb) {
var aug = libaugeas.createAugeas();
aug.fileErrorMsg = file_error;
aug.dumpFileErrors = dump_file_error;
return aug;
} else {
libaugeas.createAugeas(function(aug) {
aug.fileErrorMsg = file_error;
aug.dumpFileErrors = dump_file_error;
cb(aug);
})
}
}
exports.createAugeas = createAugeas;
|