# -- # Copyright (C) 2001-2019 OTRS AG, https://otrs.com/ # -- # This software comes with ABSOLUTELY NO WARRANTY. For details, see # the enclosed file COPYING for license information (GPL). If you # did not receive this file, see https://www.gnu.org/licenses/gpl-3.0.txt. # -- package Kernel::System::Console::Command::Admin::Package::FileSearch; use strict; use warnings; use parent qw(Kernel::System::Console::BaseCommand); our @ObjectDependencies = ( 'Kernel::System::Package', ); sub Configure { my ( $Self, %Param ) = @_; $Self->Description('Find a file in an installed OTRS package.'); $Self->AddArgument( Name => 'search-path', Description => "Filename or path to search for.", Required => 1, ValueRegex => qr/.*/smx, ); return; } sub Run { my ( $Self, %Param ) = @_; $Self->Print("Searching in installed OTRS packages...\n"); my $Hit = 0; my $Filepath = $Self->GetArgument('search-path'); PACKAGE: for my $Package ( $Kernel::OM->Get('Kernel::System::Package')->RepositoryList() ) { # Just show if PackageIsVisible flag is enabled. if ( defined $Package->{PackageIsVisible} && !$Package->{PackageIsVisible}->{Content} ) { next PACKAGE; } for my $File ( @{ $Package->{Filelist} } ) { if ( $File->{Location} =~ m{\Q$Filepath\E}smx ) { print "+----------------------------------------------------------------------------+\n"; print "| File: $File->{Location}\n"; print "| Name: $Package->{Name}->{Content}\n"; print "| Version: $Package->{Version}->{Content}\n"; print "| Vendor: $Package->{Vendor}->{Content}\n"; print "| URL: $Package->{URL}->{Content}\n"; print "| License: $Package->{License}->{Content}\n"; print "+----------------------------------------------------------------------------+\n"; $Hit++; } } } if ($Hit) { $Self->Print("Done.\n"); return $Self->ExitCodeOk(); } $Self->PrintError("File $Filepath was not found in an installed OTRS package.\n"); return $Self->ExitCodeError(); } 1;