Blame lenses/crypttab.aug

Packit 06dd63
(*
Packit 06dd63
Module: Crypttab
Packit 06dd63
  Parses /etc/crypttab from the cryptsetup package.
Packit 06dd63
Packit 06dd63
Author: Frédéric Lespez <frederic.lespez@free.fr>
Packit 06dd63
Packit 06dd63
About: Reference
Packit 06dd63
  This lens tries to keep as close as possible to `man crypttab` where possible.
Packit 06dd63
Packit 06dd63
About: License
Packit 06dd63
  This file is licensed under the LGPL v2+, like the rest of Augeas.
Packit 06dd63
Packit 06dd63
About: Lens Usage
Packit 06dd63
  Sample usage of this lens in augtool
Packit 06dd63
Packit 06dd63
    * Create a new entry for an encrypted block devices
Packit 06dd63
      > ins 01 after /files/etc/crypttab/*[last()]
Packit 06dd63
      > set /files/etc/crypttab/01/target crypt_sda2
Packit 06dd63
      > set /files/etc/crypttab/01/device /dev/sda2
Packit 06dd63
      > set /files/etc/crypttab/01/password /dev/random
Packit 06dd63
      > set /files/etc/crypttab/01/opt swap
Packit 06dd63
    * Print the entry applying to the "/dev/sda2" device
Packit 06dd63
      > print /files/etc/crypttab/01
Packit 06dd63
    * Remove the entry applying to the "/dev/sda2" device
Packit 06dd63
      > rm /files/etc/crypttab/*[device="/dev/sda2"]
Packit 06dd63
Packit 06dd63
About: Configuration files
Packit 06dd63
  This lens applies to /etc/crypttab. See <filter>.
Packit 06dd63
*)
Packit 06dd63
Packit 06dd63
module Crypttab =
Packit 06dd63
  autoload xfm
Packit 06dd63
Packit 06dd63
  (************************************************************************
Packit 06dd63
   * Group:                 USEFUL PRIMITIVES
Packit 06dd63
   *************************************************************************)
Packit 06dd63
Packit 06dd63
  (* Group: Separators *)
Packit 06dd63
Packit 06dd63
  (* Variable: sep_tab *)
Packit 06dd63
  let sep_tab = Sep.tab
Packit 06dd63
Packit 06dd63
  (* Variable: comma *)
Packit 06dd63
  let comma   = Sep.comma
Packit 06dd63
Packit 06dd63
  (* Group: Generic primitives *)
Packit 06dd63
Packit 06dd63
  (* Variable: eol *)
Packit 06dd63
  let eol     = Util.eol
Packit 06dd63
Packit 06dd63
  (* Variable: comment *)
Packit 06dd63
  let comment = Util.comment
Packit 06dd63
Packit 06dd63
  (* Variable: empty *)
Packit 06dd63
  let empty   = Util.empty
Packit 06dd63
Packit 06dd63
  (* Variable: word *)
Packit 06dd63
  let word    = Rx.word
Packit 06dd63
Packit 06dd63
   (* Variable: optval *)
Packit 06dd63
  let optval  = /[A-Za-z0-9_.:-]+/
Packit 06dd63
Packit 06dd63
  (* Variable: target *)
Packit 06dd63
  let target  = Rx.device_name
Packit 06dd63
Packit 06dd63
  (* Variable: fspath *)
Packit 06dd63
  let fspath  = Rx.fspath
Packit 06dd63
Packit 06dd63
  (************************************************************************
Packit 06dd63
   * Group:                       ENTRIES
Packit 06dd63
   *************************************************************************)
Packit 06dd63
Packit 06dd63
  (************************************************************************
Packit 06dd63
   * View: comma_sep_list
Packit 06dd63
   *   A comma separated list of options (opt=value or opt)
Packit 06dd63
   *************************************************************************)
Packit 06dd63
  let comma_sep_list (l:string) =
Packit 06dd63
    let value = [ label "value" . Util.del_str "=" . store optval ] in
Packit 06dd63
      let lns = [ label l . store word . value? ] in
Packit 06dd63
         Build.opt_list lns comma
Packit 06dd63
Packit 06dd63
  (************************************************************************
Packit 06dd63
   * View: record
Packit 06dd63
   *   A crypttab record
Packit 06dd63
   *************************************************************************)
Packit 06dd63
Packit 06dd63
  let record = [ seq "entry" .
Packit 06dd63
                   [ label "target" . store target ] . sep_tab .
Packit 06dd63
                   [ label "device" . store fspath ] .
Packit 06dd63
                   (sep_tab . [ label "password" . store fspath ] .
Packit 06dd63
                    ( sep_tab . comma_sep_list "opt")? )?
Packit 06dd63
                 . eol ]
Packit 06dd63
Packit 06dd63
  (*
Packit 06dd63
   * View: lns
Packit 06dd63
   *   The crypttab lens
Packit 06dd63
   *)
Packit 06dd63
  let lns = ( empty | comment | record ) *
Packit 06dd63
Packit 06dd63
  (* Variable: filter *)
Packit 06dd63
  let filter = (incl "/etc/crypttab")
Packit 06dd63
Packit 06dd63
  let xfm = transform lns filter
Packit 06dd63
Packit 06dd63
(* coding: utf-8 *)