/usr/share/perl5/Dist/Zilla/Plugin/TemplateModule.pm is in libdist-zilla-perl 6.010-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 | package Dist::Zilla::Plugin::TemplateModule 6.010;
# ABSTRACT: a simple module-from-template plugin
use Moose;
with qw(Dist::Zilla::Role::ModuleMaker Dist::Zilla::Role::TextTemplate);
use Dist::Zilla::Path;
use namespace::autoclean;
use autodie;
use Sub::Exporter::ForMethods;
use Data::Section 0.200002 # encoding and bytes
{ installer => Sub::Exporter::ForMethods::method_installer },
'-setup';
use Dist::Zilla::File::InMemory;
#pod =head1 MINTING CONFIGURATION
#pod
#pod This module is part of the standard configuration of the default L<Dist::Zilla>
#pod Minting Profile, and all profiles that don't set a custom ':DefaultModuleMaker'
#pod so you don't need to normally do anything to configure it.
#pod
#pod dzil new Some::Module
#pod # creates ./Some-Module/*
#pod # creates ./Some-Module/lib/Some/Module.pm
#pod
#pod However, for those who wish to configure this ( or any subclasses ) this is
#pod presently required:
#pod
#pod [TemplateModule / :DefaultModuleMaker]
#pod ; template = SomeFile.pm
#pod
#pod =head1 DESCRIPTION
#pod
#pod This is a L<ModuleMaker|Dist::Zilla::Role::ModuleMaker> used for creating new
#pod Perl modules files when minting a new dist with C<dzil new>. It uses
#pod L<Text::Template> (via L<Dist::Zilla::Role::TextTemplate>) to render a template
#pod into a Perl module. The template is given two variables for use in rendering:
#pod C<$name>, the module name; and C<$dist>, the Dist::Zilla object. The module is
#pod always created as a file under F<./lib>.
#pod
#pod By default, the template looks something like this:
#pod
#pod use strict;
#pod use warnings;
#pod package {{ $name }};
#pod
#pod 1;
#pod
#pod =attr template
#pod
#pod The C<template> parameter may be given to the plugin to provide a different
#pod filename, absolute or relative to the build/profile directory.
#pod
#pod If this parameter is not specified, this module will use the boilerplate module
#pod template included in this module.
#pod
#pod =cut
has template => (
is => 'ro',
isa => 'Str',
predicate => 'has_template',
);
sub make_module {
my ($self, $arg) = @_;
my $template;
if ($self->has_template) {
$template = path( $self->template )->slurp_utf8;
} else {
$template = ${ $self->section_data('Module.pm') };
}
my $content = $self->fill_in_string(
$template,
{
dist => \($self->zilla),
name => $arg->{name},
},
);
my $filename = $arg->{name} =~ s{::}{/}gr;
my $file = Dist::Zilla::File::InMemory->new({
name => "lib/$filename.pm",
content => $content,
});
$self->add_file($file);
}
__PACKAGE__->meta->make_immutable;
1;
=pod
=encoding UTF-8
=head1 NAME
Dist::Zilla::Plugin::TemplateModule - a simple module-from-template plugin
=head1 VERSION
version 6.010
=head1 DESCRIPTION
This is a L<ModuleMaker|Dist::Zilla::Role::ModuleMaker> used for creating new
Perl modules files when minting a new dist with C<dzil new>. It uses
L<Text::Template> (via L<Dist::Zilla::Role::TextTemplate>) to render a template
into a Perl module. The template is given two variables for use in rendering:
C<$name>, the module name; and C<$dist>, the Dist::Zilla object. The module is
always created as a file under F<./lib>.
By default, the template looks something like this:
use strict;
use warnings;
package {{ $name }};
1;
=head1 ATTRIBUTES
=head2 template
The C<template> parameter may be given to the plugin to provide a different
filename, absolute or relative to the build/profile directory.
If this parameter is not specified, this module will use the boilerplate module
template included in this module.
=head1 MINTING CONFIGURATION
This module is part of the standard configuration of the default L<Dist::Zilla>
Minting Profile, and all profiles that don't set a custom ':DefaultModuleMaker'
so you don't need to normally do anything to configure it.
dzil new Some::Module
# creates ./Some-Module/*
# creates ./Some-Module/lib/Some/Module.pm
However, for those who wish to configure this ( or any subclasses ) this is
presently required:
[TemplateModule / :DefaultModuleMaker]
; template = SomeFile.pm
=head1 AUTHOR
Ricardo SIGNES 😏 <rjbs@cpan.org>
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2017 by Ricardo SIGNES.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut
__DATA__
__[ Module.pm ]__
use strict;
use warnings;
package {{ $name }};
1;
|