3 Apt/preferences module for Augeas
5 Author: Raphael Pinson <raphael.pinson@camptocamp.com>
8 module AptPreferences =
11 (************************************************************************
13 ************************************************************************)
16 let colon = del /:[ \t]*/ ": "
22 lbl:string - the label *)
23 let pin_gen (lbl:string) = store lbl
24 . [ label lbl . Sep.space . store Rx.no_spaces ]
28 let space_in = store /[^, \r\t\n][^,\n]*[^, \r\t\n]|[^, \t\n\r]/
29 in Build.key_value /[aclnov]/ Sep.equal space_in
31 (* View: pin_options *)
33 let comma = Util.delim ","
34 in store "release" . Sep.space
35 . Build.opt_list pin_keys comma
37 (* View: version_pin *)
38 let version_pin = pin_gen "version"
40 (* View: origin_pin *)
41 let origin_pin = pin_gen "origin"
45 let pin_value = pin_options | version_pin | origin_pin
46 in Build.key_value_line "Pin" colon pin_value
49 let entries = Build.key_value_line ("Explanation"|"Package"|"Pin-Priority")
50 colon (store Rx.space_in)
55 let record = [ seq "record" . entries+ ]
57 (************************************************************************
59 ************************************************************************)
62 let lns = Util.empty* . (Build.opt_list record Util.eol+ . Util.empty*)?
65 let filter = incl "/etc/apt/preferences"
66 . incl "/etc/apt/preferences.d/*"
69 let xfm = transform lns filter