NAME
    Fuse::Template - Mount a directory with templates.

VERSION
    0.01

USAGE
    "sudo" might be optional.

  MOUNT
    Example SQLite:

     $ sudo fuse-template
       --root /path/to/templates \
       --mountpoint /path/to/mountpoint \
       --schema dbi:SQLite:path/to/db \
       ;

    Example MySQL:

     $ sudo fuse-template
       --root /path/to/templates \
       --mountpoint /path/to/mountpoint \
       --schema "dbi:mysql:database=MyDB;host=127.1;port=3006 user pass" \
       ;

    See DBI for possible "--schema" formats.

  UNMOUNT
    This needs to be done manually for now. (Patches are welcome!)

     sudo umount /path/to/mountpoint;

DESCRIPTION
    The idea with this project is to auto-maintain password files, and other
    plain text files for different systems, with data from a database.

    Got issues with installation? See "INSTALL" for details and list of
    prerequisite.

    See "examples/" in this distribution for templates.

    Example file system structure:

     root/               -> mountpooit/
     root/somefile       -> mountpoint/somefile
     root/foo.tt         -> mountpoint/foo
     root/bar/baz.txt.tt -> mountpoint/bar/baz.txt

    "somefile" is accessible directly at "mountpoint". Template files (.tt)
    are parsed and the output is accessible on mountpoint side. This is done
    using Template::Toolkit.

    Files in mountpoint are read-only for now.

TEMPLATES
    Here is an example template:

     root = [% self.root %]
     [% rs = schema.resultset('MyTable') %]
     [% rs = MyTable; # same as schema.resultset(...) %]
     [% WHILE (row = rs.next) # get next row in resultset %]
     col_name = [% row.col_name # retrieve column data %]
     [% END %]

    See DBIx::Class for information on how to use the schema object.

    Available variables:

     root
     mountpoint
     mountopts
     self # this object
     schema # DBIx::Class object
     + all resultsetset/tables

    Resultset use this naming convention to convert tablenames:

        Table Name  | Moniker Name
        ---------------------------
        luser       | Luser
        luser_group | LuserGroup
        luser-opts  | LuserOpts

    See "moniker_map" in DBIx::Class::Schema::Loader for details

ATTRIBUTES
  root
     $object = $self->root;

    $object must be stringified to path where templates/files are located.
    $object must follow the same API as Fuse::Template::Root.

    Can be set in constructor as:

     root => \%constructor_args
     root => $path_to_root

    %constructor_args can override defaults, while $path_to_root will only
    override "path" attribute in root-object.

  mountpoint
     $path = $self->mountpoint;

    Path to where the filesystem should be mounted.

  mountopts
     $str = $self->mountopts;

    Example mount option: "allow_other"

  schema
     $dbic_object = $self->schema;

    Can be set in constructor as:

     schema => \%args
     schema => "$dsn $username $password"

    See Fuse::Template::Schema for details.

  debug
     $bool = $self->debug;

    Enable/disable debug output from Fuse. Default is disabled.

METHODS
  find_file
     $real_path = $self->find_file($virtual_path);

    Returns path to the file in root path.

  log
     $bool = $self->log($level => $format => @args);

AUTHOR
    Jan Henning Thorsen

LICENSE
    This library is free software, you can redistribute it and/or modify it
    under the same terms as Perl itself.

