about summary refs log tree commit homepage
diff options
context:
space:
mode:
-rw-r--r--lib/PublicInbox/LEI.pm38
-rw-r--r--t/lei.t30
2 files changed, 13 insertions, 55 deletions
diff --git a/lib/PublicInbox/LEI.pm b/lib/PublicInbox/LEI.pm
index 6073a713..9c3308ad 100644
--- a/lib/PublicInbox/LEI.pm
+++ b/lib/PublicInbox/LEI.pm
@@ -149,8 +149,6 @@ our %CMD = ( # sorted in order of importance/use:
 'daemon-kill' => [ '[-SIGNAL]', 'signal the lei-daemon',
         opt_dash('signal|s=s', '[0-9]+|(?:[A-Z][A-Z0-9]+)') ],
 'daemon-pid' => [ '', 'show the PID of the lei-daemon' ],
-'daemon-env' => [ '[NAME=VALUE...]', 'set, unset, or show daemon environment',
-        qw(clear| unset|u=s@ z|0) ],
 'help' => [ '[SUBCOMMAND]', 'show help' ],
 
 # XXX do we need this?
@@ -230,12 +228,6 @@ my %OPTDESC = (
 # xargs, env, use "-0", git(1) uses "-z".  We support z|0 everywhere
 'z|0' => 'use NUL \\0 instead of newline (CR) to delimit lines',
 
-# note: no "--ignore-environment" / "-i" support like env(1) since that
-# is one-shot and this is for a persistent daemon:
-'clear|' => 'clear the daemon environment',
-'unset|u=s@' => ['NAME',
-        'unset matching NAME, may be specified multiple times'],
-
 'signal|s=s' => [ 'SIG', 'signal to send lei-daemon (default: TERM)' ],
 ); # %OPTDESC
 
@@ -538,24 +530,6 @@ sub lei_daemon_kill {
         kill($sig, $$) or fail($self, "kill($sig, $$): $!");
 }
 
-sub lei_daemon_env {
-        my ($self, @argv) = @_;
-        my $opt = $self->{opt};
-        if (defined $opt->{clear}) {
-                %ENV = ();
-        } elsif (my $u = $opt->{unset}) {
-                delete @ENV{@$u};
-        }
-        if (@argv) {
-                %ENV = (%ENV, map { split(/=/, $_, 2) } @argv);
-        } elsif (!defined($opt->{clear}) && !$opt->{unset}) {
-                my $eor = $opt->{z} ? "\0" : "\n";
-                my $buf = '';
-                while (my ($k, $v) = each %ENV) { $buf .= "$k=$v$eor" }
-                out $self, $buf;
-        }
-}
-
 sub lei_help { _help($_[0]) }
 
 # Shell completion helper.  Used by lei-completion.bash and hopefully
@@ -678,6 +652,7 @@ sub accept_dispatch { # Listener {post_accept} callback
         };
         my %env = map { split(/=/, $_, 2) } split(/\0/, $env);
         if (chdir($env{PWD})) {
+                local %ENV = %env;
                 $self->{env} = \%env;
                 $self->{pid} = $client_pid;
                 eval { dispatch($self, split(/\]\0\[/, $argv)) };
@@ -687,6 +662,17 @@ sub accept_dispatch { # Listener {post_accept} callback
         }
 }
 
+# for long-running results
+sub event_step {
+        my ($self) = @_;
+        local %ENV = %{$self->{env}};
+        eval {}; # TODO
+        if ($@) {
+                say { $self->{sock} } $@;
+                $self->close; # PublicInbox::DS::close
+        }
+}
+
 sub noop {}
 
 # lei(1) calls this when it can't connect
diff --git a/t/lei.t b/t/lei.t
index 5afb8351..6d47e307 100644
--- a/t/lei.t
+++ b/t/lei.t
@@ -192,7 +192,7 @@ if ($ENV{TEST_LEI_ONESHOT}) {
 }
 
 SKIP: { # real socket
-        require_mods(qw(Cwd), my $nr = 46);
+        require_mods(qw(Cwd), my $nr = 105);
         my $nfd = eval { require IO::FDPass; 1 } // do {
                 require PublicInbox::Spawn;
                 PublicInbox::Spawn->can('send_3fds') ? 3 : undef;
@@ -215,34 +215,6 @@ SKIP: { # real socket
         chomp(my $pid_again = $out);
         is($pid, $pid_again, 'daemon-pid idempotent');
 
-        ok($lei->(qw(daemon-env -0)), 'show env');
-        is($err, '', 'no errors in env dump');
-        my @env = split(/\0/, $out);
-        is(scalar grep(/\AHOME=\Q$home\E\z/, @env), 1, 'env has HOME');
-        is(scalar grep(/\AFOO=BAR\z/, @env), 1, 'env has FOO=BAR');
-        is(scalar grep(/\AXDG_RUNTIME_DIR=/, @env), 1, 'has XDG_RUNTIME_DIR');
-
-        ok($lei->(qw(daemon-env -u FOO)), 'unset');
-        is($out.$err, '', 'no output for unset');
-        ok($lei->(qw(daemon-env -0)), 'show again');
-        is($err, '', 'no errors in env dump');
-        @env = split(/\0/, $out);
-        is(scalar grep(/\AFOO=BAR\z/, @env), 0, 'env unset FOO');
-
-        ok($lei->(qw(daemon-env -u FOO -u HOME -u XDG_RUNTIME_DIR)),
-                        'unset multiple');
-        is($out.$err, '', 'no errors output for unset');
-
-        ok($lei->(qw(daemon-env -0)), 'show again');
-        is($err, '', 'no errors in env dump');
-        @env = split(/\0/, $out);
-        is(scalar grep(/\A(?:HOME|XDG_RUNTIME_DIR)=\z/, @env), 0, 'env unset@');
-
-        ok($lei->(qw(daemon-env -)), 'clear env');
-        is($out.$err, '', 'no output');
-        ok($lei->(qw(daemon-env)), 'env is empty');
-        is($out, '', 'env cleared');
-
         ok($lei->(qw(daemon-kill)), 'daemon-kill');
         is($out, '', 'no output from daemon-kill');
         is($err, '', 'no error from daemon-kill');