diff options
| author | Igor Pashev <pashev.igor@gmail.com> | 2012-05-01 00:09:21 +0400 |
|---|---|---|
| committer | Igor Pashev <pashev.igor@gmail.com> | 2012-05-01 00:09:21 +0400 |
| commit | 55c95474cceaf5a3f3d799d0a2b4cf8ef9ebad3d (patch) | |
| tree | e62795714690992f8eb4b8902cb7640d73a39290 /examples | |
| parent | f871c18d31e8f2f5c4e1692a27732f9d2d4a6bed (diff) | |
| download | node-augeas-55c95474cceaf5a3f3d799d0a2b4cf8ef9ebad3d.tar.gz | |
Added examples of extending Augeas object
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/extending-augeas/aug-fileErrorMsg-usage.js | 21 | ||||
| -rw-r--r-- | examples/extending-augeas/aug-fileErrorMsg.js | 73 |
2 files changed, 94 insertions, 0 deletions
diff --git a/examples/extending-augeas/aug-fileErrorMsg-usage.js b/examples/extending-augeas/aug-fileErrorMsg-usage.js new file mode 100644 index 0000000..9e5b800 --- /dev/null +++ b/examples/extending-augeas/aug-fileErrorMsg-usage.js @@ -0,0 +1,21 @@ +var libaugeas = require('./aug-fileErrorMsg.js'); + + +// should give an error if running unprivileged: +var testfile = '/etc/sudoers'; + + +// Creating Augeas asynchronously: +libaugeas.createAugeas(function(aug) { + console.log(aug.fileErrorMsg(testfile)); + console.log(aug.dumpFileErrors()); +}); + +/* Example output: +/etc/sudoers: Permission denied +[ '/etc/mke2fs.conf:3:0: Get did not match entire input', + '/etc/host.conf:15:0: Iterated lens matched less than it should', + '/etc/securetty: Permission denied', + '/etc/sysctl.conf: Permission denied', + '/etc/sudoers: Permission denied' ] +*/ diff --git a/examples/extending-augeas/aug-fileErrorMsg.js b/examples/extending-augeas/aug-fileErrorMsg.js new file mode 100644 index 0000000..a11b369 --- /dev/null +++ b/examples/extending-augeas/aug-fileErrorMsg.js @@ -0,0 +1,73 @@ +var libaugeas = require('../../build/Release/libaugeas'); + +/* + * This modules 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; + |
