# --
# 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::Maint::SupportBundle::Generate;
use strict;
use warnings;
use parent qw(Kernel::System::Console::BaseCommand);
our @ObjectDependencies = (
'Kernel::Config',
'Kernel::System::Main',
'Kernel::System::SupportBundleGenerator',
);
sub Configure {
my ( $Self, %Param ) = @_;
$Self->Description('Generate a support bundle for this system.');
$Self->AddOption(
Name => 'target-directory',
Description => "Specify a custom output directory.",
Required => 0,
HasValue => 1,
ValueRegex => qr/.*/smx,
);
return;
}
sub PreRun {
my ( $Self, %Param ) = @_;
my $TargetDirectory = $Self->GetOption('target-directory');
if ( $TargetDirectory && !-d $TargetDirectory ) {
die "Directory $TargetDirectory does not exist.\n";
}
return;
}
sub Run {
my ( $Self, %Param ) = @_;
$Self->Print("Generating support bundle...\n");
my $Response = $Kernel::OM->Get('Kernel::System::SupportBundleGenerator')->Generate();
if ( !$Response->{Success} ) {
$Self->PrintError("Could not generate support bundle.");
return $Self->ExitCodeError();
}
my $FileData = $Response->{Data};
my $OutputDir = $Self->GetOption('target-directory') || $Kernel::OM->Get('Kernel::Config')->Get('Home');
my $FileLocation = $Kernel::OM->Get('Kernel::System::Main')->FileWrite(
Location => $OutputDir . '/' . $FileData->{Filename},
Content => $FileData->{Filecontent},
Mode => 'binmode',
Permission => '644',
);
if ( !$FileLocation ) {
$Self->PrintError("Support bundle could not be saved.");
return $Self->ExitCodeError();
}
$Self->Print("Support Bundle saved to: $FileLocation\n");
return $Self->ExitCodeOk();
}
# sub PostRun {
# my ( $Self, %Param ) = @_;
#
# # This will be called after Run() (even in case of exceptions). Perform any cleanups here.
#
# return;
# }
1;