—————=pod
=head1 NAME
Perl::Dist::WiX::Fragment::Environment - A <Fragment> tag with environment variable handling.
=head1 VERSION
This document describes Perl::Dist::WiX::Fragment::Environment version 1.500.
=head1 SYNOPSIS
my $fragment = Perl::Dist::WiX::Fragment::Environment->new(
id => 'Environment',
);
# If there is only one parameter, it is considered to be the id.
my $fragment2 = Perl::Dist::WiX::Fragment::Environment->new('Environment');
$fragment->add_entry(
id => "Env_STRAWBERRY",
name => 'STRAWBERRY',
value => '1',
action => 'set',
part => 'all',
);
my $count = $fragment->get_entries_count();
=head1 DESCRIPTION
This module implements the fragment that adds, deletes, and appends
the environment variables required in a distribution.
=cut
use
5.010;
use
Moose;
require
Perl::Dist::WiX::DirectoryTree;
require
WiX3::XML::Environment;
require
WiX3::XML::Component;
require
WiX3::XML::DirectoryRef;
our
$VERSION
=
'1.500'
;
$VERSION
=~ s/_//ms;
=head1 METHODS
This class inherits from L<WiX3::XML::Fragment|WiX3::XML::Fragment>
and shares its API.
=head2 new
The C<new> constructor takes a series of parameters, validates then
and returns a new C<Perl::Dist::WiX::Fragment::Environment> object.
It inherits all the parameters described in the
L<< WiX3::XML::Fragment->new()|WiX3::XML::Fragment/new >>
method documentation.
If C<new> has only one parameter, it is considered the ID to use for
the fragment.
=cut
# _component is the (one) component that this fragment contains.
# It's easiest just to keep track of it as an attribute
# than to have to search for it each time.
has
_component
=> (
is
=>
'bare'
,
isa
=>
'WiX3::XML::Component'
,
reader
=>
'_get_component'
,
required
=> 1,
);
sub
BUILDARGS {
my
$class
=
shift
;
my
%args
;
# Process the arguments.
## no critic(CascadingIfElse)
if
(
@_
== 1 && !
ref
$_
[0] ) {
$args
{
'id'
} =
$_
[0];
}
elsif
( 0 ==
@_
) {
$args
{
'id'
} =
'Environment'
;
}
elsif
(
@_
== 1 &&
'HASH'
eq
ref
$_
[0] ) {
%args
= %{
$_
[0] };
}
elsif
( 0 ==
@_
% 2 ) {
%args
= (
@_
);
}
else
{
PDWiX->throw(
'Parameters incorrect (not a hashref, hash, or id) for ::Fragment::Environment'
);
}
# Default the ID to 'Environment'.
my
$id
;
if
( not
exists
$args
{
'id'
} ) {
$id
=
'Environment'
;
}
else
{
$id
=
$args
{
'id'
};
}
# Create the component and attach it to this fragment.
my
$tag1
= WiX3::XML::Component->new(
id
=>
$id
);
return
{
id
=>
$id
,
_component
=>
$tag1
,
};
}
## end sub BUILDARGS
sub
BUILD {
my
$self
=
shift
;
# Add the component to a reference to the root directory.
my
$tag2
=
WiX3::XML::DirectoryRef->new(
directory_object
=>
Perl::Dist::WiX::DirectoryTree->instance()->get_root(), );
$tag2
->add_child_tag(
$self
->_get_component() );
# Add the root directory as a child of this fragment.
$self
->add_child_tag(
$tag2
);
$self
->trace_line( 3,
"Creating environment fragment.\n"
);
return
;
}
## end sub BUILD
=head2 add_entry
$fragment_tag = $fragment_tag->add_entry(...);
The C<add_entry> method creates an <Environment> tag (a
L<WiX3::XML::Environment|WiX3::XML::Environment> object) and adds it
as a child of the component this fragment contains.
It takes all parameters that
L<< WiX3::XML::Environment->new()|WiX3::XML::Environment/new >>
takes.
=cut
sub
add_entry {
my
$self
=
shift
;
$self
->_get_component()
->add_child_tag( WiX3::XML::Environment->new(
@_
) );
return
$self
;
}
=head2 get_entries_count
$count = $fragment_tag->get_entries_count();
The C<get_entries_count> method returns the number of <Environment> tags
that this fragment contains.
=cut
sub
get_entries_count {
my
$self
=
shift
;
return
$self
->_get_component()->count_child_tags();
}
# The fragment is already generated. No need to regenerate.
sub
_regenerate {
## no critic(ProhibitUnusedPrivateSubroutines)
return
;
}
# No duplicates will be here to check.
sub
_check_duplicates {
## no critic(ProhibitUnusedPrivateSubroutines)
return
;
}
no
Moose;
__PACKAGE__->meta->make_immutable;
1;
__END__
=head1 SUPPORT
Bugs should be reported via the CPAN bug tracker at
For other issues, contact the author.
=head1 AUTHOR
Curtis Jewell E<lt>csjewell@cpan.orgE<gt>
=head1 SEE ALSO
L<Perl::Dist::WiX|Perl::Dist::WiX>
=head1 COPYRIGHT
Copyright 2009 - 2010 Curtis Jewell.
This program is free software; you can redistribute
it and/or modify it under the same terms as Perl itself.
The full text of the license can be found in the
LICENSE file included with this module.
=cut