File-SOPS
view release on metacpan or search on metacpan
lib/File/SOPS/Metadata.pm view on Meta::CPAN
has encrypted_suffix => (is => 'rw');
has unencrypted_regex => (is => 'rw');
has encrypted_regex => (is => 'rw');
sub from_hash {
my ($class, $hash) = @_;
return unless ref $hash eq 'HASH';
return $class->new(
age => $hash->{age} // [],
pgp => $hash->{pgp} // [],
kms => $hash->{kms} // [],
gcp_kms => $hash->{gcp_kms} // [],
azure_kv => $hash->{azure_kv} // [],
hc_vault => $hash->{hc_vault} // [],
mac => $hash->{mac},
lastmodified => $hash->{lastmodified},
version => $hash->{version} // $SOPS_VERSION,
unencrypted_suffix => $hash->{unencrypted_suffix},
encrypted_suffix => $hash->{encrypted_suffix},
unencrypted_regex => $hash->{unencrypted_regex},
encrypted_regex => $hash->{encrypted_regex},
);
}
sub to_hash {
my ($self) = @_;
my $hash = {
kms => $self->kms,
gcp_kms => $self->gcp_kms,
azure_kv => $self->azure_kv,
hc_vault => $self->hc_vault,
age => $self->age,
pgp => $self->pgp,
};
$hash->{lastmodified} = $self->lastmodified if defined $self->lastmodified;
$hash->{mac} = $self->mac if defined $self->mac;
$hash->{version} = $self->version if defined $self->version;
$hash->{unencrypted_suffix} = $self->unencrypted_suffix
if defined $self->unencrypted_suffix;
$hash->{encrypted_suffix} = $self->encrypted_suffix
if defined $self->encrypted_suffix;
$hash->{unencrypted_regex} = $self->unencrypted_regex
if defined $self->unencrypted_regex;
$hash->{encrypted_regex} = $self->encrypted_regex
if defined $self->encrypted_regex;
return $hash;
}
sub update_lastmodified {
my ($self) = @_;
$self->lastmodified(strftime('%Y-%m-%dT%H:%M:%SZ', gmtime));
return $self;
}
sub add_age_recipient {
my ($self, %args) = @_;
my $recipient = $args{recipient} // croak "recipient required";
my $enc = $args{enc} // croak "enc required";
push @{$self->age}, {
recipient => $recipient,
enc => $enc,
};
return $self;
}
sub get_age_encrypted_keys {
my ($self) = @_;
return @{$self->age};
}
sub should_encrypt_key {
my ($self, $key) = @_;
if (defined $self->unencrypted_suffix) {
return 0 if $key =~ /\Q$self->{unencrypted_suffix}\E$/;
}
if (defined $self->encrypted_suffix) {
return 1 if $key =~ /\Q$self->{encrypted_suffix}\E$/;
return 0;
}
if (defined $self->unencrypted_regex) {
return 0 if $key =~ /$self->{unencrypted_regex}/;
}
if (defined $self->encrypted_regex) {
return 1 if $key =~ /$self->{encrypted_regex}/;
return 0;
}
return 1;
}
1;
__END__
=pod
=encoding UTF-8
( run in 0.517 second using v1.01-cache-2.11-cpan-df04353d9ac )