[Bps-public-commit] rt-extension-admin-conditions-and-actions branch, master, updated. 1.00

Alex Vandiver alexmv at bestpractical.com
Tue Dec 16 17:54:56 EST 2014


The branch, master has been updated
       via  1cdbd3d9c8b5bd62b8ffb32c25b1d1281921e60f (commit)
      from  cbb39fba91c6bcfe3761662f5cf2d122cb56e08a (commit)

Summary of changes:
 Changes                                       |   3 +
 MANIFEST                                      |   4 +
 META.yml                                      |  19 ++-
 Makefile.PL                                   |   6 +-
 README                                        |  90 ++++++------
 inc/Module/Install.pm                         |  18 +--
 inc/Module/Install/Base.pm                    |   2 +-
 inc/Module/Install/Can.pm                     |   2 +-
 inc/Module/Install/Fetch.pm                   |   2 +-
 inc/Module/Install/Makefile.pm                |   4 +-
 inc/Module/Install/Metadata.pm                |   6 +-
 inc/Module/Install/RTx.pm                     | 200 +++++++++++++++-----------
 inc/Module/Install/Win32.pm                   |   2 +-
 inc/Module/Install/WriteAll.pm                |   2 +-
 lib/RT/Extension/AdminConditionsAndActions.pm |  22 +--
 15 files changed, 214 insertions(+), 168 deletions(-)

- Log -----------------------------------------------------------------
commit 1cdbd3d9c8b5bd62b8ffb32c25b1d1281921e60f
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Tue Dec 16 17:54:08 2014 -0500

    Version 1.00 releng

diff --git a/Changes b/Changes
index b5a5a1a..94157b8 100644
--- a/Changes
+++ b/Changes
@@ -1,5 +1,8 @@
 Revision history for RT-Extension-AdminConditionsAndActions
 
+1.00 2014-12-16
+ - Packaging updates
+
 0.02 2014-04-03
  - Copy and paste error in the docs
 
diff --git a/MANIFEST b/MANIFEST
index 0cd2aed..c0fefb6 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -22,12 +22,16 @@ inc/Module/Install.pm
 inc/Module/Install/Base.pm
 inc/Module/Install/Can.pm
 inc/Module/Install/Fetch.pm
+inc/Module/Install/Include.pm
 inc/Module/Install/Makefile.pm
 inc/Module/Install/Metadata.pm
 inc/Module/Install/ReadmeFromPod.pm
 inc/Module/Install/RTx.pm
+inc/Module/Install/RTx/Runtime.pm
 inc/Module/Install/Win32.pm
 inc/Module/Install/WriteAll.pm
+inc/unicore/Name.pm
+inc/YAML/Tiny.pm
 lib/RT/Extension/AdminConditionsAndActions.pm
 Makefile.PL
 MANIFEST			This list of files
diff --git a/META.yml b/META.yml
index 8fdb8dd..dae0a0d 100644
--- a/META.yml
+++ b/META.yml
@@ -1,15 +1,15 @@
 ---
-abstract: 'RT Extension-AdminConditionsAndActions Extension'
+abstract: 'RT-Extension-AdminConditionsAndActions Extension'
 author:
-  - 'sunnavy <sunnavy at bestpractical.com>'
+  - 'Best Practical Solutions, LLC <modules at bestpractical.com>'
 build_requires:
-  ExtUtils::MakeMaker: 6.36
+  ExtUtils::MakeMaker: 6.59
 configure_requires:
-  ExtUtils::MakeMaker: 6.36
+  ExtUtils::MakeMaker: 6.59
 distribution_type: module
 dynamic_config: 1
-generated_by: 'Module::Install version 1.06'
-license: gplv2
+generated_by: 'Module::Install version 1.12'
+license: gpl
 meta-spec:
   url: http://module-build.sourceforge.net/META-spec-v1.4.html
   version: 1.4
@@ -18,6 +18,11 @@ no_index:
   directory:
     - html
     - inc
+requires:
+  perl: 5.8.3
 resources:
   license: http://opensource.org/licenses/gpl-license.php
-version: 0.02
+  repository: https://github.com/bestpractical/rt-extension-adminconditionsandactions
+version: '1.00'
+x_module_install_rtx_version: '0.36'
+x_requires_rt: 4.0.0
diff --git a/Makefile.PL b/Makefile.PL
index d706310..02f64fb 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -1,10 +1,8 @@
 use inc::Module::Install;
 
-
 RTx 'RT-Extension-AdminConditionsAndActions';
-all_from 'lib/RT/Extension/AdminConditionsAndActions.pm';
-readme_from 'lib/RT/Extension/AdminConditionsAndActions.pm';
-license  'gplv2';
+
+repository('https://github.com/bestpractical/rt-extension-adminconditionsandactions');
 
 sign;
 WriteAll;
diff --git a/README b/README
index 7d74f5b..a2583c1 100644
--- a/README
+++ b/README
@@ -5,13 +5,12 @@ DESCRIPTION
     A web UI for managing RT conditions and actions.
 
 RT VERSIONS
-    This version of this extension is intended to work with the following
-    versions of RT: 4.0, 4.2
+    This extension is compatible with RT 4.0 and RT 4.2.
 
 INSTALLATION
-    "perl Makefile.PL"
-    "make"
-    "make install"
+    perl Makefile.PL
+    make
+    make install
         May need root permissions
 
     Edit your /opt/rt4/etc/RT_SiteConfig.pm
@@ -19,7 +18,7 @@ INSTALLATION
 
             Set(@Plugins, qw(RT::Extension::AdminConditionsAndActions));
 
-        or add "RT::Extension::AdminConditionsAndActions" to your existing
+        or add RT::Extension::AdminConditionsAndActions to your existing
         @Plugins line.
 
         You can customize Condition/Action list format by config
@@ -71,7 +70,7 @@ USAGE
 
     However, you might prefer writing your condition or action in a module
     with the code in a file. This allows you to track it in version control
-    and call it from other places like "rt-crontool". The following sections
+    and call it from other places like rt-crontool. The following sections
     describe how to create these modules.
 
   Custom Conditions
@@ -85,14 +84,14 @@ USAGE
     The condition has a Name, which is displayed in the Condition dropdown
     when you create a scrip, and a Description to identify it. The Condition
     Module is the RT module that executes the condition, in this case
-    "StatusChange". You can find the code in
-    "/opt/rt4/lib/RT/Condition/StatusChange.pm" and view the documentation
-    on the Best Practical "documentation site". (Confirm your RT version
-    when checking the documentation.)
+    StatusChange. You can find the code in
+    /opt/rt4/lib/RT/Condition/StatusChange.pm and view the documentation on
+    the Best Practical "documentation site". (Confirm your RT version when
+    checking the documentation.)
 
     Parameters to Pass shows the actual parameter that is passed to the
     module when this condition is executed. When you look at the module
-    documentation it makes sense when you see that "StatusChange" accepts a
+    documentation it makes sense when you see that StatusChange accepts a
     valid status and returns true if the transaction is setting the status
     to the provided value. Finally, Applicable Transaction Types lists the
     transactions for which this condition will run, and in this case it's
@@ -113,7 +112,7 @@ USAGE
 
         /opt/rt4/local/lib/RT/Condition/SpecialReviewNeeded.pm
 
-    Creating it in the "local" directory will keep it safe when you apply RT
+    Creating it in the local directory will keep it safe when you apply RT
     upgrades in the future.
 
     The basics of a condition module are as follows:
@@ -134,8 +133,8 @@ USAGE
 
         1; # Don't forget module needs this
 
-    "IsApplicable" is the method you will override from the "RT::Condition"
-    base class. The return value of this method, true or false, determines
+    IsApplicable is the method you will override from the RT::Condition base
+    class. The return value of this method, true or false, determines
     whether the condition passes or not.
 
     $self gives you access to the ticket object and transaction object via:
@@ -157,9 +156,9 @@ USAGE
 
         return 1;
 
-    We've hardcoded "review" and "Special" here, but as with "StatusChange",
-    you could pass a value from the Parameters to Pass field. You can access
-    this value by calling the "Argument" method.
+    We've hardcoded review and Special here, but as with StatusChange, you
+    could pass a value from the Parameters to Pass field. You can access
+    this value by calling the Argument method.
 
         my $arg = $self->Argument;
 
@@ -178,7 +177,7 @@ USAGE
     Global > Actions (in RT 4.0, Tools > Global > Actions). You find Notify
     AdminCcs, which might be close. Taking a quick look you see it has a
     Name and Description, like conditions, and the module it calls is
-    "Notify", which can be found at "/opt/rt4/lib/RT/Action/Notify.pm".
+    Notify, which can be found at /opt/rt4/lib/RT/Action/Notify.pm.
 
     The Parameter to Pass is AdminCc, and if you look at other notification
     actions you'll see many use Notify and just pass a different ticket
@@ -186,7 +185,7 @@ USAGE
 
     Your reviewers aren't always AdminCcs on tickets, so you'd rather send a
     notification to a group. You can create this new action using the
-    existing action module "NotifyGroup". On the action list page, click
+    existing action module NotifyGroup. On the action list page, click
     Create and add something like the following:
 
         Name               Notify Review Group
@@ -203,7 +202,7 @@ USAGE
     As part of the request to add a condition to check for the 'Special'
     custom field, we now want to route these special requests to the person
     who handles them. This extra bit of functionality will require a module,
-    maybe called "SetOwner". Create the new file in:
+    maybe called SetOwner. Create the new file in:
 
         /local/lib/RT/Action/SetOwner.pm
 
@@ -233,18 +232,18 @@ USAGE
 
         1; # Don't forget module needs this
 
-    Actions have two methods you can override. The "Prepare" method provides
+    Actions have two methods you can override. The Prepare method provides
     you with a chance to make sure the action should actually run. If
-    "Prepare" returns false, "Commit" will not run. You'll typically handle
-    this in your condition, in which case you can just omit "Prepare" from
-    your action. However, when you have a condition that covers a common
-    general case, but you want to check one extra criteria for a particular
-    action, the "Prepare" method can be helpful. In our example, you might
-    choose to keep just the On Review Needed condition and add the check for
-    the 'Special' custom field to the "Prepare" method.
-
-    "Commit" is where you do the actual work of the action. It should return
-    true on success. On failure, you can use "RT::Logger" to write errors or
+    Prepare returns false, Commit will not run. You'll typically handle this
+    in your condition, in which case you can just omit Prepare from your
+    action. However, when you have a condition that covers a common general
+    case, but you want to check one extra criteria for a particular action,
+    the Prepare method can be helpful. In our example, you might choose to
+    keep just the On Review Needed condition and add the check for the
+    'Special' custom field to the Prepare method.
+
+    Commit is where you do the actual work of the action. It should return
+    true on success. On failure, you can use RT::Logger to write errors or
     debugging information to RTs logs so you can track down the problem.
 
     In actions, $self gives you access to the transaction and ticket
@@ -253,8 +252,8 @@ USAGE
         $self->TransactionObj
         $self->TicketObj
 
-    For our "SetOwner" action, we don't need "Prepare" and can add the
-    following to "Commit":
+    For our SetOwner action, we don't need Prepare and can add the following
+    to Commit:
 
         my $user = RT::User->new(RT->SystemUser);
         my ($ret, $msg) = $user->Load($self->Argument);
@@ -264,8 +263,8 @@ USAGE
         $self->TicketObj->SetOwner($user->Id);
         return 1;
 
-    The "Argument" method returns the value set for Parameters to Pass in
-    the action configuration. This example expects the argument to be the
+    The Argument method returns the value set for Parameters to Pass in the
+    action configuration. This example expects the argument to be the
     username of an RT user.
 
     Now you can create the new action in RT. Go to the action page, click
@@ -279,7 +278,7 @@ USAGE
     Click save and the new action will be available when creating scrips.
 
     Note that actions you perform in scrips can themselves create new
-    transactions, as is the case with "SetOwner". When this action runs, the
+    transactions, as is the case with SetOwner. When this action runs, the
     set owner transaction will fire the default On Owner Change Notify Owner
     scrip, if it is enabled.
 
@@ -290,21 +289,20 @@ ADDITIONAL INFORMATION
     distribution and on the "Best Practical website"
     <http://docs.bestpractical.com>.
 
+AUTHOR
+    Best Practical Solutions, LLC <modules at bestpractical.com>
+
 BUGS
     All bugs should be reported via email to
-    bug-RT-Extension-AdminConditionsAndActions at rt.cpan.org
-    <mailto:bug-RT-Extension-AdminConditionsAndActions at rt.cpan.org> or via
-    the web at rt.cpan.org
-    <http://rt.cpan.org/Public/Dist/Display.html?Name=RT-Extension-AdminCond
-    itionsAndActions>.
 
-AUTHOR
-    sunnavy <sunnavy at bestpractical.com>
+        L<bug-RT-Extension-AdminConditionsAndActions at rt.cpan.org|mailto:bug-RT-Extension-AdminConditionsAndActions at rt.cpan.org>
+
+    or via the web at
 
-    Jim Brandt <jbrandt at bestpractical.com>
+        L<rt.cpan.org|http://rt.cpan.org/Public/Dist/Display.html?Name=RT-Extension-AdminConditionsAndActions>.
 
 LICENSE AND COPYRIGHT
-    Copyright 2013,2014 Best Practical Solutions, LLC.
+    This software is Copyright (c) 2014 by Best Practical Solutions
 
     This is free software, licensed under:
 
diff --git a/inc/Module/Install.pm b/inc/Module/Install.pm
index 4ecf46b..5460dd5 100644
--- a/inc/Module/Install.pm
+++ b/inc/Module/Install.pm
@@ -17,7 +17,7 @@ package Module::Install;
 #     3. The ./inc/ version of Module::Install loads
 # }
 
-use 5.005;
+use 5.006;
 use strict 'vars';
 use Cwd        ();
 use File::Find ();
@@ -31,7 +31,7 @@ BEGIN {
 	# This is not enforced yet, but will be some time in the next few
 	# releases once we can make sure it won't clash with custom
 	# Module::Install extensions.
-	$VERSION = '1.06';
+	$VERSION = '1.12';
 
 	# Storage for the pseudo-singleton
 	$MAIN    = undef;
@@ -156,10 +156,10 @@ END_DIE
 sub autoload {
 	my $self = shift;
 	my $who  = $self->_caller;
-	my $cwd  = Cwd::cwd();
+	my $cwd  = Cwd::getcwd();
 	my $sym  = "${who}::AUTOLOAD";
 	$sym->{$cwd} = sub {
-		my $pwd = Cwd::cwd();
+		my $pwd = Cwd::getcwd();
 		if ( my $code = $sym->{$pwd} ) {
 			# Delegate back to parent dirs
 			goto &$code unless $cwd eq $pwd;
@@ -239,7 +239,7 @@ sub new {
 
 	# ignore the prefix on extension modules built from top level.
 	my $base_path = Cwd::abs_path($FindBin::Bin);
-	unless ( Cwd::abs_path(Cwd::cwd()) eq $base_path ) {
+	unless ( Cwd::abs_path(Cwd::getcwd()) eq $base_path ) {
 		delete $args{prefix};
 	}
 	return $args{_self} if $args{_self};
@@ -338,7 +338,7 @@ sub find_extensions {
 		if ( $subpath eq lc($subpath) || $subpath eq uc($subpath) ) {
 			my $content = Module::Install::_read($subpath . '.pm');
 			my $in_pod  = 0;
-			foreach ( split //, $content ) {
+			foreach ( split /\n/, $content ) {
 				$in_pod = 1 if /^=\w/;
 				$in_pod = 0 if /^=cut/;
 				next if ($in_pod || /^=cut/);  # skip pod text
@@ -434,7 +434,7 @@ END_OLD
 
 # _version is for processing module versions (eg, 1.03_05) not
 # Perl versions (eg, 5.8.1).
-sub _version ($) {
+sub _version {
 	my $s = shift || 0;
 	my $d =()= $s =~ /(\.)/g;
 	if ( $d >= 2 ) {
@@ -450,12 +450,12 @@ sub _version ($) {
 	return $l + 0;
 }
 
-sub _cmp ($$) {
+sub _cmp {
 	_version($_[1]) <=> _version($_[2]);
 }
 
 # Cloned from Params::Util::_CLASS
-sub _CLASS ($) {
+sub _CLASS {
 	(
 		defined $_[0]
 		and
diff --git a/inc/Module/Install/Base.pm b/inc/Module/Install/Base.pm
index 802844a..f9bf5de 100644
--- a/inc/Module/Install/Base.pm
+++ b/inc/Module/Install/Base.pm
@@ -4,7 +4,7 @@ package Module::Install::Base;
 use strict 'vars';
 use vars qw{$VERSION};
 BEGIN {
-	$VERSION = '1.06';
+	$VERSION = '1.12';
 }
 
 # Suspend handler for "redefined" warnings
diff --git a/inc/Module/Install/Can.pm b/inc/Module/Install/Can.pm
index 22167b8..b4e5e3b 100644
--- a/inc/Module/Install/Can.pm
+++ b/inc/Module/Install/Can.pm
@@ -8,7 +8,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.06';
+	$VERSION = '1.12';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
diff --git a/inc/Module/Install/Fetch.pm b/inc/Module/Install/Fetch.pm
index bee0c4f..54f14fb 100644
--- a/inc/Module/Install/Fetch.pm
+++ b/inc/Module/Install/Fetch.pm
@@ -6,7 +6,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.06';
+	$VERSION = '1.12';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
diff --git a/inc/Module/Install/Makefile.pm b/inc/Module/Install/Makefile.pm
index 7052f36..81cddd5 100644
--- a/inc/Module/Install/Makefile.pm
+++ b/inc/Module/Install/Makefile.pm
@@ -8,7 +8,7 @@ use Fcntl qw/:flock :seek/;
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.06';
+	$VERSION = '1.12';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
@@ -133,7 +133,7 @@ sub makemaker_args {
 	return $args;
 }
 
-# For mm args that take multiple space-seperated args,
+# For mm args that take multiple space-separated args,
 # append an argument to the current list.
 sub makemaker_append {
 	my $self = shift;
diff --git a/inc/Module/Install/Metadata.pm b/inc/Module/Install/Metadata.pm
index 58430f3..2c66b1e 100644
--- a/inc/Module/Install/Metadata.pm
+++ b/inc/Module/Install/Metadata.pm
@@ -6,7 +6,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.06';
+	$VERSION = '1.12';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
@@ -347,7 +347,7 @@ sub name_from {
 		^ \s*
 		package \s*
 		([\w:]+)
-		\s* ;
+		[\s|;]*
 		/ixms
 	) {
 		my ($name, $module_name) = ($1, $1);
@@ -705,7 +705,7 @@ sub _write_mymeta_data {
 	my @yaml = Parse::CPAN::Meta::LoadFile('META.yml');
 	my $meta = $yaml[0];
 
-	# Overwrite the non-configure dependency hashs
+	# Overwrite the non-configure dependency hashes
 	delete $meta->{requires};
 	delete $meta->{build_requires};
 	delete $meta->{recommends};
diff --git a/inc/Module/Install/RTx.pm b/inc/Module/Install/RTx.pm
index 00cf565..73e7245 100644
--- a/inc/Module/Install/RTx.pm
+++ b/inc/Module/Install/RTx.pm
@@ -8,7 +8,7 @@ no warnings 'once';
 
 use Module::Install::Base;
 use base 'Module::Install::Base';
-our $VERSION = '0.33';
+our $VERSION = '0.36';
 
 use FindBin;
 use File::Glob     ();
@@ -18,95 +18,79 @@ my @DIRS = qw(etc lib html static bin sbin po var);
 my @INDEX_DIRS = qw(lib bin sbin);
 
 sub RTx {
-    my ( $self, $name ) = @_;
+    my ( $self, $name, $extra_args ) = @_;
+    $extra_args ||= {};
 
-    my $original_name = $name;
-    my $RTx = 'RTx';
-    $RTx = $1 if $name =~ s/^(\w+)-//;
+    # Set up names
     my $fname = $name;
     $fname =~ s!-!/!g;
 
-    $self->name("$RTx-$name")
+    $self->name( $name )
         unless $self->name;
-    $self->all_from( -e "$name.pm" ? "$name.pm" : "lib/$RTx/$fname.pm" )
+    $self->all_from( "lib/$fname.pm" )
         unless $self->version;
-    $self->abstract("RT $name Extension")
+    $self->abstract("$name Extension")
         unless $self->abstract;
-
-    my @prefixes = (qw(/opt /usr/local /home /usr /sw ));
-    my $prefix   = $ENV{PREFIX};
-    @ARGV = grep { /PREFIX=(.*)/ ? ( ( $prefix = $1 ), 0 ) : 1 } @ARGV;
-
-    if ($prefix) {
-        $RT::LocalPath = $prefix;
-        $INC{'RT.pm'} = "$RT::LocalPath/lib/RT.pm";
-    } else {
-        local @INC = (
-            $ENV{RTHOME} ? ( $ENV{RTHOME}, "$ENV{RTHOME}/lib" ) : (),
-            @INC,
-            map { ( "$_/rt4/lib", "$_/lib/rt4", "$_/rt3/lib", "$_/lib/rt3", "$_/lib" )
-                } grep $_, @prefixes
-        );
-        until ( eval { require RT; $RT::LocalPath } ) {
-            warn
-                "Cannot find the location of RT.pm that defines \$RT::LocalPath in: @INC\n";
-            $_ = $self->prompt("Path to directory containing your RT.pm:") or exit;
-            $_ =~ s/\/RT\.pm$//;
-            push @INC, $_, "$_/rt3/lib", "$_/lib/rt3", "$_/lib";
-        }
+    unless ( $extra_args->{no_readme_generation} ) {
+        $self->readme_from( "lib/$fname.pm",
+                            { options => [ quotes => "none" ] } );
+    }
+    $self->add_metadata("x_module_install_rtx_version", $VERSION );
+
+    # Try to find RT.pm
+    my @prefixes = qw( /opt /usr/local /home /usr /sw /usr/share/request-tracker4);
+    $ENV{RTHOME} =~ s{/RT\.pm$}{} if defined $ENV{RTHOME};
+    $ENV{RTHOME} =~ s{/lib/?$}{}  if defined $ENV{RTHOME};
+    my @try = $ENV{RTHOME} ? ($ENV{RTHOME}, "$ENV{RTHOME}/lib") : ();
+    while (1) {
+        my @look = @INC;
+        unshift @look, grep {defined and -d $_} @try;
+        push @look, grep {defined and -d $_}
+            map { ( "$_/rt4/lib", "$_/lib/rt4", "$_/lib" ) } @prefixes;
+        last if eval {local @INC = @look; require RT; $RT::LocalLibPath};
+
+        warn
+            "Cannot find the location of RT.pm that defines \$RT::LocalPath in: @look\n";
+        my $given = $self->prompt("Path to directory containing your RT.pm:") or exit;
+        $given =~ s{/RT\.pm$}{};
+        $given =~ s{/lib/?$}{};
+        @try = ($given, "$given/lib");
     }
 
-    my $lib_path = File::Basename::dirname( $INC{'RT.pm'} );
-    my $local_lib_path = "$RT::LocalPath/lib";
     print "Using RT configuration from $INC{'RT.pm'}:\n";
-    unshift @INC, "$RT::LocalPath/lib" if $RT::LocalPath;
-    unshift @INC, $lib_path;
-
-    $RT::LocalVarPath    ||= $RT::VarPath;
-    $RT::LocalPoPath     ||= $RT::LocalLexiconPath;
-    $RT::LocalHtmlPath   ||= $RT::MasonComponentRoot;
-    $RT::LocalStaticPath ||= $RT::StaticPath;
-    $RT::LocalLibPath    ||= "$RT::LocalPath/lib";
 
-    my $with_subdirs = $ENV{WITH_SUBDIRS};
-    @ARGV = grep { /WITH_SUBDIRS=(.*)/ ? ( ( $with_subdirs = $1 ), 0 ) : 1 }
-        @ARGV;
+    my $local_lib_path = $RT::LocalLibPath;
+    unshift @INC, $local_lib_path;
+    my $lib_path = File::Basename::dirname( $INC{'RT.pm'} );
+    unshift @INC, $lib_path;
 
-    my %subdirs;
-    %subdirs = map { $_ => 1 } split( /\s*,\s*/, $with_subdirs )
-        if defined $with_subdirs;
-    unless ( keys %subdirs ) {
-        $subdirs{$_} = 1 foreach grep -d "$FindBin::Bin/$_", @DIRS;
+    # Set a baseline minimum version
+    unless ( $extra_args->{deprecated_rt} ) {
+        $self->requires_rt('4.0.0');
     }
 
-    # If we're running on RT 3.8 with plugin support, we really wany
-    # to install libs, mason templates and po files into plugin specific
-    # directories
+    # Installation locations
     my %path;
-    if ( $RT::LocalPluginPath ) {
-        die "Because of bugs in RT 3.8.0 this extension can not be installed.\n"
-            ."Upgrade to RT 3.8.1 or newer.\n" if $RT::VERSION =~ /^3\.8\.0/;
-        $path{$_} = $RT::LocalPluginPath . "/$original_name/$_"
-            foreach @DIRS;
-    } else {
-        foreach ( @DIRS ) {
-            no strict 'refs';
-            my $varname = "RT::Local" . ucfirst($_) . "Path";
-            $path{$_} = ${$varname} || "$RT::LocalPath/$_";
-        }
+    $path{$_} = $RT::LocalPluginPath . "/$name/$_"
+        foreach @DIRS;
 
-        $path{$_} .= "/$name" for grep $path{$_}, qw(etc po var);
-    }
+    # Copy RT 4.2.0 static files into NoAuth; insufficient for
+    # images, but good enough for css and js.
+    $path{static} = "$path{html}/NoAuth/"
+        unless $RT::StaticPath;
+
+    # Delete the ones we don't need
+    delete $path{$_} for grep {not -d "$FindBin::Bin/$_"} keys %path;
 
     my %index = map { $_ => 1 } @INDEX_DIRS;
     $self->no_index( directory => $_ ) foreach grep !$index{$_}, @DIRS;
 
     my $args = join ', ', map "q($_)", map { ($_, $path{$_}) }
-        grep $subdirs{$_}, keys %path;
+        sort keys %path;
 
-    print "./$_\t=> $path{$_}\n" for sort keys %subdirs;
+    printf "%-10s => %s\n", $_, $path{$_} for sort keys %path;
 
-    if ( my @dirs = map { ( -D => $_ ) } grep $subdirs{$_}, qw(bin html sbin) ) {
+    if ( my @dirs = map { ( -D => $_ ) } grep $path{$_}, qw(bin html sbin etc) ) {
         my @po = map { ( -o => $_ ) }
             grep -f,
             File::Glob::bsd_glob("po/*.po");
@@ -116,12 +100,15 @@ lexicons ::
 .
     }
 
+    $self->include('Module::Install::RTx::Runtime') if $self->admin;
+    $self->include_deps( 'YAML::Tiny', 0 ) if $self->admin;
     my $postamble = << ".";
 install ::
+\t\$(NOECHO) \$(PERL) -Ilib -I"$local_lib_path" -I"$lib_path" -Iinc -MModule::Install::RTx::Runtime -e"RTxPlugin()"
 \t\$(NOECHO) \$(PERL) -MExtUtils::Install -e \"install({$args})\"
 .
 
-    if ( $subdirs{var} and -d $RT::MasonDataDir ) {
+    if ( $path{var} and -d $RT::MasonDataDir ) {
         my ( $uid, $gid ) = ( stat($RT::MasonDataDir) )[ 4, 5 ];
         $postamble .= << ".";
 \t\$(NOECHO) chown -R $uid:$gid $path{var}
@@ -136,16 +123,16 @@ install ::
         $has_etc{acl}++;
     }
     if ( -e 'etc/initialdata' ) { $has_etc{initialdata}++; }
-    if ( grep { /\d+\.\d+\.\d+.*$/ } glob('etc/upgrade/*.*.*') ) {
+    if ( grep { /\d+\.\d+(\.\d+)?.*$/ } glob('etc/upgrade/*.*') ) {
         $has_etc{upgrade}++;
     }
 
     $self->postamble("$postamble\n");
-    unless ( $subdirs{'lib'} ) {
-        $self->makemaker_args( PM => { "" => "" }, );
-    } else {
+    if ( $path{lib} ) {
         $self->makemaker_args( INSTALLSITELIB => $path{'lib'} );
         $self->makemaker_args( INSTALLARCHLIB => $path{'lib'} );
+    } else {
+        $self->makemaker_args( PM => { "" => "" }, );
     }
 
     $self->makemaker_args( INSTALLSITEMAN1DIR => "$RT::LocalPath/man/man1" );
@@ -153,47 +140,96 @@ install ::
     $self->makemaker_args( INSTALLSITEARCH => "$RT::LocalPath/man" );
 
     if (%has_etc) {
-        $self->load('RTxInitDB');
         print "For first-time installation, type 'make initdb'.\n";
         my $initdb = '';
         $initdb .= <<"." if $has_etc{schema};
-\t\$(NOECHO) \$(PERL) -Ilib -I"$local_lib_path" -I"$lib_path" -Minc::Module::Install -e"RTxInitDB(qw(schema \$(NAME) \$(VERSION)))"
+\t\$(NOECHO) \$(PERL) -Ilib -I"$local_lib_path" -I"$lib_path" -Iinc -MModule::Install::RTx::Runtime -e"RTxDatabase(qw(schema \$(NAME) \$(VERSION)))"
 .
         $initdb .= <<"." if $has_etc{acl};
-\t\$(NOECHO) \$(PERL) -Ilib -I"$local_lib_path" -I"$lib_path" -Minc::Module::Install -e"RTxInitDB(qw(acl \$(NAME) \$(VERSION)))"
+\t\$(NOECHO) \$(PERL) -Ilib -I"$local_lib_path" -I"$lib_path" -Iinc -MModule::Install::RTx::Runtime -e"RTxDatabase(qw(acl \$(NAME) \$(VERSION)))"
 .
         $initdb .= <<"." if $has_etc{initialdata};
-\t\$(NOECHO) \$(PERL) -Ilib -I"$local_lib_path" -I"$lib_path" -Minc::Module::Install -e"RTxInitDB(qw(insert \$(NAME) \$(VERSION)))"
+\t\$(NOECHO) \$(PERL) -Ilib -I"$local_lib_path" -I"$lib_path" -Iinc -MModule::Install::RTx::Runtime -e"RTxDatabase(qw(insert \$(NAME) \$(VERSION)))"
 .
         $self->postamble("initdb ::\n$initdb\n");
         $self->postamble("initialize-database ::\n$initdb\n");
         if ($has_etc{upgrade}) {
             print "To upgrade from a previous version of this extension, use 'make upgrade-database'\n";
-            my $upgradedb = qq|\t\$(NOECHO) \$(PERL) -Ilib -I"$local_lib_path" -I"$lib_path" -Minc::Module::Install -e"RTxInitDB(qw(upgrade \$(NAME) \$(VERSION)))"\n|;
+            my $upgradedb = qq|\t\$(NOECHO) \$(PERL) -Ilib -I"$local_lib_path" -I"$lib_path" -Iinc -MModule::Install::RTx::Runtime -e"RTxDatabase(qw(upgrade \$(NAME) \$(VERSION)))"\n|;
             $self->postamble("upgrade-database ::\n$upgradedb\n");
             $self->postamble("upgradedb ::\n$upgradedb\n");
         }
     }
+
 }
 
 sub requires_rt {
     my ($self,$version) = @_;
 
+    _load_rt_handle();
+
+    if ($self->is_admin) {
+        $self->add_metadata("x_requires_rt", $version);
+        my @sorted = sort RT::Handle::cmp_version $version,'4.0.0';
+        $self->perl_version('5.008003') if $sorted[0] eq '4.0.0'
+            and (not $self->perl_version or '5.008003' > $self->perl_version);
+        @sorted = sort RT::Handle::cmp_version $version,'4.2.0';
+        $self->perl_version('5.010001') if $sorted[0] eq '4.2.0'
+            and (not $self->perl_version or '5.010001' > $self->perl_version);
+    }
+
     # if we're exactly the same version as what we want, silently return
     return if ($version eq $RT::VERSION);
 
-    _load_rt_handle();
     my @sorted = sort RT::Handle::cmp_version $version,$RT::VERSION;
 
     if ($sorted[-1] eq $version) {
-        # should we die?
-        die "\nWarning: prerequisite RT $version not found. Your installed version of RT ($RT::VERSION) is too old.\n\n";
+        die <<"EOT";
+
+**** Error: This extension requires RT $version. Your installed version
+            of RT ($RT::VERSION) is too old.
+
+EOT
+    }
+}
+
+sub requires_rt_plugin {
+    my $self = shift;
+    my ( $plugin ) = @_;
+
+    if ($self->is_admin) {
+        my $plugins = $self->Meta->{values}{"x_requires_rt_plugins"} || [];
+        push @{$plugins}, $plugin;
+        $self->add_metadata("x_requires_rt_plugins", $plugins);
     }
+
+    my $path = $plugin;
+    $path =~ s{\:\:}{-}g;
+    $path = "$RT::LocalPluginPath/$path/lib";
+    if ( -e $path ) {
+        unshift @INC, $path;
+    } else {
+        my $name = $self->name;
+        warn <<"EOT";
+
+**** Warning: $name requires that the $plugin plugin be installed and
+              enabled; it does not appear to be installed.
+
+EOT
+    }
+    $self->requires(@_);
 }
 
 sub rt_too_new {
     my ($self,$version,$msg) = @_;
-    $msg ||= "Your version %s is too new, this extension requires a release of RT older than %s\n";
+    my $name = $self->name;
+    $msg ||= <<EOT;
+
+**** Error: Your installed version of RT (%s) is too new; this extension
+            only works with versions older than %s.
+
+EOT
+    $self->add_metadata("x_rt_too_new", $version) if $self->is_admin;
 
     _load_rt_handle();
     my @sorted = sort RT::Handle::cmp_version $version,$RT::VERSION;
@@ -222,4 +258,4 @@ sub _load_rt_handle {
 
 __END__
 
-#line 362
+#line 390
diff --git a/inc/Module/Install/Win32.pm b/inc/Module/Install/Win32.pm
index eeaa3fe..e48c32d 100644
--- a/inc/Module/Install/Win32.pm
+++ b/inc/Module/Install/Win32.pm
@@ -6,7 +6,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.06';
+	$VERSION = '1.12';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
diff --git a/inc/Module/Install/WriteAll.pm b/inc/Module/Install/WriteAll.pm
index 85d8018..409ef40 100644
--- a/inc/Module/Install/WriteAll.pm
+++ b/inc/Module/Install/WriteAll.pm
@@ -6,7 +6,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.06';
+	$VERSION = '1.12';
 	@ISA     = qw{Module::Install::Base};
 	$ISCORE  = 1;
 }
diff --git a/lib/RT/Extension/AdminConditionsAndActions.pm b/lib/RT/Extension/AdminConditionsAndActions.pm
index dc1b51e..6408e47 100644
--- a/lib/RT/Extension/AdminConditionsAndActions.pm
+++ b/lib/RT/Extension/AdminConditionsAndActions.pm
@@ -3,7 +3,7 @@ use warnings;
 
 package RT::Extension::AdminConditionsAndActions;
 
-our $VERSION = '0.02';
+our $VERSION = '1.00';
 
 use RT::ScripCondition;
 no warnings 'redefine';
@@ -74,8 +74,7 @@ A web UI for managing RT conditions and actions.
 
 =head1 RT VERSIONS
 
-This version of this extension is intended to work with the following versions
-of RT: 4.0, 4.2
+This extension is compatible with RT 4.0 and RT 4.2.
 
 =head1 INSTALLATION
 
@@ -373,23 +372,26 @@ the methods available from ticket and transaction objects in your RT
 distribution and on the
 L<"Best Practical website"|http://docs.bestpractical.com>.
 
+=head1 AUTHOR
+
+Best Practical Solutions, LLC E<lt>modules at bestpractical.comE<gt>
+
 =head1 BUGS
 
 All bugs should be reported via email to
-L<bug-RT-Extension-AdminConditionsAndActions at rt.cpan.org|mailto:bug-RT-Extension-AdminConditionsAndActions at rt.cpan.org>
-or via the web at
-L<rt.cpan.org|http://rt.cpan.org/Public/Dist/Display.html?Name=RT-Extension-AdminConditionsAndActions>.
 
-=head1 AUTHOR
+    L<bug-RT-Extension-AdminConditionsAndActions at rt.cpan.org|mailto:bug-RT-Extension-AdminConditionsAndActions at rt.cpan.org>
 
-sunnavy <sunnavy at bestpractical.com>
+or via the web at
 
-Jim Brandt <jbrandt at bestpractical.com>
+    L<rt.cpan.org|http://rt.cpan.org/Public/Dist/Display.html?Name=RT-Extension-AdminConditionsAndActions>.
 
 =head1 LICENSE AND COPYRIGHT
 
-Copyright 2013,2014 Best Practical Solutions, LLC.
+This software is Copyright (c) 2014 by Best Practical Solutions
 
 This is free software, licensed under:
 
   The GNU General Public License, Version 2, June 1991
+
+=cut

-----------------------------------------------------------------------


More information about the Bps-public-commit mailing list