1# -- 2# Copyright (C) 2001-2020 OTRS AG, https://otrs.com/ 3# -- 4# This software comes with ABSOLUTELY NO WARRANTY. For details, see 5# the enclosed file COPYING for license information (GPL). If you 6# did not receive this file, see https://www.gnu.org/licenses/gpl-3.0.txt. 7# -- 8 9package Kernel::System::Console::Command::Admin::Package::RepositoryList; 10 11use strict; 12use warnings; 13 14use parent qw(Kernel::System::Console::BaseCommand); 15 16our @ObjectDependencies = ( 17 'Kernel::Config', 18 'Kernel::System::Package', 19); 20 21sub Configure { 22 my ( $Self, %Param ) = @_; 23 24 $Self->Description('List all known OTRS package repsitories.'); 25 26 return; 27} 28 29sub Run { 30 my ( $Self, %Param ) = @_; 31 32 $Self->Print("<yellow>Listing OTRS package repositories...</yellow>\n"); 33 34 my $Count = 0; 35 my %List; 36 if ( $Kernel::OM->Get('Kernel::Config')->Get('Package::RepositoryList') ) { 37 %List = %{ $Kernel::OM->Get('Kernel::Config')->Get('Package::RepositoryList') }; 38 } 39 %List = ( %List, $Kernel::OM->Get('Kernel::System::Package')->PackageOnlineRepositories() ); 40 41 if ( !%List ) { 42 $Self->PrintError("No package repositories configured."); 43 return $Self->ExitCodeError(); 44 } 45 46 for my $URL ( sort { $List{$a} cmp $List{$b} } keys %List ) { 47 $Count++; 48 print "+----------------------------------------------------------------------------+\n"; 49 print "| $Count) Name: $List{$URL}\n"; 50 print "| URL: $URL\n"; 51 } 52 print "+----------------------------------------------------------------------------+\n"; 53 print "\n"; 54 55 $Self->Print("<yellow>Listing OTRS package repository contents...</yellow>\n"); 56 57 for my $URL ( sort { $List{$a} cmp $List{$b} } keys %List ) { 58 print 59 "+----------------------------------------------------------------------------+\n"; 60 print "| Package Overview for Repository $List{$URL}:\n"; 61 my @Packages = $Kernel::OM->Get('Kernel::System::Package')->PackageOnlineList( 62 URL => $URL, 63 Lang => $Kernel::OM->Get('Kernel::Config')->Get('DefaultLanguage'), 64 ); 65 my $PackageCount = 0; 66 PACKAGE: 67 for my $Package (@Packages) { 68 69 # Just show if PackageIsVisible flag is enabled. 70 if ( 71 defined $Package->{PackageIsVisible} 72 && !$Package->{PackageIsVisible}->{Content} 73 ) 74 { 75 next PACKAGE; 76 } 77 $PackageCount++; 78 print 79 "+----------------------------------------------------------------------------+\n"; 80 print "| $PackageCount) Name: $Package->{Name}\n"; 81 print "| Version: $Package->{Version}\n"; 82 print "| Vendor: $Package->{Vendor}\n"; 83 print "| URL: $Package->{URL}\n"; 84 print "| License: $Package->{License}\n"; 85 print "| Description: $Package->{Description}\n"; 86 print "| Install: $URL:$Package->{File}\n"; 87 } 88 print 89 "+----------------------------------------------------------------------------+\n"; 90 print "\n"; 91 } 92 93 $Self->Print("<green>Done.</green>\n"); 94 return $Self->ExitCodeOk(); 95} 96 971; 98