From: Eric Wong Date: Fri, 15 Nov 2019 09:50:34 +0000 (+0000) Subject: admin: get rid of singleton $CFG var X-Git-Tag: v1.3.0~298 X-Git-Url: http://www.git.stargrave.org/?p=public-inbox.git;a=commitdiff_plain;h=321defd4c722ae897fc99e10ce8d05515a97e91f 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. --- 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] ] ]