From 321defd4c722ae897fc99e10ce8d05515a97e91f Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Fri, 15 Nov 2019 09:50:34 +0000 Subject: [PATCH 1/1] admin: get rid of singleton $CFG var 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 | 9 +++------ script/public-inbox-edit | 7 +++---- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/lib/PublicInbox/Admin.pm b/lib/PublicInbox/Admin.pm index d2a0d06b..dddeeae9 100644 --- a/lib/PublicInbox/Admin.pm +++ b/lib/PublicInbox/Admin.pm @@ -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"; diff --git a/script/public-inbox-edit b/script/public-inbox-edit index 0accd7c1..b437b3c0 100755 --- a/script/public-inbox-edit +++ b/script/public-inbox-edit @@ -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] ] ] -- 2.44.0