Provided by: dotdee_1.11-0ubuntu1_all bug

NAME

       dotdee - convert a flat file into one dynamically generated from a .d directory

SYNOPSIS

       dotdee -c|--comment /PATH/TO/FILE [COMMENT_DELIMITER_START [COMMENT_DELIMITER_END]]

       dotdee -d|--dir /PATH/TO/FILE

       dotdee -l|--list

       dotdee -o|--original /PATH/TO/FILE

       dotdee -s|--setup /PATH/TO/FILE [COMMENT_DELIMITER_START [COMMENT_DELIMITER_END]]

       dotdee -u|--update /PATH/TO/FILE

       dotdee --update-contents /PATH/TO/FILE

       dotdee --update-link /PATH/TO/FILE

       dotdee --undo /PATH/TO/FILE

DESCRIPTION

       dotdee  is  an  administrative utility useful for converting a flatfile into a dynamically
       generated file, from a .d directory.

       The  original  path  at  /PATH/TO/FILE  will  be  replaced  with  a   symbolic   link   to
       /etc/dotdee/PATH/TO/FILE, which is dynamically generated by concatenating all of the files
       in /etc/dotdee/PATH/TO/FILE.d/*, per the order of the shell.

       The Linux kernel's inotify(7) mechanism is used by dotdee running  iwatch(1)  against  the
       /etc/dotdee/  directory.  Any changes to the constituent files are automatically reflected
       in the constructed, dynamically generated file.  Therefore, as long as  the  iwatch(1)  is
       running, you should never need to actually run "dotdee --update /PATH/TO/FILE" manually.

       There is at least 1 file always present in an /etc/dotdee/PATH/TO/FILE.d/ directory:
         -  50-original  is  the  original  file  being managed;  note that write permissions are
       removed from this file, as we don't want to ever modify it

       Optionally, a 2nd file might be present in an /etc/dotdee/PATH/TO/FILE.d/ directory:
         - .comment is a text file that defines the  "comment"  string;  if,  for  instance,  the
       contents  of .comment is the # character, the following will be printed to the head of the
       generated file:

         # DO NOT EDIT THIS FILE DIRECTLY!
         # Rather, add, remove, or modify file(s) in [/etc/dotdee/path/to/some.conf.d]
         # per the dotdee(8) manpage.

       Alternativately, .comment might contain "//", or ";", or anything else that  denotes  that
       the rest of the string will be a comment.

       As for the rest of the contents of /etc/dotdee/PATH/TO/FILE.d/ directory, all of them must
       begin with 2 or more digits, to ensure that they are processed in a specific order.

       there are 3 supported file types:
         - plain text files, which must not be executable;  these files are  simply  concatenated
       in order
         - executable files; these files are executed, with the current state of the managed file
       provided on STDIN, and the STDOUT is then written to the managed file
         - patch/diff files; these files end in either ".patch" or ".diff", and are applied using
       the patch(1) command to the current state of the managed file

EXAMPLES

       $  sudo  dotdee  --setup  /etc/hosts  update-alternatives:  using /etc/dotdee/etc/hosts to
       provide /etc/hosts (etc:hosts) in auto mode.

       $  ll  /etc/hosts  lrwxrwxrwx  1   root   root   27   2011-05-25   00:26   /etc/hosts   ->
       /etc/alternatives/etc:hosts

       $   ll   /etc/alternatives/etc:hosts   lrwxrwxrwx   1   root   root  22  2011-05-25  00:26
       /etc/alternatives/etc:hosts -> /etc/dotdee/etc/hosts

       $   ll   /etc/dotdee/etc/hosts   -rw-r--r--   1   root   root   221    2011-05-16    01:40
       /etc/dotdee/etc/hosts

       $  cat /etc/hosts 127.0.0.1 localhost # The following lines are desirable for IPv6 capable
       hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix  ff02::1
       ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts

       $ echo 10.9.8.7 somehost | sudo tee /etc/dotdee/etc/hosts.d/10-somehost

       $ cat /etc/hosts 10.9.8.7 somehost 127.0.0.1 localhost # The following lines are desirable
       for IPv6  capable  hosts  ::1  ip6-localhost  ip6-loopback  fe00::0  ip6-localnet  ff00::0
       ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts

       $    cat    /etc/dotdee/etc/hosts.d/60-googledns.patch    ---    /etc/hosts     2011-05-16
       01:40:03.000000000 +0000 +++ /tmp/hosts.new      2011-05-25  00:30:41.187412417  +0000  @@
       -1,6 +1,8 @@
        10.9.8.7 somehost
        127.0.0.1 localhost

       +8.8.8.8 googledns +
        # The following lines are desirable for IPv6 capable hosts
        ::1 ip6-localhost ip6-loopback
        fe00::0 ip6-localnet

       $ cat /etc/hosts 10.9.8.7 somehost 127.0.0.1 localhost

       8.8.8.8 googledns

       #  The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback
       fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes  ff02::2  ip6-allrouters
       ff02::3 ip6-allhosts

       $ cat /etc/dotdee/etc/hosts.d/90-uppercase #!/bin/sh tr '[:lower:]' '[:upper:]'

       $ cat /etc/hosts 10.9.8.7 SOMEHOST 127.0.0.1 LOCALHOST

       8.8.8.8 GOOGLEDNS

       #  THE FOLLOWING LINES ARE DESIRABLE FOR IPV6 CAPABLE HOSTS ::1 IP6-LOCALHOST IP6-LOOPBACK
       FE00::0 IP6-LOCALNET FF00::0 IP6-MCASTPREFIX FF02::1 IP6-ALLNODES  FF02::2  IP6-ALLROUTERS
       FF02::3 IP6-ALLHOSTS

       $ sudo dotdee --dir /etc/hosts /etc/dotdee/etc/hosts.d

       $ cat /some/hosts/snippet > $(sudo dotdee --dir /etc/hosts)/60-foo

       $ sudo dotdee --original /etc/hosts /etc/dotdee/etc/hosts.d/50-original

       $ cat /some/other/hosts/file > $(sudo dotdee --original /etc/hosts)

       $ sudo dotdee --comment /path/to/some.xml '<!--' '-->'

SEE ALSO

       update-alternatives(8), iwatch(1), patch(1)

AUTHOR

       This  manpage  and  the  utility  was written by Dustin Kirkland <kirkland@ubuntu.com> for
       Ubuntu systems (but may be used by others).  Permission is  granted  to  copy,  distribute
       and/or  modify  this document under the terms of the GNU General Public License, Version 3
       published by the Free Software Foundation.

       On Debian systems, the complete text of the GNU General Public License  can  be  found  in
       /usr/share/common-licenses/GPL, or on the web at http://www.gnu.org/licenses/gpl.txt.