
Fuse::Template - Mount a directory with templates.

0.01

sudo might be optional.
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.
This needs to be done manually for now. (Patches are welcome!)
sudo umount /path/to/mountpoint;

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.

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

$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.
$path = $self->mountpoint;
Path to where the filesystem should be mounted.
$str = $self->mountopts;
Example mount option: "allow_other"
$dbic_object = $self->schema;
Can be set in constructor as:
schema => \%args schema => "$dsn $username $password"
See Fuse::Template::Schema for details.
$bool = $self->debug;
Enable/disable debug output from Fuse. Default is disabled.

$real_path = $self->find_file($virtual_path);
Returns path to the file in root path.
$bool = $self->log($level => $format => @args);

Jan Henning Thorsen

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