Bump to 1.14.1
[platform/upstream/augeas.git] / lenses / aptpreferences.aug
1 (*
2 Module: AptPreferences
3   Apt/preferences module for Augeas
4
5 Author: Raphael Pinson <raphael.pinson@camptocamp.com>
6 *)
7
8 module AptPreferences =
9 autoload xfm
10
11 (************************************************************************
12  * Group: Entries
13  ************************************************************************)
14
15 (* View: colon *)
16 let colon        = del /:[ \t]*/ ": "
17
18 (* View: pin_gen
19      A generic pin
20
21    Parameters:
22      lbl:string - the label *)
23 let pin_gen (lbl:string) = store lbl
24                         . [ label lbl . Sep.space . store Rx.no_spaces ]
25
26 (* View: pin_keys *)
27 let pin_keys =
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
30
31 (* View: pin_options *)
32 let pin_options =
33     let comma = Util.delim ","
34  in store "release" . Sep.space
35                     . Build.opt_list pin_keys comma
36
37 (* View: version_pin *)
38 let version_pin = pin_gen "version"
39
40 (* View: origin_pin *)
41 let origin_pin = pin_gen "origin"
42
43 (* View: pin *)
44 let pin =
45      let pin_value = pin_options | version_pin | origin_pin
46   in Build.key_value_line "Pin" colon pin_value
47
48 (* View: entries *)
49 let entries = Build.key_value_line ("Explanation"|"Package"|"Pin-Priority")
50                                    colon (store Rx.space_in)
51             | pin
52             | Util.comment
53
54 (* View: record *)
55 let record = [ seq "record" . entries+ ]
56
57 (************************************************************************
58  * Group: Lens
59  ************************************************************************)
60
61 (* View: lns *)
62 let lns = Util.empty* . (Build.opt_list record Util.eol+ . Util.empty*)?
63
64 (* View: filter *)
65 let filter = incl "/etc/apt/preferences"
66            . incl "/etc/apt/preferences.d/*"
67            . Util.stdexcl
68
69 let xfm = transform lns filter