[augeas-devel] [PATCH] Add AptPreferences module and associated test

raphink at gmail.com raphink at gmail.com
Wed Jul 23 14:49:51 UTC 2008


# HG changeset patch
# User Raphael Pinson <raphink at gmail.com>
# Date 1216824570 -7200
# Node ID ae394e5c16338ed8622274199c4ad5900fff20b8
# Parent  255c6af88be56271f3a07347320fa8d31cdfc97c
Add AptPreferences module and associated test

diff -r 255c6af88be5 -r ae394e5c1633 lenses/aptpreferences.aug
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lenses/aptpreferences.aug	Wed Jul 23 16:49:30 2008 +0200
@@ -0,0 +1,46 @@
+(* Apt/preferences module for Augeas          *)
+(* Author: Raphael Pinson <raphink at gmail.com> *)
+
+module AptPreferences =
+   autoload xfm
+
+   (* Define useful primitives *)
+   let colon        = del /:[ \t]*/ ": "
+   let eol          = del /[ \t]*\n/ "\n"
+   let value_to_eol = store /([^ \t\n].*[^ \t\n]|[^ \t\n])/
+   let value_to_spc = store /[^, \t\n]+/
+   let comma = del /,[ \t]*/ ", "
+   let equal = Util.del_str "="
+   let spc   = Util.del_ws_spc
+
+   (* Define empty *)
+   let empty = [ del /[ \t]*\n/ "" ]
+
+   (* Define record *)
+
+   let simple_entry (kw:string) = [ key kw . colon . value_to_eol . eol ]
+
+   let key_value (kw:string)    = [ key kw . equal . value_to_spc ]
+   let pin_keys = key_value "a"
+                | key_value "c"
+                | key_value "l"
+                | key_value "o"
+                | key_value "v"
+
+   let pin = [ key "Pin" . colon . value_to_spc . spc . pin_keys . ( comma . pin_keys )*. eol ]
+
+   let entries = simple_entry "Explanation"
+               | simple_entry "Package"
+               | simple_entry "Pin-Priority"
+               | pin
+
+   let record = [ seq "record" . entries+ ]
+
+   (* Define lens *)
+   let lns = empty* . ( record . empty )* . record?
+
+   let filter = incl "/etc/apt/preferences"
+              . Util.stdexcl
+
+   let xfm = transform lns filter
+
diff -r 255c6af88be5 -r ae394e5c1633 lenses/tests/test_aptpreferences.aug
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lenses/tests/test_aptpreferences.aug	Wed Jul 23 16:49:30 2008 +0200
@@ -0,0 +1,29 @@
+module Test_aptpreferences = 
+
+    let conf ="Explanation: Backport packages are never prioritary
+Package: *
+Pin: release a=backports
+Pin-Priority: 100
+
+Explanation: My packages are the most prioritary
+Package: *
+Pin: release l=Raphink, v=3.0
+Pin-Priority: 700
+"
+
+    test AptPreferences.lns get conf = 
+       { "1"
+          { "Explanation"  = "Backport packages are never prioritary" }
+          { "Package"      = "*" }
+          { "Pin"          = "release"
+              { "a" = "backports" } }
+          { "Pin-Priority" = "100" } }
+       {}
+       { "2"
+          { "Explanation"  = "My packages are the most prioritary" }
+          { "Package"      = "*" }
+          { "Pin"          = "release"
+              { "l" = "Raphink" }
+	      { "v" = "3.0"     } }
+          { "Pin-Priority" = "700" } }
+              




More information about the augeas-devel mailing list