Files
repmgr/contrib/convert-config.pl
Ian Barwick 4aaa24a5f8 Update configuration file conversion script
Ensure output is quoted.
2019-10-08 10:59:20 +09:00

98 lines
1.9 KiB
Perl
Executable File

#!/usr/bin/env perl
use strict;
use warnings;
if (scalar @ARGV < 1) {
print qq|Please provide path to the repmgr.conf file as first parameter\n|;
exit(1);
}
my $file = $ARGV[0];
if (!-e $file) {
print qq|Provide file "$file" does not exist\n|;
exit(1);
}
if (!-f $file) {
print qq|Provide path "$file" does not point to a file\n|;
exit(1);
}
my @outp = ();
my $fh = undef;
if (!open ($fh, $file)){
print qq|Unable to open "$file"\n|;
exit(1);
}
my $data_directory_found = 0;
while(<$fh>) {
my $line = $_;
chomp $line;
if ($line =~ m|\s*#|) {
push @outp, $line;
next;
}
if ($line !~ m|\s*(\S+?)\s*=(.+?)$|) {
push @outp, $line;
next;
}
my $param = $1;
my $value = $2;
# These parameters can be removed:
next if ($param eq 'cluster');
# These parameters can be renamed:
if ($param eq 'node') {
push @outp, qq|node_id=${value}|;
}
elsif ($param eq 'loglevel') {
push @outp, qq|log_level=${value}|;
}
elsif ($param eq 'logfacility') {
push @outp, qq|log_facility=${value}|;
}
elsif ($param eq 'logfile') {
push @outp, qq|log_file=${value}|;
}
elsif ($param eq 'master_response_timeout') {
push @outp, qq|async_query_timeout=${value}|;
}
elsif ($param eq 'retry_promote_interval_secs') {
push @outp, qq|primary_notification_timeout=${value}|;
}
else {
if ($param eq 'data_directory') {
$data_directory_found = 1;
}
# Don't quote numbers
if ($value =~ /^\d+$/) {
push @outp, sprintf(q|%s=%s|, $param, $value);
}
# Quote everything else
else {
$value =~ s/'/''/g;
push @outp, sprintf(q|%s='%s'|, $param, $value);
}
}
}
close $fh;
print join("\n", @outp);
print "\n";
if ($data_directory_found == 0) {
print "data_directory=''\n";
}