]> Sergey Matveev's repositories - public-inbox.git/commitdiff
admin: get rid of singleton $CFG var
authorEric Wong <e@80x24.org>
Fri, 15 Nov 2019 09:50:34 +0000 (09:50 +0000)
committerEric Wong <e@80x24.org>
Sat, 16 Nov 2019 11:05:23 +0000 (11:05 +0000)
PublicInbox::Admin::config() just adds an extra layer of
indirection which we barely rely on.  So get rid of this
global variable and make it easier to run tests in the
future without relying on global state.

lib/PublicInbox/Admin.pm
script/public-inbox-edit

index d2a0d06bcf0b0abf3948da74630318ea50ba159e..dddeeae94efc8763100b565e21f4d934d3eec5d4 100644 (file)
@@ -9,7 +9,6 @@ use warnings;
 use Cwd 'abs_path';
 use base qw(Exporter);
 our @EXPORT_OK = qw(resolve_repo_dir);
-my $CFG; # all the admin stuff is a singleton
 require PublicInbox::Config;
 
 sub resolve_repo_dir {
@@ -80,14 +79,12 @@ sub unconfigured_ibx ($$) {
        });
 }
 
-sub config () { $CFG //= eval { PublicInbox::Config->new } }
-
-sub resolve_inboxes ($;$) {
-       my ($argv, $opt) = @_;
+sub resolve_inboxes ($;$$) {
+       my ($argv, $opt, $cfg) = @_;
        require PublicInbox::Inbox;
        $opt ||= {};
 
-       my $cfg = config();
+       $cfg //= eval { PublicInbox::Config->new };
        if ($opt->{all}) {
                my $cfgfile = PublicInbox::Config::default_file();
                $cfg or die "--all specified, but $cfgfile not readable\n";
index 0accd7c19e28a9126126c6ae203f762343bab319..b437b3c0ac1f23c3408bb33e384b61623d5cea7c 100755 (executable)
@@ -22,12 +22,11 @@ my @opt = qw(mid|m=s file|F=s raw);
 GetOptions($opt, @PublicInbox::AdminEdit::OPT, @opt) or
        die "bad command-line args\n$usage\n";
 
+my $cfg = eval { PublicInbox::Config->new };
 my $editor = $ENV{MAIL_EDITOR}; # e.g. "mutt -f"
 unless (defined $editor) {
        my $k = 'publicinbox.mailEditor';
-       if (my $cfg = PublicInbox::Admin::config()) {
-               $editor = $cfg->{lc($k)};
-       }
+       $editor = $cfg->{lc($k)} if $cfg;
        unless (defined $editor) {
                warn "\`$k' not configured, trying \`git var GIT_EDITOR'\n";
                chomp($editor = `git var GIT_EDITOR`);
@@ -41,7 +40,7 @@ if (defined $mid && defined $file) {
        die "the --mid and --file options are mutually exclusive\n";
 }
 
-my @ibxs = PublicInbox::Admin::resolve_inboxes(\@ARGV, $opt);
+my @ibxs = PublicInbox::Admin::resolve_inboxes(\@ARGV, $opt, $cfg);
 PublicInbox::AdminEdit::check_editable(\@ibxs);
 
 my $found = {}; # cid => [ [ibx, smsg] [, [ibx, smsg] ] ]