"Fossies" - the Fresh Open Source Software Archive

Member "RT-Extension-Assets-1.05/inc/Module/Install/RTx/Runtime.pm" (6 May 2015, 2218 Bytes) of package /linux/misc/RT-Extension-Assets-1.05.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Perl source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "Runtime.pm" see the Fossies "Dox" file reference documentation.

    1 #line 1
    2 package Module::Install::RTx::Runtime;
    3 
    4 use base 'Exporter';
    5 our @EXPORT = qw/RTxDatabase RTxPlugin/;
    6 
    7 use strict;
    8 use File::Basename ();
    9 
   10 sub _rt_runtime_load {
   11     require RT;
   12 
   13     eval { RT::LoadConfig(); };
   14     if (my $err = $@) {
   15         die $err unless $err =~ /^RT couldn't load RT config file/m;
   16         my $warn = <<EOT;
   17 This usually means that your current user cannot read the file.  You
   18 will likely need to run this installation step as root, or some user
   19 with more permissions.
   20 EOT
   21         $err =~ s/This usually means.*/$warn/s;
   22         die $err;
   23     }
   24 }
   25 
   26 sub RTxDatabase {
   27     my ($action, $name, $version) = @_;
   28 
   29     _rt_runtime_load();
   30 
   31     require RT::System;
   32     my $has_upgrade = RT::System->can('AddUpgradeHistory');
   33 
   34     my $lib_path = File::Basename::dirname($INC{'RT.pm'});
   35     my @args = (
   36         "-Ilib",
   37         "-I$RT::LocalLibPath",
   38         "-I$lib_path",
   39         "$RT::SbinPath/rt-setup-database",
   40         "--action"      => $action,
   41         ($action eq 'upgrade' ? () : ("--datadir"     => "etc")),
   42         (($action eq 'insert') ? ("--datafile"    => "etc/initialdata") : ()),
   43         "--dba"         => $RT::DatabaseAdmin || $RT::DatabaseUser,
   44         "--prompt-for-dba-password" => '',
   45         ($has_upgrade ? ("--package" => $name, "--ext-version" => $version) : ()),
   46     );
   47     # If we're upgrading against an RT which isn't at least 4.2 (has
   48     # AddUpgradeHistory) then pass --package.  Upgrades against later RT
   49     # releases will pick up --package from AddUpgradeHistory.
   50     if ($action eq 'upgrade' and not $has_upgrade) {
   51         push @args, "--package" => $name;
   52     }
   53 
   54     print "$^X @args\n";
   55     (system($^X, @args) == 0) or die "...returned with error: $?\n";
   56 }
   57 
   58 sub RTxPlugin {
   59     my ($name) = @_;
   60 
   61     _rt_runtime_load();
   62     require YAML::Tiny;
   63     my $data = YAML::Tiny::LoadFile('META.yml');
   64     my $name = $data->{name};
   65 
   66     my @enabled = RT->Config->Get('Plugins');
   67     for my $required (@{$data->{x_requires_rt_plugins} || []}) {
   68         next if grep {$required eq $_} @enabled;
   69 
   70         warn <<"EOT";
   71 
   72 **** Warning: $name requires that the $required plugin be installed and
   73               enabled; it is not currently in \@Plugins.
   74 
   75 EOT
   76     }
   77 }
   78 
   79 1;