Upload Tizen:Main source
[external/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
20 let colon      = Sep.colon
21 let comma      = Sep.comma
22
23 let sto_to_spc = store Rx.space_in
24
25 let word    = Rx.word
26 let password = /[A-Za-z0-9_.!*-]*/
27 let integer = Rx.integer
28
29 (************************************************************************
30  *                               ENTRIES
31  *************************************************************************)
32
33 let user      = [ label "user" . store word ]
34 let user_list = Build.opt_list user comma
35 let params    = [ label "password" . store password  . colon ]
36                 . [ label "gid"      . store integer . colon ]
37                 . user_list?
38 let entry     = Build.key_value_line word colon params
39
40 (************************************************************************
41  *                                LENS
42  *************************************************************************)
43
44 let lns        = (comment|empty|entry) *
45
46 let filter
47                = incl "/etc/group"
48                . Util.stdexcl
49
50 let xfm        = transform lns filter