Blame lenses/tmpfiles.aug

Packit Service a2ae7a
(*
Packit Service a2ae7a
Module: Tmpfiles
Packit Service a2ae7a
  Parses systemd tmpfiles.d files
Packit Service a2ae7a
Packit Service a2ae7a
Author: Julien Pivotto <roidelapluie@inuits.eu>
Packit Service a2ae7a
Packit Service a2ae7a
About: Reference
Packit Service a2ae7a
  This lens tries to keep as close as possible to `man 5 tmpfiles.d` where possible.
Packit Service a2ae7a
Packit Service a2ae7a
About: License
Packit Service a2ae7a
   This file is licenced under the LGPL v2+, like the rest of Augeas.
Packit Service a2ae7a
Packit Service a2ae7a
About: Lens Usage
Packit Service a2ae7a
   To be documented
Packit Service a2ae7a
Packit Service a2ae7a
About: Configuration files
Packit Service a2ae7a
   This lens applies to /etc/tmpfiles.d/*.conf /usr/lib/tmpfiles.d/*.conf and
Packit Service a2ae7a
   /run/tmpfiles.d/*.conf. See <filter>.
Packit Service a2ae7a
Packit Service a2ae7a
About: Examples
Packit Service a2ae7a
   The <Test_Tmpfiles> file contains various examples and tests.
Packit Service a2ae7a
*)
Packit Service a2ae7a
Packit Service a2ae7a
module Tmpfiles =
Packit Service a2ae7a
  autoload xfm
Packit Service a2ae7a
Packit Service a2ae7a
(************************************************************************
Packit Service a2ae7a
 * Group:                 USEFUL PRIMITIVES
Packit Service a2ae7a
 *************************************************************************)
Packit Service a2ae7a
Packit Service a2ae7a
(* Group: Comments and empty lines *)
Packit Service a2ae7a
Packit Service a2ae7a
  (* View: sep_spc
Packit Service a2ae7a
Space *)
Packit Service a2ae7a
  let sep_spc = Sep.space
Packit Service a2ae7a
Packit Service a2ae7a
  (* View: sep_opt_spc
Packit Service a2ae7a
Optional space (for the beginning of the lines) *)
Packit Service a2ae7a
  let sep_opt_spc = Sep.opt_space
Packit Service a2ae7a
Packit Service a2ae7a
  (* View: comment
Packit Service a2ae7a
Comments *)
Packit Service a2ae7a
  let comment = Util.comment
Packit Service a2ae7a
Packit Service a2ae7a
  (* View: empty
Packit Service a2ae7a
Empty lines *)
Packit Service a2ae7a
  let empty   = Util.empty
Packit Service a2ae7a
Packit Service a2ae7a
(* Group: Lense-specific primitives *)
Packit Service a2ae7a
Packit Service a2ae7a
  (* View: type
Packit Service a2ae7a
One letter. Some of them can have a "+" and all can have a "!".
Packit Service a2ae7a
Packit Service a2ae7a
Not all letters are valid.
Packit Service a2ae7a
*)
Packit Service a2ae7a
  let type     = /([fFwdDvqQpLcbCxXrRzZtThHaAm]|[AabcLp]\+)!?/
Packit Service a2ae7a
Packit Service a2ae7a
  (* View: mode
Packit Service a2ae7a
"-", or 3-4 bytes. Optionally starts with a "~". *)
Packit Service a2ae7a
  let mode     = /(-|~?[0-7]{3,4})/
Packit Service a2ae7a
Packit Service a2ae7a
  (* View: age
Packit Service a2ae7a
"-", or one of the formats seen in the manpage: 10d, 5seconds, 1y5days.
Packit Service a2ae7a
optionally starts with a "~'. *)
Packit Service a2ae7a
  let age      = /(-|(~?[0-9]+(s|m|min|h|d|w|ms|us|((second|minute|hour|day|week|millisecond|microsecond)s?))?)+)/
Packit Service a2ae7a
Packit Service a2ae7a
  (* View: argument
Packit Service a2ae7a
The last field. It can contain spaces. *)
Packit Service a2ae7a
  let argument = /([^# \t\n][^#\n]*[^# \t\n]|[^# \t\n])/
Packit Service a2ae7a
Packit Service a2ae7a
  (* View: field
Packit Service a2ae7a
Applies to the other fields: path, gid and uid fields *)
Packit Service a2ae7a
  let field    = /[^# \t\n]+/
Packit Service a2ae7a
Packit Service a2ae7a
  (* View: record
Packit Service a2ae7a
A valid record, one line in the file.
Packit Service a2ae7a
Only the two first fields are mandatory. *)
Packit Service a2ae7a
  let record = [ seq "record" . sep_opt_spc .
Packit Service a2ae7a
                   [ label "type" . store type ] . sep_spc .
Packit Service a2ae7a
                   [ label "path" . store field ] . ( sep_spc .
Packit Service a2ae7a
                   [ label "mode" . store mode ] . ( sep_spc .
Packit Service a2ae7a
                   [ label "uid" . store field ] . ( sep_spc .
Packit Service a2ae7a
                   [ label "gid" . store field ] . ( sep_spc .
Packit Service a2ae7a
                   [ label "age" . store age ] . ( sep_spc .
Packit Service a2ae7a
                   [ label "argument" . store argument ] )? )? )? )? )? .
Packit Service a2ae7a
                     Util.comment_or_eol ]
Packit Service a2ae7a
Packit Service a2ae7a
(************************************************************************
Packit Service a2ae7a
 * Group:                 THE TMPFILES LENSE
Packit Service a2ae7a
 *************************************************************************)
Packit Service a2ae7a
Packit Service a2ae7a
  (* View: lns
Packit Service a2ae7a
The tmpfiles lens.
Packit Service a2ae7a
Each line can be a comment, a record or empty. *)
Packit Service a2ae7a
  let lns = ( empty | comment | record ) *
Packit Service a2ae7a
Packit Service a2ae7a
  (* View: filter *)
Packit Service a2ae7a
  let filter = incl "/etc/tmpfiles.d/*.conf"
Packit Service a2ae7a
             . incl "/usr/lib/tmpfiles.d/*.conf"
Packit Service a2ae7a
             . incl "/run/tmpfiles.d/*.conf"
Packit Service a2ae7a
Packit Service a2ae7a
  let xfm = transform lns filter
Packit Service a2ae7a
Packit Service a2ae7a
(* Local Variables: *)
Packit Service a2ae7a
(* mode: caml *)
Packit Service a2ae7a
(* End: *)