diff options
Diffstat (limited to 'pinyadmin/sbin/pinyconfig')
-rwxr-xr-x | pinyadmin/sbin/pinyconfig | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/pinyadmin/sbin/pinyconfig b/pinyadmin/sbin/pinyconfig new file mode 100755 index 0000000..f6752db --- /dev/null +++ b/pinyadmin/sbin/pinyconfig @@ -0,0 +1,38 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +use Piny; + +my ( $reponame, $attr, $value ) = @ARGV; + +if ( not defined $reponame or not defined $attr ) { + die "Usage: $0 reponame tweakable [value]\n"; +}; + +$attr = lc $attr; +$attr =~ s/\./_/g; + +my $repo = Piny::Repo->new( $reponame ); + +if ( defined $value ) { + undef $@; + eval { + $repo->config->$attr( $value ); + }; + if ( $@ ) { + print STDERR "$attr is not a legal tweakable, or $value is not a legal value for that tweakable.\n$@\n"; + }; + if ( $value ne $repo->config->$attr ) { + print STDERR "Failed to set $attr (perhaps an override is in place)\n"; + }; +}; + +undef $@; +eval { + print "$attr = " . $repo->config->$attr . "\n"; +}; +if ( $@ ) { + print STDERR "$attr is not a legal tweakable, or its current value is illegal.\n$@\n"; +}; |