package Gitolite::Commands::QueryRc; # implements 'gitolite query-rc' # ---------------------------------------------------------------------- =for usage Usage: gitolite query-rc -a gitolite query-rc Example: gitolite query-rc GL_ADMIN_BASE GL_UMASK # prints "/home/git/.gitolite0077" or similar gitolite query-rc -a # prints all known variables and values, one per line =cut # ---------------------------------------------------------------------- @EXPORT = qw( query_rc ); use Exporter 'import'; use Getopt::Long; use lib $ENV{GL_BINDIR}; use Gitolite::Rc; use Gitolite::Common; use strict; use warnings; # ---------------------------------------------------------------------- my $all = 0; # ---------------------------------------------------------------------- sub query_rc { trace( 1, "rc file not found; default should be " . glrc('default-filename') ) if not glrc('filename'); my @vars = args(); no strict 'refs'; if ( $vars[0] eq '-a' ) { for my $e (@Gitolite::Rc::EXPORT) { # perl-ism warning: if you don't do this the implicit aliasing # screws up Rc's EXPORT list my $v = $e; # we stop on the first non-$ var last unless $v =~ s/^\$//; print "$v=" . ( defined($$v) ? $$v : 'undef' ) . "\n"; } } our $GL_BINDIR = $ENV{GL_BINDIR}; print join( "\t", map { $$_ } grep { $$_ } @vars ) . "\n" if @vars; } # ---------------------------------------------------------------------- sub args { my $help = 0; GetOptions( 'all|a' => \$all, 'help|h' => \$help, ) or usage(); usage("'-a' cannot be combined with other arguments") if $all and @ARGV; return '-a' if $all; usage() if not @ARGV or $help; return @ARGV; } 1;