[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