~ubuntu-branches/ubuntu/vivid/augeas/vivid-proposed

« back to all changes in this revision

Viewing changes to lenses/aptpreferences.aug

  • Committer: Package Import Robot
  • Author(s): Raphaël Pinson
  • Date: 2014-12-01 10:49:19 UTC
  • mfrom: (1.6.1) (24.1.3 sid)
  • Revision ID: package-import@ubuntu.com-20141201104919-lalkacyk0i5fndg5
Tags: 1.3.0-0ubuntu1
* New upstream version
* Include d/p/0003_Link_pthread.patch again

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
(* Apt/preferences module for Augeas          *)
2
 
(* Author: Raphael Pinson <raphink@gmail.com> *)
 
1
(*
 
2
Module: AptPreferences
 
3
  Apt/preferences module for Augeas
 
4
 
 
5
Author: Raphael Pinson <raphael.pinson@camptocamp.com>
 
6
*)
3
7
 
4
8
module AptPreferences =
5
 
   autoload xfm
6
 
 
7
 
   (* Define useful primitives *)
8
 
   let colon        = del /:[ \t]*/ ": "
9
 
   let eol          = del /[ \t]*\n/ "\n"
10
 
   let value_to_eol = store /([^ \t\n].*[^ \t\n]|[^ \t\n])/
11
 
   let value_to_spc = store /[^, \t\n]+/
12
 
   let comma = del /,[ \t]*/ ", "
13
 
   let equal = Util.del_str "="
14
 
   let spc   = Util.del_ws_spc
15
 
 
16
 
   (* Define empty *)
17
 
   let empty = [ del /[ \t]*\n/ "\n" ]
18
 
 
19
 
   (* Define record *)
20
 
 
21
 
   let simple_entry (kw:string) = [ key kw . colon . value_to_eol . eol ]
22
 
 
23
 
   let key_value (kw:string)    = [ key kw . equal . value_to_spc ]
24
 
   let pin_keys = key_value "a"
25
 
                | key_value "c"
26
 
                | key_value "l"
27
 
                | key_value "o"
28
 
                | key_value "v"
29
 
 
30
 
   let pin_options = store "release" . spc . pin_keys . ( comma . pin_keys )*
31
 
   let version_pin = store "version" . [ label "version" . spc . store /[^ \t\n]+/ ]
32
 
   let origin_pin = store "origin" . [ label "origin" . spc . store /[^ \t\n]+/ ]
33
 
 
34
 
   let pin = [ key "Pin" . colon . (pin_options | version_pin | origin_pin) . eol ]
35
 
 
36
 
   let entries = simple_entry "Explanation"
37
 
               | simple_entry "Package"
38
 
               | simple_entry "Pin-Priority"
39
 
               | pin
40
 
               | Util.comment
41
 
 
42
 
   let record = [ seq "record" . entries+ ]
43
 
 
44
 
   (* Define lens *)
45
 
   let lns = (eol* . ( record . eol+ )* . record . eol* ) | eol
46
 
 
47
 
   let filter = incl "/etc/apt/preferences"
48
 
              . Util.stdexcl
49
 
 
50
 
   let xfm = transform lns filter
 
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