A | |
access, Access | |
Access | |
action, Syslog | |
address, Pg_Hba | |
alias | |
alias_entry, Sudoers | |
alias_entry_single, Sudoers | |
alias_field, Sudoers | |
alias_list, Sudoers | |
alias_name, Sudoers | |
Aliases | |
ALIASES, Sudoers | |
All but, Rx | |
alpha, Cron | |
alphanum, Cron | |
Approx | |
AptConf | |
at, Syslog | |
att_def1, Test_Xml | |
att_def2, Test_Xml | |
att_def3, Test_Xml | |
att_list_def, Test_Xml.Xml | |
attr1, Test_Xml | |
attr2, Test_Xml | |
attributes, Test_Xml.Xml | |
Attributes, Test_Xml | |
Augeas Lenses | |
Augeas Tests | |
Augeas Variables | |
B | |
BackupPCHosts | |
bang, Syslog | |
basic tokens, Aliases | |
blacklist, Modprobe | |
block, Keepalived | |
body, Xinetd | |
bool, Host_Conf | |
bool_warn, Host_Conf | |
boot, Grub | |
BOOT ENTRIES, Grub | |
boot_setting, Grub | |
brackets, Build | |
Build | |
by, Reprepro_Uploaders | |
by_key, Reprepro_Uploaders |
Allow (+) or deny (-) access
let access = label "access" . store /[+-]/
let address = [ label "address" . store ipaddr ]
let alias = let modulename = [ label "modulename" . sto_no_spaces ] in Build.key_value_line_comment "alias" sep_space (sto_no_spaces . sep_space . modulename) comment
let alias = [ label "alias" . store word_re ]
Every kind of Alias entry, see user_alias, runas_alias, host_alias and cmnd_alias
let alias = user_alias | runas_alias | host_alias | cmnd_alias
Alias entry, a list of comma-separated alias_entry_single fields
let alias_entry (kw:string) (field:string) (sto:lens) = [ indent . key kw . sep_cont . alias_entry_single field sto . ( sep_col . alias_entry_single field sto )* . comment_or_eol ]
Single alias_entry, named using alias_name and listing alias_list
let alias_entry_single (field:string) (sto:lens) = [ label "alias" . alias_name . sep_eq . alias_list field sto ]
Generic alias field to gather all Alias definitions
let alias_field (kw:string) (sto:lens) = [ label kw . sto ]
List of alias_fields, separated by commas
let alias_list (kw:string) (sto:lens) = alias_field kw sto . ( sep_com . alias_field kw sto )*
Name of an alias_entry_single
let alias_name = [ label "name" . store /[A-Z][A-Z0-9_]*/ ]
let alpha = /[A-Za-z]{3}/
let alphanum = (num|alpha) . ("-" . (num|alpha))?
Deletes a at and default to it
let at = Util.del_str "@"
let att_def1 = "<!ATTLIST termdef id ID #REQUIRED name CDATA #IMPLIED>"
let att_def2 = "<!ATTLIST list type (bullets|ordered|glossary) \"ordered\">"
let att_def3 = "<!ATTLIST form method CDATA #FIXED \"POST\">"
test Xml.att_list_def get att_def1 = { "!ATTLIST" = "termdef" { "1" { "#name" = "id" } { "#type" = "ID" } { "#REQUIRED" } } { "2" { "#name" = "name" } { "#type" = "CDATA" } { "#IMPLIED" } } }
let attr1 = " attr1=\"value1\" attr2=\"value2\""
let attr2 = " attr2=\"foo\""
test Xml.attributes get attr1 = { "#attribute" { "attr1" = "value1" } { "attr2" = "value2" } }
Deletes a bang and default to it
let bang = Util.del_str "!"
let blacklist = Build.key_value_line_comment "blacklist" sep_space sto_no_spaces comment
A simple block with just a block title
let block (kw:string) (sto:lens) = lens_block (key kw) sto
We would really like to say “the body can contain any of a list of a list of attributes, each of them at most once”; but that would require that we build a lens that matches the permutation of all attributes; with around 40 individual attributes, that’s not computationally feasible, even if we didn’t have to worry about how to write that down.
let body (attr:lens) = del /\n\{[ \t]*\n/ "\n{\n" . (empty|comment|attr)* . del /[ \t]*\}[ \t]*\n/ "}\n"
A boolean switch
let bool (kw:regexp) = Build.key_value_line kw Sep.space sto_bool
A boolean switch with extended values
let bool_warn (kw:regexp) = Build.key_value_line kw Sep.space sto_bool_warn
let boot = let line = ((boot_setting|comment)* . boot_setting)? in [ label "title" . title . line ]
boot entries
let boot_setting = kw_boot_arg "root" | kernel | kw_boot_arg "initrd" | kw_boot_arg "rootnoverify" | chainloader | kw_boot_arg "uuid" | kw_boot_arg "findroot" (* Solaris extension *) | kw_boot_arg "bootfs" (* Solaris extension *) | kw_pres "quiet" (* Seems to be a Ubuntu extension *) | savedefault | configfile | module_line | map_line
Put a lens inside brackets
let brackets (l:lens) (r:lens) (lns:lens) = l . lns . r
by statements define who is allowed to upload.
let by = [ key "by" . Sep.space . ( store ("anybody"|"unsigned") | by_key ) ]
When a key is used to authenticate packages, the value can either be a key ID or “any”:
let by_key = let any_key = [ store "any" . Sep.space . key "key" ] in let named_key = [ key "key" . Sep.space . store (Rx.word - "any") ] in value "key" . (any_key | named_key)