aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorIgor Pashev <pashev.igor@gmail.com>2012-05-01 00:09:21 +0400
committerIgor Pashev <pashev.igor@gmail.com>2012-05-01 00:09:21 +0400
commit55c95474cceaf5a3f3d799d0a2b4cf8ef9ebad3d (patch)
treee62795714690992f8eb4b8902cb7640d73a39290 /examples
parentf871c18d31e8f2f5c4e1692a27732f9d2d4a6bed (diff)
downloadnode-augeas-55c95474cceaf5a3f3d799d0a2b4cf8ef9ebad3d.tar.gz
Added examples of extending Augeas object
Diffstat (limited to 'examples')
-rw-r--r--examples/extending-augeas/aug-fileErrorMsg-usage.js21
-rw-r--r--examples/extending-augeas/aug-fileErrorMsg.js73
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;
+