Augeas Variable Index

D |
| decimal Chrony Rx
| default_approx, Test_Approx
| default_sysctl, Test_Sysctl
| del_opt_ws, Util
| del_str, Util
| del_ws, Util
| del_ws_spc, Util
| del_ws_tab, Util
| desc, Test_Systemd
| device, FAI_DiskConfig
| device_name, Rx
| disk, FAI_DiskConfig
| disk_config, FAI_DiskConfig
| disk_config_entry, FAI_DiskConfig
| disk_list, FAI_DiskConfig
| disk_with_opt, FAI_DiskConfig
| doseol, Util
| dot, Syslog
| double_opt_re, Quote
| dquote, Quote
| dquote_opt, Quote
| dquote_opt_nil, Quote
E |
| email_addr Chrony Rx
| empty Access cgrules Cron Crypttab FAI_DiskConfig Syslog Test_Tmpfiles Test_Up2date Xorg
| empty_c_style_re, Util
| empty_generic_re, Util
| empty1, Test_Xml
| empty2, Test_Xml
| empty3, Test_Xml
| empty4, Test_Xml
| encrypt, FAI_DiskConfig
| entries_re, Xorg
| entry_ace, Test_IniFile
| entry_acf, Test_IniFile
| entry_ade, Test_IniFile
| entry_adf, Test_IniFile
| entry_bce, Test_IniFile
| entry_bcf, Test_IniFile
| entry_bde, Test_IniFile
| entry_bdf, Test_IniFile
| entry_command_kw, Systemd
| entry_env_kw, Systemd
| entry_multi_kw, Systemd
| entry_prefix, Cron
| entry_re Global IniFile NetworkManager
| entry_single_kw, Systemd
| env, Test_Systemd
| env_key, Systemd
| eol Global Approx cgrules Cron Crypttab FAI_DiskConfig IniFile Services Sudoers Syslog Util Xorg
| equal Fuse Sep Test_Tmpfiles
| equal_tree, Test_Tmpfiles
| example
| exclamation_mark, Test_Tmpfiles
| exclamation_mark_tree, Test_Tmpfiles
| exec, Test_Systemd

> let decimal = Rx.reldecimal

> let decimal = /[0-9]+([.,][0-9]+)?/

A decimal value (using ‘,’ or ‘.’

> let default_approx = "# The following are the defaults, so there is no need # to uncomment them unless you want a different value. # See approx.conf(5) for details. $interface any $port 9999 $interval 720 $max_wait 10 $max_rate unlimited $debug false # Here are some examples of remote repository mappings. # See http://www.debian.org/mirror/list for mirror sites. debian http://ftp.nl.debian.org/debian debian-volatile http://ftp.nl.debian.org/debian-volatile security http://security.debian.org "

A full configuration

> let default_sysctl = "# Kernel sysctl configuration file # Controls IP packet forwarding net.ipv4.ip_forward = 0 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = \t0 kernel.sysrq = 0 ; Semicolon comments are also allowed net.ipv4.tcp_mem = \t393216 524288 786432 "

> let del_opt_ws = del /[ \t]*/

Delete optional whitespace

> let del_str (s:string) = del s s

Delete a string and default to it

> let del_ws = del /[ \t]+/

Delete mandatory whitespace

> let del_ws_spc = del_ws " "

Delete mandatory whitespace, default to single space

> let del_ws_tab = del_ws "\t"

Delete mandatory whitespace, default to single tab

> let desc = "[Unit] Description=RPC Description=RPC bind service Description=RPC bind\\ service Description= Resets System Activity Logs "

> let device = [ label "device" . store Rx.fspath ]

> let device_name = /[a-zA-Z0-9_?.+:!-]+/

A Linux device name like eth0 or i2c-0.

> let disk = [ label "disk" . store /[^., \t\n]+/ . partition? ]

> let disk_config = let excludes = "lvm" | "raid" | "end" | /disk[0-9]+/ | "cryptsetup" | "tmpfs" in let other_label = Rx.fspath - excludes in disk_config_entry "lvm" lvmoption volume_lvm | disk_config_entry "raid" raidoption volume_raid | disk_config_entry "tmpfs" option volume_tmpfs | disk_config_entry "end" option volume (* there shouldn't be an option here *) | disk_config_entry /disk[0-9]+/ option volume | disk_config_entry "cryptsetup" cryptoption volume_cryptsetup | disk_config_entry other_label option volume

> let disk_config_entry (kw:regexp) (opt:lens) (vol:lens) = [ key "disk_config" . space . store kw . (space . opt)* . eol . (volume_or_comment vol)? ]

> let disk_list = Build.opt_list disk_with_opt Sep.comma

A list of disk_with_opts

> let disk_with_opt = [ label "disk" . store /[^:., \t\n]+/ . partition? . spare_missing* ]

A disk with a spare/missing option for raids

> let doseol = del /[ \t]*\r?\n/ "\n"

Delete end of line with optional carriage return, including optional trailing whitespace

> let dot = Util.del_str "."

Deletes a dot and default to it

> let double_opt_re = /[^\n\t "]([^\n"]*[^\n\t "])?/

The regexp to store when value is optionally double-quoted

> let dquote = Util.del_str "\""

A double quote

> let dquote_opt = del /"?/ "\""

An optional double quote, default to double

> let dquote_opt_nil = del /"?/ ""

An optional double quote, default to nothing

> let email_addr = Rx.email_addr

> let email_addr = /[A-Za-z0-9_+.-]+@[A-Za-z0-9_.-]+/

To be refined

> let empty = Util.empty

> let empty = Util.empty

> let empty = Util.empty

> let empty = Util.empty

> let empty = Util.empty

> let empty = Util.empty

> let empty = "\n\n\n"

Empty example

> let empty = "keyword= " test Up2date.lns get empty = { "1" = "keyword" }

> let empty = Util.empty

> let empty_c_style_re = /[ \t]*((\/\/)|(\/\*[ \t]*\*\/))?[ \t]*/

> let empty_generic_re = /[ \t]*#?[ \t]*/

> let empty1 = "<a/>"

> let empty2 = "<a foo=\"bar\"/>"

> let empty3 = "<a foo=\"bar\"></a>\n"

> let empty4 = "<a foo=\"bar\" far=\"baz\"/>"

> let encrypt = tag "encrypt"

encrypt tag

> let entries_re = /([oO]ption|[sS]creen|[iI]nput[dD]evice|[dD]river|[sS]ub[sS]ection|[dD]isplay|[iI]dentifier|[vV]ideo[rR]am|[dD]efault[dD]epth|[dD]evice)/

This is a list of all patterns which have specific handlers, and should therefore not be matched by the generic handler

> let entry_ace = IniFile.entry IniFile.entry_re sep_ace comment_ace

> let entry_acf = IniFile.entry IniFile.entry_re sep_acf comment_acf

> let entry_ade = IniFile.entry IniFile.entry_re sep_ade comment_ade

> let entry_adf = IniFile.entry IniFile.entry_re sep_adf comment_adf

> let entry_bce = IniFile.entry IniFile.entry_re sep_bce comment_bce

> let entry_bcf = IniFile.entry IniFile.entry_re sep_bcf comment_bcf

> let entry_bde = IniFile.entry IniFile.entry_re sep_bde comment_bde

> let entry_bdf = IniFile.entry IniFile.entry_re sep_bdf comment_bdf

> let entry_command_kw = /Exec[A-Za-z][A-Za-z0-9._-]+/

> let entry_env_kw = "Environment"

> let entry_multi_kw = let forbidden = entry_single_kw | entry_command_kw | entry_env_kw in /[A-Za-z][A-Za-z0-9._-]+/ - forbidden

> let entry_prefix = /-/

> let entry_re = /path|allow|deny/

Regexp for possible entry keyword (path, allow, deny)

> let entry_re = ( /[A-Za-z][A-Za-z0-9._-]*/ )

Default regexp for entry keyword

> let entry_re = /[A-Za-z][A-Za-z0-9:._\(\) \t-]+/

> let entry_single_kw = "Description"

> let env = "[Service] Environment=LANG=C Environment=LANG=C FOO=BAR Environment=LANG= LANGUAGE= LC_CTYPE= LC_NUMERIC= LC_TIME= LC_COLLATE= LC_MONETARY= LC_MESSAGES= LC_PAPER= LC_NAME= LC_ADDRESS= LC_TELEPHONE= LC_MEASUREMENT= LC_IDENTIFICATION= Environment=LANG=C\ FOO=BAR Environment=\"LANG=foo bar\" FOO=BAR Environment=OPTIONS=\"-LS0-6d\" Environment=OPTIONS='-LS0-6d' Environment=VAR=\"with some spaces\" VAR2='more spaces' Environment=VAR='with some spaces' "

> let env_key = /[A-Za-z0-9_]+(\[[0-9]+\])?/

> let eol = IniFile.eol

> let eol = Util.eol

An Util.eol

> let eol = Util.eol

> let eol = Util.eol

> let eol = Util.eol

> let eol = Util.eol

> let eol = Util.doseol

End of line, inherited from Util.eol

> let eol = del /[ \t]*(#)?[ \t]*\n/ "\n"

> let eol = Util.eol

> let eol = Util.eol

> let eol = del /[ \t]*\n/ "\n"

Delete end of line, including optional trailing whitespace

> let eol = Util.eol

> let equal = del /[ \t]*=[ \t]*/ " = "

> let equal = Util.del_str "="

> let equal = "d= /tmp/foo 0755 root root - -\n"

Example with an equal sign in the type

> let equal_tree = { "1" { "type" = "d=" } { "path" = "/tmp/foo" } { "mode" = "0755" } { "uid" = "root" } { "gid" = "root" } { "age" = "-" } { "argument" = "-" } }

Tree for equal

> let example = "# This is a TOML document. Boom. title = \"TOML Example\" [owner] name = \"Tom Preston-Werner\" organization = \"GitHub\" bio = \"GitHub Cofounder & CEO\nLikes tater tots and beer.\" dob = 1979-05-27T07:32:00Z # First class dates? Why not? [database] server = \"192.168.1.1\" ports = [ 8001, 8001, 8002 ] connection_max = 5000 enabled = true [servers] # You can indent as you please. Tabs or spaces. TOML don't care. [servers.alpha] ip = \"10.0.0.1\" dc = \"eqdc10\" [servers.beta] ip = \"10.0.0.2\" dc = \"eqdc10\" country = \"中国\" # This should be parsed as UTF-8 [clients] data = [ [\"gamma\", \"delta\"], [1, 2] ] # just an update to make sure parsers support it # Line breaks are OK when inside arrays hosts = [ \"alpha\", \"omega\" ] # Products [[products]] name = \"Hammer\" sku = 738594937 [[products]] name = \"Nail\" sku = 284758393 color = \"gray\" " test Toml.lns get example = { "#comment" = "This is a TOML document. Boom." } { } { "entry" = "title" { "string" = "TOML Example" } } { } { "table" = "owner" { "entry" = "name" { "string" = "Tom Preston-Werner" } } { "entry" = "organization" { "string" = "GitHub" } } { "entry" = "bio" { "string" = "GitHub Cofounder & CEO Likes tater tots and beer." } } { "entry" = "dob" { "datetime" = "1979-05-27T07:32:00Z" } { "#comment" = "First class dates? Why not?" } } { } } { "table" = "database" { "entry" = "server" { "string" = "192.168.1.1" } } { "entry" = "ports" { "array" { } { "integer" = "8001" } { } { "integer" = "8001" } { } { "integer" = "8002" } { } } } { "entry" = "connection_max" { "integer" = "5000" } } { "entry" = "enabled" { "bool" = "true" } } { } } { "table" = "servers" { } { "#comment" = "You can indent as you please. Tabs or spaces. TOML don't care." } } { "table" = "servers.alpha" { "entry" = "ip" { "string" = "10.0.0.1" } } { "entry" = "dc" { "string" = "eqdc10" } } { } } { "table" = "servers.beta" { "entry" = "ip" { "string" = "10.0.0.2" } } { "entry" = "dc" { "string" = "eqdc10" } } { "entry" = "country" { "string" = "中国" } { "#comment" = "This should be parsed as UTF-8" } } { } } { "table" = "clients" { "entry" = "data" { "array" { } { "array" { "string" = "gamma" } { } { "string" = "delta" } } { } { "array" { "integer" = "1" } { } { "integer" = "2" } } { } } { "#comment" = "just an update to make sure parsers support it" } } { } { "#comment" = "Line breaks are OK when inside arrays" } { "entry" = "hosts" { "array" { } { "string" = "alpha" } { } { "string" = "omega" } { } } } { } { "#comment" = "Products" } { } } { "@table" = "products" { "entry" = "name" { "string" = "Hammer" } } { "entry" = "sku" { "integer" = "738594937" } } { } } { "@table" = "products" { "entry" = "name" { "string" = "Nail" } } { "entry" = "sku" { "integer" = "284758393" } } { "entry" = "color" { "string" = "gray" } } }

The example from https://github.com/mojombo/toml

> let exclamation_mark = "D! /tmp/foo - - - - -\n"

Example with an exclamation mark in the type

> let exclamation_mark_tree = { "1" { "type" = "D!" } { "path" = "/tmp/foo" } { "mode" = "-" } { "uid" = "-" } { "gid" = "-" } { "age" = "-" } { "argument" = "-" } }

Tree for exclamation_mark

> let exec = "[Service] ExecStart=/bin/ls ExecReload=/bin/kill -USR1 $MAINPID ExecStart=/sbin/rpcbind -w ExecStartPost=/bin/systemctl disable firstboot-graphical.service firstboot-text.service ExecStartPre=/sbin/modprobe -qa $SUPPORTED_DRIVERS ExecStop=/usr/sbin/aiccu stop ExecStopPost=-/bin/systemctl poweroff ExecStopPost=@/bin/systemctl poweroff ExecStopPost=-@/bin/systemctl poweroff ExecStopPost=/bin/systemctl\ poweroff "

Close