summaryrefslogtreecommitdiff
path: root/pinyadmin/sbin/pinyconfig
diff options
context:
space:
mode:
Diffstat (limited to 'pinyadmin/sbin/pinyconfig')
-rwxr-xr-xpinyadmin/sbin/pinyconfig38
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";
+};