Configd
view release on metacpan or search on metacpan
lib/Configd/Language/redis.pm view on Meta::CPAN
# Everything redis takes more than once, meaning each of them.
my %REPEATS = map { $_ => 1 } qw{
save
client-output-buffer-limit
rename-command
module
include
bind
replicaof
slaveof
};
sub files {
# 0640 root:redis as the package ships it, but configd keeps whatever it
# finds; this is only what a file created from nothing would get.
return ( { path => '/etc/redis/redis.conf', mode => 0o640, owner => 'root:redis' } );
}
sub units {
return ('redis-server.service');
}
sub repeats {
my ( $self, $key ) = @_;
return $REPEATS{$key} // 0;
}
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
Configd::Language::redis - redis.conf, which has no conf.d and a handful of directives you say more than once.
=head1 VERSION
version 0.002
=head1 SYNOPSIS
use Configd();
Configd->adopt('redis');
Configd->build('redis');
=head1 DESCRIPTION
Redis has an C<include> directive, which is not the same thing as a C<conf.d>:
the included file has to be named from the file doing the including, so adding
one still means editing C<redis.conf>. Include order also decides precedence in
a way that surprises people -- a directive in the main file B<after> an include
wins over the included one.
So C<redis.conf> becomes generated, and a fragment is a file rather than a file
plus an edit.
=head1 NAME
Configd::Language::redis - redis.conf, which has no conf.d and a handful of
directives you say more than once.
=head1 REPEATED DIRECTIVES
Most of redis.conf is one value per directive: a second C<maxmemory> replaces
the first. A few are not, and mean every occurrence:
=over 4
=item * C<save> -- one line per snapshot point, C<save 900 1> and C<save 300 10>
being two conditions rather than one overriding the other.
=item * C<client-output-buffer-limit> -- one line per client class.
=item * C<rename-command>, C<module>, C<include>, C<bind> when written as
several lines.
=back
Those are matched on everything they say, so two fragments both asking for
C<save 900 1> get one line and two asking for different snapshot points get
both. That is what lets a fragment be written without checking whether somebody
else already asked for the same thing.
=head1 METHODS
=head2 files()
F</etc/redis/redis.conf>, 0640 root:redis if it has to be created.
=head2 units()
C<redis-server.service>.
=head2 repeats($key)
True for the directives listed above, each occurrence of which means something
of its own.
=head1 SEE ALSO
Please see those modules/websites for more information related to this module.
=over 4
=item *
L<Configd|Configd>
=item *
L<Configd::Language>, L<Configd::Syntax::Spaced>
=back
=head1 BUGS
Please report any bugs or feature requests on the bugtracker website
L<https://github.com/teodesian/perl-configd/issues>
When submitting a bug or request, please include a test-file or a
patch to an existing test-file that illustrates the bug or desired
feature.
=head1 AUTHORS
Current Maintainers:
=over 4
=item *
George S. Baugh <george@troglodyne.net>
=back
=head1 COPYRIGHT AND LICENSE
Copyright (c) 2026 Troglodyne LLC
Permission is hereby granted, free of charge, to any person obtaining a copy
( run in 0.678 second using v1.01-cache-2.11-cpan-364913b4093 )