From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 5DF131FF17E for ; Thu, 18 Sep 2025 22:58:21 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 267328880; Thu, 18 Sep 2025 22:58:37 +0200 (CEST) Date: Thu, 18 Sep 2025 22:58:32 +0200 From: Stoiko Ivanov To: Fiona Ebner Message-ID: <20250918225832.10aa59bf@rosa.proxmox.com> In-Reply-To: <20250918142052.131956-4-f.ebner@proxmox.com> References: <20250918142052.131956-1-f.ebner@proxmox.com> <20250918142052.131956-4-f.ebner@proxmox.com> X-Mailer: Claws Mail 4.1.1 (GTK 3.24.38; x86_64-pc-linux-gnu) MIME-Version: 1.0 X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1758229103785 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.063 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_RPBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_SAFE_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: Re: [pmg-devel] [PATCH pmg-api 3/4] partially fix #2077: pmgsh: remove dependency on Term::ReadLine X-BeenThere: pmg-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Mail Gateway development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: pmg-devel@lists.proxmox.com Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pmg-devel-bounces@lists.proxmox.com Sender: "pmg-devel" Thanks for tackling this! applied the patch for pve-common and played around a bit with pmgsh - and yes - I did miss the completion (not the history though.. and am not sure if I overlooked some other readline feature that would be lost) but this reminded me of pvesh and that we dropped interactive mode at some point (around PVE 5.2) there: https://git.proxmox.com/?p=pve-manager.git;a=commitdiff;h=cfc6a662938b90069e6c70b8112021a4554bad27 and the rationale of using bash for completion (still) sounds sensible. did not look closer at what pmgsh is still missing from pvesh (the latter saw quite a bit more changes in the past years) - but currently this seems to be a good alternative. (I'm not sure if I'll get to checking this in the upcoming 1-2 weeks, but could try if you are busy elsewhere and noone else steps up) FWIW - tried registering an acme account (patch 1/4) - also worked fine. On Thu, 18 Sep 2025 16:19:43 +0200 Fiona Ebner wrote: > Signed-off-by: Fiona Ebner > --- > > Since this removes quite a few features, it is rather bad and it's > most likely not worth it, just to remove the dependency. > > src/bin/pmgsh | 35 ++--------------------------------- > 1 file changed, 2 insertions(+), 33 deletions(-) > > diff --git a/src/bin/pmgsh b/src/bin/pmgsh > index 9ef39a1..b85353d 100755 > --- a/src/bin/pmgsh > +++ b/src/bin/pmgsh > @@ -2,7 +2,6 @@ > > use strict; > use warnings; > -use Term::ReadLine; > use File::Basename; > use Getopt::Long; > use HTTP::Status qw(:constants :is status_message); > @@ -12,6 +11,7 @@ use PVE::JSONSchema; > use PVE::SafeSyslog; > use PVE::INotify; > use PVE::CLIHandler; > +use PVE::PTY; > > use PMG::RESTEnvironment; > > @@ -82,9 +82,6 @@ initlog($ENV{PVE_LOG_ID} || 'pmgsh'); > > print "entering PMG shell - type 'help' for help\n"; > > -my $term = new Term::ReadLine('pmgsh'); > -my $attribs = $term->Attribs; > - > sub complete_path { > my ($text) = @_; > > @@ -130,28 +127,6 @@ sub complete_path { > return ($lcd, @res); > } > > -# just to avoid an endless loop (called by attempted_completion_function) > -$attribs->{completion_entry_function} = sub { > - my ($text, $state) = @_; > - return undef; > -}; > - > -$attribs->{attempted_completion_function} = sub { > - my ($text, $line, $start) = @_; > - > - my $prefix = substr($line, 0, $start); > - if ($prefix =~ /^\s*$/) { # first word (command completion) > - $attribs->{completion_word} = [qw(help ls cd get set create delete quit)]; > - return $term->completion_matches($text, $attribs->{list_completion_function}); > - } > - > - if ($prefix =~ /^\s*\S+\s+$/) { # second word (path completion) > - return complete_path($text); > - } > - > - return (); > -}; > - > sub abs_path { > my ($current, $path) = @_; > > @@ -539,7 +514,7 @@ sub pmg_command { > } > > my $input; > -while (defined($input = $term->readline("pmg:/$cdir> "))) { > +while (defined($input = PVE::PTY::read_line("pmg:/$cdir> "))) { > chomp $input; > > next if $input =~ m/^\s*$/; > @@ -548,12 +523,6 @@ while (defined($input = $term->readline("pmg:/$cdir> "))) { > exit(0); > } > > - # add input to history if it gets not > - # automatically added > - if (!$term->Features->{autohistory}) { > - $term->addhistory($input); > - } > - > eval { > my $args = [shellwords($input)]; > pmg_command($args); _______________________________________________ pmg-devel mailing list pmg-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pmg-devel