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 69D1B1FF17E for ; Thu, 18 Sep 2025 16:20:46 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 09DD91F70; Thu, 18 Sep 2025 16:21:00 +0200 (CEST) From: Fiona Ebner To: pmg-devel@lists.proxmox.com Date: Thu, 18 Sep 2025 16:19:43 +0200 Message-ID: <20250918142052.131956-4-f.ebner@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20250918142052.131956-1-f.ebner@proxmox.com> References: <20250918142052.131956-1-f.ebner@proxmox.com> MIME-Version: 1.0 X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1758205246478 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.024 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: [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: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pmg-devel-bounces@lists.proxmox.com Sender: "pmg-devel" 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); -- 2.47.3 _______________________________________________ pmg-devel mailing list pmg-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pmg-devel