1 (* Parsing yum's config files *)
5 (************************************************************************
7 *************************************************************************)
9 let comment = IniFile.comment "#" "#"
10 let sep = IniFile.sep "=" "="
11 let empty = Util.empty
14 (************************************************************************
16 *************************************************************************)
18 let list_entry (list_key:string) =
19 let list_value = store /[^# \t\r\n,][^ \t\r\n,]*[^# \t\r\n,]|[^# \t\r\n,]/ in
20 let list_sep = del /([ \t]*(,[ \t]*|\r?\n[ \t]+))|[ \t]+/ "\n\t" in
21 [ key list_key . sep . Sep.opt_space . list_value ]
22 . (list_sep . Build.opt_list [ label list_key . list_value ] list_sep)?
25 let entry_re = IniFile.entry_re - ("baseurl" | "gpgkey" | "exclude")
27 let entry = IniFile.entry entry_re sep comment
31 let list_entry_elem (k:string) = list_entry k . entry*
33 | entry* . Build.combine_three_opt
34 (list_entry_elem "baseurl")
35 (list_entry_elem "gpgkey")
36 (list_entry_elem "exclude")
39 (***********************************************************************a
41 *************************************************************************)
42 let title = IniFile.title IniFile.record_re
43 let record = [ title . entries ]
46 (************************************************************************
48 *************************************************************************)
49 let lns = (empty | comment)* . record*
51 let filter = (incl "/etc/yum.conf")
52 . (incl "/etc/yum.repos.d/*.repo")
53 . (incl "/etc/yum/yum-cron*.conf")
54 . (incl "/etc/yum/pluginconf.d/*")
55 . (excl "/etc/yum/pluginconf.d/versionlock.list")
58 let xfm = transform lns filter
60 (* Local Variables: *)