[augeas-devel] augeas: master - Cgrules: new lens and test
David Lutterkort
lutter at fedoraproject.org
Sat Feb 13 01:50:31 UTC 2010
Gitweb: http://git.fedorahosted.org/git/augeas.git?p=augeas.git;a=commitdiff;h=542f16d63466d8ba52e84db25220aa84d42c5df0
Commit: 542f16d63466d8ba52e84db25220aa84d42c5df0
Parent: d075fc3c19f8eacbafc0af3bef5c3e2b3f8e46d3
Author: Ivana Hutarova Varekova <varekova at redhat.com>
AuthorDate: Fri Feb 12 17:49:36 2010 -0800
Committer: David Lutterkort <lutter at redhat.com>
CommitterDate: Fri Feb 12 17:49:36 2010 -0800
Cgrules: new lens and test
See cgrules.conf for http://libcg.sourceforge.net/
---
doc/naturaldocs/conf/lenses/Menu.txt | 1 +
lenses/cgrules.aug | 85 ++++++++++++++++++++++++++++++++++
lenses/tests/test_cgrules.aug | 32 +++++++++++++
tests/Makefile.am | 3 +-
4 files changed, 120 insertions(+), 1 deletions(-)
diff --git a/doc/naturaldocs/conf/lenses/Menu.txt b/doc/naturaldocs/conf/lenses/Menu.txt
index ea2d7b7..f8a5fbf 100644
--- a/doc/naturaldocs/conf/lenses/Menu.txt
+++ b/doc/naturaldocs/conf/lenses/Menu.txt
@@ -55,6 +55,7 @@ Group: Specific Modules {
File: Build (build.aug)
File: cgconfig (cgconfig.aug)
+ File: cgrules (cgrules.aug)
File: Cron (cron.aug)
File: Dpkg (dpkg.aug)
File: Exports (exports.aug)
diff --git a/lenses/cgrules.aug b/lenses/cgrules.aug
new file mode 100644
index 0000000..e763bed
--- /dev/null
+++ b/lenses/cgrules.aug
@@ -0,0 +1,85 @@
+(*
+Module: cgrules
+ Parses /etc/cgrules.conf
+
+Author:
+ Raphael Pinson <raphink at gmail.com>
+ Ivana Hutarova Varekova <varekova at redhat.com>
+
+About: Licence
+ This file is licensed under the LGPLv2+, like the rest of Augeas.
+
+About: Lens Usage
+ Sample usage of this lens in augtool:
+
+About: Configuration files
+ This lens applies to /etc/cgconfig.conf. See <filter>.
+ *)
+
+module Cgrules =
+ autoload xfm
+
+(************************************************************************
+ * Group: USEFUL PRIMITIVES
+ *************************************************************************)
+
+(* Group: Separators *)
+(* Variable: ws *)
+ let ws = del /[ \t]+/ " "
+
+(* Group: Comments and empty lines *)
+(* Variable: eol *)
+ let eol = Util.eol
+
+(* Variable: comment *)
+ let comment = Util.comment
+
+(* Variable: empty *)
+ let empty = Util.empty
+
+(* Group: Generic primitive definitions *)
+(* Variable: name *)
+ let name = /[^@%\# \t\n][^ \t\n]*/
+(* Variable: ctrl_key *)
+ let ctrl_key = /[^ \t\n\/]+/
+(* Variable: ctrl_value *)
+ let ctrl_value = /[^ \t\n]+/
+
+(************************************************************************
+ * Group: CONTROLLER
+ *************************************************************************)
+
+(* Variable: controller *)
+let controller = ws . [ key ctrl_key . ws . store ctrl_value ]
+
+let more_controller = Util.del_str "%" . controller . eol
+
+(************************************************************************
+ * Group: RECORDS
+ *************************************************************************)
+
+let generic_record (lbl:string) (lns:lens) =
+ [ label lbl . lns
+ . controller . eol
+ . more_controller* ]
+
+(* Variable: user_record *)
+let user_record = generic_record "user" (store name)
+
+(* Variable: group_record *)
+let group_record = generic_record "group" (Util.del_str "@" . store name)
+
+(************************************************************************
+ * Group: LENS & FILTER
+ *************************************************************************)
+
+(* View: lns
+ The main lens, any amount of
+ * <empty> lines
+ * <comment>
+ * <user_record>
+ * <group_record>
+*)
+let lns = ( empty | comment | user_record | group_record )*
+
+let xfm = transform lns (incl "/etc/cgrules.conf")
diff --git a/lenses/tests/test_cgrules.aug b/lenses/tests/test_cgrules.aug
new file mode 100644
index 0000000..3e29d4f
--- /dev/null
+++ b/lenses/tests/test_cgrules.aug
@@ -0,0 +1,32 @@
+module Test_cgrules =
+
+let conf="#cgrules test configuration file
+poooeter cpu test1/
+% memory test2/
+ at somegroup cpu toto/
+% devices toto1/
+% memory toto3/
+"
+test Cgrules.lns get conf =
+ { "#comment" = "cgrules test configuration file" }
+ { "user" = "poooeter"
+ { "cpu" = "test1/" }
+ { "memory" = "test2/" } }
+ { "group" = "somegroup"
+ { "cpu" = "toto/" }
+ { "devices" = "toto1/" }
+ { "memory" = "toto3/" } }
+
+test Cgrules.lns put conf after
+ set "user/cpu" "test3/";
+ rm "user/memory";
+ rm "group";
+ insa "devices" "user/*[last()]";
+ set "user/devices" "newtest/";
+ insb "memory" "user/devices";
+ set "user/memory" "memtest/"
+= "#cgrules test configuration file
+poooeter cpu test3/
+% memory memtest/
+% devices newtest/
+"
diff --git a/tests/Makefile.am b/tests/Makefile.am
index c74b9e6..2ed23e4 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -15,7 +15,8 @@ lens_tests = \
lens-aptpreferences.sh \
lens-aptsource.sh \
lens-bbhosts.sh \
- lens-cgconfig.sh \
+ lens-cgconfig.sh \
+ lens-cgrules.sh \
lens-cobblersettings.sh \
lens-cobblermodules.sh \
lens-cron.sh \
More information about the augeas-devel
mailing list