package Perl::Dist::Inno::Registry;
use 5.006;
use strict;
use warnings;
use Carp qw{ croak };
use Params::Util qw{ _IDENTIFIER _STRING };
use vars qw{$VERSION};
BEGIN {
$VERSION = '1.16';
}
use Object::Tiny qw{
root
subkey
value_type
value_name
value_data
};
#####################################################################
# Constructors
sub new {
my $self = shift->SUPER::new(@_);
# Apply defaults
unless ( defined $self->root ) {
$self->{root} = 'HKLM';
}
unless ( defined $self->value_type ) {
$self->{value_type} = 'expandsz';
}
# Check params
unless ( _IDENTIFIER($self->root) ) {
croak("Missing or invalid root param");
}
unless ( _STRING($self->subkey) ) {
croak("Missing or invalid subkey param");
}
unless ( _IDENTIFIER($self->value_type) ) {
croak("Missing or invalid value_type param");
}
unless ( _IDENTIFIER($self->value_name) ) {
croak("Missing or invalid value_name param");
}
unless ( _STRING($self->value_data) ) {
croak("Missing or invalid value_data param");
}
return $self;
}
# Shortcut constructor for an environment variable
sub env {
return $_[0]->new(
subkey => 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment',
value_name => $_[1],
value_data => $_[2],
);
}
#####################################################################
# Main Methods
sub as_string {
my $self = shift;
return join( '; ',
"Root: " . $self->root,
"Subkey: " . $self->subkey,
"ValueType: " . $self->value_type,
"ValueName: " . $self->value_name,
"ValueData: " . '"' . $self->value_data . '"',
);
}
1;