Dist::Zilla::Plugin::MungeFile::WithConfigFile - Modify files in the build, with templates and config data from a file
version 0.004
In your dist.ini:
[MungeFile::WithConfigFile] file = lib/My/Module.pm house = maison configfile = data.json
And during the build, lib/My/Module.pm:
my $some_string = '{{ expensive_build_time_sub($config_data{some_field}) }}'; my ${{ $house }} = 'my castle';
Is transformed to:
my $some_string = 'something derived from data in config file'; my $maison = 'my castle';
This is a FileMunger plugin for Dist::Zilla that passes a file(s) through a Text::Template, with a variable provided that contains data read from the provided config file.
Text::Template is used to transform the file by making the $config_data variable available to all code blocks within {{ }} sections.
$config_data
{{ }}
This data is extracted from the provided configfile using Config::Any, so a variety of file formats are supported, including JSON, YAML and INI.
configfile
JSON
YAML
INI
The Dist::Zilla object (as $dist) and this plugin (as $plugin) are also made available to the template, for extracting other information about the build.
$dist
$plugin
Additionally, any extra keys and values you pass to the plugin are passed along in variables named for each key.
finder
This is the name of a FileFinder for finding files to modify.
Other pre-defined finders are listed in "default_finders" in Dist::Zilla::Role::FileFinderUser. You can define your own with the [FileFinder::ByName] plugin.
There is no default.
file
Indicates the filename in the dist to be operated upon; this file can exist on disk, or have been generated by some other plugin. Can be included more than once.
At least one of the finder or file options is required.
arbitrary option
All other keys/values provided will be passed to the template as is.
Presently, the config file is not read with any sort of file decoding (e.g. UTF-8), so any extracted strings should be appropriately decoded first. This is an issue that needs to be resolved in Config::Any (perhaps by having the caller, in our case MooseX::SimpleConfig, to pass the desired decoding).
Bugs may be submitted through the RT bug tracker (or bug-Dist-Zilla-Plugin-MungeFile-WithConfigFile@rt.cpan.org). I am also usually active on irc, as 'ether' at irc.perl.org.
irc.perl.org
Dist::Zilla::Plugin::Substitute
Dist::Zilla::Plugin::GatherDir::Template
Dist::Zilla::Plugin::MungeFile
Dist::Zilla::Plugin::MungeFile::WithDataSection
Karen Etheridge <ether@cpan.org>
This software is copyright (c) 2014 by Karen Etheridge.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
To install Dist::Zilla::Plugin::MungeFile::WithConfigFile, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Dist::Zilla::Plugin::MungeFile::WithConfigFile
CPAN shell
perl -MCPAN -e shell install Dist::Zilla::Plugin::MungeFile::WithConfigFile
For more information on module installation, please visit the detailed CPAN module installation guide.