[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