Bump to 1.14.1
[platform/upstream/augeas.git] / lenses / group.aug
1 (* Group module for Augeas
2  Author: Free Ekanayaka <free@64studio.com>
3
4  Reference: man 5 group
5
6 *)
7
8 module Group =
9
10    autoload xfm
11
12 (************************************************************************
13  *                           USEFUL PRIMITIVES
14  *************************************************************************)
15
16 let eol        = Util.eol
17 let comment    = Util.comment
18 let empty      = Util.empty
19 let dels       = Util.del_str
20
21 let colon      = Sep.colon
22 let comma      = Sep.comma
23
24 let sto_to_spc = store Rx.space_in
25 let sto_to_col = Passwd.sto_to_col
26
27 let word    = Rx.word
28 let password = /[A-Za-z0-9_.!*-]*/
29 let integer = Rx.integer
30
31 (************************************************************************
32  *                               ENTRIES
33  *************************************************************************)
34
35 let user      = [ label "user" . store word ]
36 let user_list = Build.opt_list user comma
37 let params    = [ label "password" . store password  . colon ]
38                 . [ label "gid"      . store integer . colon ]
39                 . user_list?
40 let entry     = Build.key_value_line word colon params
41
42 let nisdefault =
43   let overrides =
44         colon
45       . [ label "password" . store password? . colon ]
46       . [ label "gid"      . store integer?  . colon ]
47       . user_list? in
48   [ dels "+" . label "@nisdefault" . overrides? . eol ]
49
50
51 (************************************************************************
52  *                                LENS
53  *************************************************************************)
54
55 let lns        = (comment|empty|entry|nisdefault) *
56
57 let filter     = incl "/etc/group"
58
59 let xfm        = transform lns filter