[Bps-public-commit] RT-Client-CLI branch master updated. 4.4.3-7-g6a691ae

BPS Git Server git at git.bestpractical.com
Wed Jul 13 19:29:59 UTC 2022


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "RT-Client-CLI".

The branch, master has been updated
       via  6a691ae445e234f6849f4cd56af9022e61607a09 (commit)
       via  04a11bfa1766f3b25346a5819fe842a6ef10fe8d (commit)
       via  040d38c760969d8d1659477cbab10b765bb65e76 (commit)
       via  ac74da99ce6fb2c0376b08a4eff79ee35cdde3ff (commit)
      from  d5dac4576b680e08a765b8d141998905d81b120a (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 6a691ae445e234f6849f4cd56af9022e61607a09
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Thu Jul 14 03:05:24 2022 +0800

    Prep 5.0.3

diff --git a/Changes b/Changes
index 8454d97..dba3e73 100644
--- a/Changes
+++ b/Changes
@@ -1,5 +1,8 @@
 Revision history for RT-Client-CLI
 
+5.0.3 2022-07-13
+ - Include rt-mailgate
+
 4.4.3 2018-06-26
  - Respect value 0(#31290)
 
diff --git a/LICENSE b/LICENSE
index 3f17980..82994ce 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-This software is Copyright (c) 2014-2018 by -2018 by Best Practical Solutions, LLC.
+This software is Copyright (c) 2014-2022 by -2022 by Best Practical Solutions, LLC.
 
 This is free software, licensed under:
 
diff --git a/META.json b/META.json
index 2fa6128..aef6018 100644
--- a/META.json
+++ b/META.json
@@ -1,10 +1,10 @@
 {
-   "abstract" : "Provides the official rt command line client",
+   "abstract" : "Provides the official rt and rt-mailgate command line clients",
    "author" : [
-      "-2018 by Best Practical Solutions, LLC"
+      "-2022 by Best Practical Solutions, LLC"
    ],
    "dynamic_config" : 0,
-   "generated_by" : "Dist::Milla version v1.0.20, Dist::Zilla version 6.011, CPAN::Meta::Converter version 2.150010",
+   "generated_by" : "Dist::Milla version v1.0.21, Dist::Zilla version 6.025, CPAN::Meta::Converter version 2.150010",
    "license" : [
       "gpl_2"
    ],
@@ -48,7 +48,7 @@
       },
       "develop" : {
          "requires" : {
-            "Dist::Milla" : "v1.0.20",
+            "Dist::Milla" : "v1.0.21",
             "Test::Pod" : "1.41"
          }
       },
@@ -86,14 +86,16 @@
          "web" : "https://github.com/bestpractical/rt-client-cli"
       }
    },
-   "version" : "4.4.3",
+   "version" : "5.0.3",
    "x_contributors" : [
       "Alex Vandiver <alexmv at bestpractical.com>",
       "sunnavy <sunnavy at bestpractical.com>",
       "Thomas Sibley <trs at bestpractical.com>",
       "Todd Wade <todd at bestpractical.com>"
    ],
-   "x_serialization_backend" : "Cpanel::JSON::XS version 4.02",
+   "x_generated_by_perl" : "v5.36.0",
+   "x_serialization_backend" : "Cpanel::JSON::XS version 4.29",
+   "x_spdx_expression" : "GPL-2.0-only",
    "x_static_install" : 1
 }
 
diff --git a/Makefile.PL b/Makefile.PL
index a868aa4..602c700 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -1,4 +1,4 @@
-# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v6.011.
+# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v6.025.
 use strict;
 use warnings;
 
@@ -7,14 +7,15 @@ use 5.008005;
 use ExtUtils::MakeMaker;
 
 my %WriteMakefileArgs = (
-  "ABSTRACT" => "Provides the official rt command line client",
-  "AUTHOR" => "-2018 by Best Practical Solutions, LLC",
+  "ABSTRACT" => "Provides the official rt and rt-mailgate command line clients",
+  "AUTHOR" => "-2022 by Best Practical Solutions, LLC",
   "CONFIGURE_REQUIRES" => {
     "ExtUtils::MakeMaker" => 0
   },
   "DISTNAME" => "RT-Client-CLI",
   "EXE_FILES" => [
-    "script/rt"
+    "script/rt",
+    "script/rt-mailgate"
   ],
   "LICENSE" => "gpl",
   "MIN_PERL_VERSION" => "5.008005",
@@ -34,7 +35,7 @@ my %WriteMakefileArgs = (
   "TEST_REQUIRES" => {
     "Test::More" => "0.88"
   },
-  "VERSION" => "4.4.3",
+  "VERSION" => "5.0.3",
   "test" => {
     "TESTS" => "t/*.t"
   }
diff --git a/README.md b/README.md
index fe6991b..e14bebd 100644
--- a/README.md
+++ b/README.md
@@ -1,25 +1,26 @@
 # NAME
 
-RT::Client::CLI - Provides the official rt command line client
+RT::Client::CLI - Provides the official rt and rt-mailgate command line clients
 
 # SYNOPSIS
 
-See [rt](https://metacpan.org/pod/rt).
+See [rt](https://metacpan.org/pod/rt) and [rt-mailgate](https://metacpan.org/pod/rt-mailgate).
 
 # DESCRIPTION
 
-RT::Client::CLI is a CPAN-ready package for the [rt](https://metacpan.org/pod/rt) command-line program
-that interacts with [RT](https://bestpractical.com/rt).
+RT::Client::CLI is a CPAN-ready package for the [rt](https://metacpan.org/pod/rt) and [rt-mailgate](https://metacpan.org/pod/rt-mailgate)
+command-line programs that interacts with [RT](https://bestpractical.com/rt).
 
 No code is changed from the program shipped with RT.  This is just an easy-to-
-install package when you want the [rt](https://metacpan.org/pod/rt) program on another computer.
+install package when you want the [rt](https://metacpan.org/pod/rt) and [rt-mailgate](https://metacpan.org/pod/rt-mailgate) programs on another
+computer.
 
 The version of this package is kept in lockstep with the corresponding RT
-version from which the included [rt](https://metacpan.org/pod/rt) was extracted.
+version from which the included commands were extracted.
 
 # COPYRIGHT
 
-Copyright 2014-2018 by Best Practical Solutions, LLC
+Copyright 2014-2022 by Best Practical Solutions, LLC
 
 # LICENSE
 
@@ -29,4 +30,5 @@ under the GNU General Public License, version 2.
 # SEE ALSO
 
 [RT](https://bestpractical.com/rt),
-[bin/rt source](https://github.com/bestpractical/rt/blob/stable/bin/rt.in)
+[bin/rt source](https://github.com/bestpractical/rt/blob/stable/bin/rt.in),
+[bin/rt-mailgate source](https://github.com/bestpractical/rt/blob/stable/bin/rt-mailgate.in)
diff --git a/lib/RT/Client/CLI.pm b/lib/RT/Client/CLI.pm
index 066beb5..0e65327 100644
--- a/lib/RT/Client/CLI.pm
+++ b/lib/RT/Client/CLI.pm
@@ -3,7 +3,7 @@ package RT::Client::CLI;
 use strict;
 use warnings;
 use 5.008_005;
-our $VERSION = '4.4.3';
+our $VERSION = '5.0.3';
 
 1;
 __END__
@@ -12,26 +12,27 @@ __END__
 
 =head1 NAME
 
-RT::Client::CLI - Provides the official rt command line client
+RT::Client::CLI - Provides the official rt and rt-mailgate command line clients
 
 =head1 SYNOPSIS
 
-See L<rt>.
+See L<rt> and L<rt-mailgate>.
 
 =head1 DESCRIPTION
 
-RT::Client::CLI is a CPAN-ready package for the L<rt> command-line program
-that interacts with L<RT|https://bestpractical.com/rt>.
+RT::Client::CLI is a CPAN-ready package for the L<rt> and L<rt-mailgate>
+command-line programs that interacts with L<RT|https://bestpractical.com/rt>.
 
 No code is changed from the program shipped with RT.  This is just an easy-to-
-install package when you want the L<rt> program on another computer.
+install package when you want the L<rt> and L<rt-mailgate> programs on another
+computer.
 
 The version of this package is kept in lockstep with the corresponding RT
-version from which the included L<rt> was extracted.
+version from which the included commands were extracted.
 
 =head1 COPYRIGHT
 
-Copyright 2014-2018 by Best Practical Solutions, LLC
+Copyright 2014-2022 by Best Practical Solutions, LLC
 
 =head1 LICENSE
 
@@ -41,6 +42,7 @@ under the GNU General Public License, version 2.
 =head1 SEE ALSO
 
 L<RT|https://bestpractical.com/rt>,
-L<bin/rt source|https://github.com/bestpractical/rt/blob/stable/bin/rt.in>
+L<bin/rt source|https://github.com/bestpractical/rt/blob/stable/bin/rt.in>,
+L<bin/rt-mailgate source|https://github.com/bestpractical/rt/blob/stable/bin/rt-mailgate.in>
 
 =cut

commit 04a11bfa1766f3b25346a5819fe842a6ef10fe8d
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Thu Jul 14 02:56:25 2022 +0800

    Update rt from 5.0.3

diff --git a/script/rt b/script/rt
index d00a16e..112cf37 100644
--- a/script/rt
+++ b/script/rt
@@ -3,7 +3,7 @@
 #
 # COPYRIGHT:
 #
-# This software is Copyright (c) 1996-2021 Best Practical Solutions, LLC
+# This software is Copyright (c) 1996-2022 Best Practical Solutions, LLC
 #                                          <sales at bestpractical.com>
 #
 # (Except where explicitly superseded by other copyright notices)

commit 040d38c760969d8d1659477cbab10b765bb65e76
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Thu Jul 14 02:55:37 2022 +0800

    Import rt-mailgate from 5.0.3

diff --git a/script/rt-mailgate b/script/rt-mailgate
new file mode 100644
index 0000000..9870b54
--- /dev/null
+++ b/script/rt-mailgate
@@ -0,0 +1,445 @@
+#!/usr/bin/env perl
+# BEGIN BPS TAGGED BLOCK {{{
+#
+# COPYRIGHT:
+#
+# This software is Copyright (c) 1996-2022 Best Practical Solutions, LLC
+#                                          <sales at bestpractical.com>
+#
+# (Except where explicitly superseded by other copyright notices)
+#
+#
+# LICENSE:
+#
+# This work is made available to you under the terms of Version 2 of
+# the GNU General Public License. A copy of that license should have
+# been provided with this software, but in any event can be snarfed
+# from www.gnu.org.
+#
+# This work is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 or visit their web page on the internet at
+# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+#
+#
+# CONTRIBUTION SUBMISSION POLICY:
+#
+# (The following paragraph is not intended to limit the rights granted
+# to you to modify and distribute this software under the terms of
+# the GNU General Public License and is only of importance to you if
+# you choose to contribute your changes and enhancements to the
+# community by submitting them to Best Practical Solutions, LLC.)
+#
+# By intentionally submitting any modifications, corrections or
+# derivatives to this work, or any other work intended for use with
+# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+# you are the copyright holder for those contributions and you grant
+# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+# royalty-free, perpetual, license to use, copy, create derivative
+# works based on those contributions, and sublicense and distribute
+# those contributions and any derivatives thereof.
+#
+# END BPS TAGGED BLOCK }}}
+=head1 NAME
+
+rt-mailgate - Mail interface to RT.
+
+=cut
+
+use strict;
+use warnings;
+
+use Getopt::Long;
+
+my $opts = { };
+GetOptions( $opts,   "queue=s", "action=s", "url=s",
+            "jar=s", "help",    "debug",    "extension=s",
+            "timeout=i", "verify-ssl!", "ca-file=s",
+          );
+
+my $gateway = RT::Client::MailGateway->new();
+
+$gateway->run($opts);
+
+package RT::Client::MailGateway;
+
+use LWP::UserAgent;
+use HTTP::Request::Common qw($DYNAMIC_FILE_UPLOAD);
+use File::Temp qw(tempfile tempdir);
+$DYNAMIC_FILE_UPLOAD = 1;
+
+use constant EX_TEMPFAIL => 75;
+use constant BUFFER_SIZE => 8192;
+
+sub new {
+    my $class = shift;
+    my $self = bless {}, $class;
+    return $self;
+}
+
+sub run {
+    my $self = shift;
+    my $opts = shift;
+
+    if ( $opts->{running_in_test_harness} ) {
+        $self->{running_in_test_harness} = 1;
+    }
+
+    $self->validate_cli_flags($opts);
+
+    my $ua          = $self->get_useragent($opts);
+    my $post_params = $self->setup_session($opts);
+    $self->upload_message( $ua => $post_params );
+    $self->exit_with_success();
+}
+
+sub exit_with_success {
+    my $self = shift;
+    if ( $self->{running_in_test_harness} ) {
+        return 1;
+    } else {
+        exit 0;
+    }
+}
+
+sub tempfail {
+    my $self = shift;
+    if ( $self->{running_in_test_harness} ) {
+        die "tempfail";
+    } else {
+
+        exit EX_TEMPFAIL;
+    }
+}
+
+sub permfail {
+    my $self = shift;
+    if ( $self->{running_in_test_harness} ) {
+        die "permfail";
+    } else {
+
+        exit 1;
+    }
+}
+
+sub validate_cli_flags {
+    my $self = shift;
+    my $opts = shift;
+    if ( $opts->{'help'} ) {
+        require Pod::Usage;
+        Pod::Usage::pod2usage( { verbose => 2 } );
+        return $self->permfail()
+            ;    # Don't want to succeed if this is really an email!
+    }
+
+    unless ( $opts->{'url'} ) {
+        print STDERR
+            "$0 invoked improperly\n\nNo 'url' provided to mail gateway!\n";
+        return $self->permfail();
+    }
+
+    $opts->{"verify-ssl"} = 1 unless defined $opts->{"verify-ssl"};
+}
+
+sub get_useragent {
+    my $self = shift;
+    my $opts = shift;
+    my $ua   = LWP::UserAgent->new();
+    $ua->agent("rt-mailgate/5.0.3 ");
+    $ua->cookie_jar( { file => $opts->{'jar'} } ) if $opts->{'jar'};
+
+    $ua->ssl_opts( verify_hostname => $opts->{'verify-ssl'}, SSL_verify_mode => $opts->{'verify-ssl'} );
+    $ua->ssl_opts( SSL_ca_file => $opts->{'ca-file'} )
+        if $opts->{'ca-file'};
+
+    return $ua;
+}
+
+sub setup_session {
+    my $self = shift;
+    my $opts = shift;
+    my %post_params;
+    foreach (qw(queue action)) {
+        $post_params{$_} = $opts->{$_} if defined $opts->{$_};
+    }
+
+    if ( ( $opts->{'extension'} || '' ) =~ /^(?:action|queue|ticket)$/i ) {
+        $post_params{ lc $opts->{'extension'} } = $ENV{'EXTENSION'}
+            || $opts->{ $opts->{'extension'} };
+    } elsif ( $opts->{'extension'} && $ENV{'EXTENSION'} ) {
+        print STDERR
+            "Value of the --extension argument is not action, queue or ticket"
+            . ", but environment variable EXTENSION is also defined. The former is ignored.\n";
+    }
+
+    # add ENV{'EXTENSION'} as X-RT-MailExtension to the message header
+    if ( my $value = ( $ENV{'EXTENSION'} || $opts->{'extension'} ) ) {
+
+        # prepare value to avoid MIME format breakage
+        # strip trailing newline symbols
+        $value =~ s/(\r*\n)+$//;
+
+        # make a correct multiline header field,
+        # with tabs in the beginning of each line
+        $value =~ s/(\r*\n)/$1\t/g;
+        $opts->{'headers'} .= "X-RT-Mail-Extension: $value\n";
+    }
+
+    # Read the message in from STDIN
+    # _raw_message is used for testing
+    my $message = $opts->{'_raw_message'} || $self->slurp_message();
+    unless ( $message->{'filename'} ) {
+        $post_params{'message'} = [
+                                 undef, '',
+                                 'Content-Type' => 'application/octet-stream',
+                                 Content        => ${ $message->{'content'} },
+        ];
+    } else {
+        $post_params{'message'} = [
+                                 $message->{'filename'}, '',
+                                 'Content-Type' => 'application/octet-stream',
+        ];
+    }
+
+    return \%post_params;
+}
+
+sub upload_message {
+    my $self        = shift;
+    my $ua          = shift;
+    my $post_params = shift;
+    my $full_url    = $opts->{'url'} . "/REST/1.0/NoAuth/mail-gateway";
+    print STDERR "$0: connecting to $full_url\n" if $opts->{'debug'};
+
+    $ua->timeout( exists( $opts->{'timeout'} ) ? $opts->{'timeout'} : 180 );
+    my $r = $ua->post( $full_url, $post_params, Content_Type => 'form-data' );
+
+    # Follow 3 redirects
+    my $n = 0;
+    while ($n++ < 3 and $r->is_redirect) {
+        $full_url = $r->header( "Location" );
+        $r = $ua->post( $full_url, $post_params, Content_Type => 'form-data' );
+    }
+
+    $self->check_failure($r);
+
+    my $content = $r->content;
+    print STDERR $content . "\n" if $opts->{'debug'};
+
+    return if ( $content =~ /^(ok|not ok)/ );
+
+ # It's not the server's fault if the mail is bogus. We just want to know that
+ # *something* came out of the server.
+    print STDERR <<EOF;
+RT server error.
+
+The RT server which handled your email did not behave as expected. It
+said:
+
+$content
+EOF
+
+    return $self->tempfail();
+}
+
+sub check_failure {
+    my $self = shift;
+    my $r    = shift;
+    return if $r->is_success;
+
+    print STDERR "HTTP request failed: @{[ $r->status_line ]}. "
+                ."Your webserver logs may have more information or there may be a network problem.\n";
+    print STDERR "\n$0: undefined server error\n" if $opts->{'debug'};
+    return $self->tempfail();
+}
+
+sub slurp_message {
+    my $self = shift;
+
+    local $@;
+
+    my %message;
+    my ( $fh, $filename )
+        = eval { tempfile( DIR => tempdir( CLEANUP => 1 ) ) };
+    if ( !$fh || $@ ) {
+        print STDERR "$0: Couldn't create temp file, using memory\n";
+        print STDERR "error: $@\n" if $@;
+
+        my $message = \do { local ( @ARGV, $/ ); <STDIN> };
+        unless ( $$message =~ /\S/ ) {
+            print STDERR "$0: no message passed on STDIN\n";
+            $self->exit_with_success;
+        }
+        $$message = $opts->{'headers'} . $$message if $opts->{'headers'};
+        return ( { content => $message } );
+    }
+
+    binmode $fh;
+    binmode \*STDIN;
+
+    print $fh $opts->{'headers'} if $opts->{'headers'};
+
+    my $buf;
+    my $empty = 1;
+    while (1) {
+        my $status = read \*STDIN, $buf, BUFFER_SIZE;
+        unless ( defined $status ) {
+            print STDERR "$0: couldn't read message: $!\n";
+            return $self->tempfail();
+        } elsif ( !$status ) {
+            last;
+        }
+        $empty = 0 if $buf =~ /\S/;
+        print $fh $buf;
+    }
+    close $fh;
+
+    if ($empty) {
+        print STDERR "$0: no message passed on STDIN\n";
+        $self->exit_with_success;
+    }
+    print STDERR "$0: temp file is '$filename'\n" if $opts->{'debug'};
+    return ( { filename => $filename } );
+}
+
+=head1 SYNOPSIS
+
+    rt-mailgate --help : this text
+
+Usual invocation (from MTA):
+
+    rt-mailgate --action (correspond|comment|...) --queue queuename
+                --url http://your.rt.server/
+                [ --debug ]
+                [ --extension (queue|action|ticket) ]
+                [ --timeout seconds ]
+
+
+
+=head1 OPTIONS
+
+=over 3
+
+=item C<--action>
+
+Specifies what happens to email sent to this alias.  The avaliable basic
+actions are: C<correspond>, C<comment>.  Additional actions, such as
+C<take> or C<resolve>, may be available depending on your local
+C<@MailPlugins> configuration.
+
+You can execute two or more actions on a single message using a C<->
+separated list.  RT will execute the actions in the listed order.  For
+example you can use C<take-comment>, C<correspond-resolve> or
+C<take-comment-resolve> as actions.
+
+Note that C<take> and C<resolve> actions ignore message text if used
+alone.  Include a  C<comment> or C<correspond> action if you want RT
+to record the incoming message.
+
+The default action is C<correspond>.
+
+=item C<--queue>
+
+This flag determines which queue this alias should create a ticket in if no ticket identifier
+is found.
+
+=item C<--url>
+
+This flag tells the mail gateway where it can find your RT server. You should 
+probably use the same URL that users use to log into RT.  
+
+If you have a self-signed SSL certificate, you may also need to pass
+C<--ca-file> or C<--no-verify-ssl>, below.
+
+=item C<--ca-file> I<path>
+
+Specifies the path to the public SSL certificate for the certificate
+authority that should be used to verify the website's SSL certificate.
+If your webserver uses a self-signed certificate, you should
+preferentially use this option over C<--no-verify-ssl>, as it will
+ensure that the self-signed certificate that the mailgate is seeing the
+I<right> self-signed certificate.
+
+=item C<--no-verify-ssl>
+
+This flag tells the mail gateway to trust all SSL certificates,
+regardless of if their hostname matches the certificate, and regardless
+of CA.  This is required if you have a self-signed certificate, or some
+other certificate which is not traceable back to an certificate your
+system ultimitely trusts.
+
+=item C<--extension> OPTIONAL
+
+Some MTAs will route mail sent to user-foo at host or user+foo at host to user at host
+and present "foo" in the environment variable $EXTENSION. By specifying
+the value "queue" for this parameter, the queue this message should be
+submitted to will be set to the value of $EXTENSION. By specifying
+"ticket", $EXTENSION will be interpreted as the id of the ticket this message
+is related to.  "action" will allow the user to specify either "comment" or
+"correspond" in the address extension.
+
+=item C<--debug> OPTIONAL
+
+Print debugging output to standard error
+
+
+=item C<--timeout> OPTIONAL
+
+Configure the timeout for posting the message to the web server.  The
+default timeout is 3 minutes (180 seconds).
+
+=back
+
+
+=head1 DESCRIPTION
+
+The RT mail gateway is the primary mechanism for communicating with RT
+via email. This program simply directs the email to the RT web server,
+which handles filing correspondence and sending out any required mail.
+It is designed to be run as part of the mail delivery process, either
+called directly by the MTA or C<procmail>, or in a F<.forward> or
+equivalent.
+
+=head1 SETUP
+
+Much of the set up of the mail gateway depends on your MTA and mail
+routing configuration.
+
+You need to route mail to C<rt-mailgate> for the queues you're
+monitoring. For instance, if you're using F</etc/aliases> and you have a
+"bugs" queue, you will want something like this:
+
+    bugs:         "|rt-mailgate --queue bugs --action correspond
+              --url http://rt.mycorp.com/"
+
+    bugs-comment: "|rt-mailgate --queue bugs --action comment
+              --url http://rt.mycorp.com/"
+
+Note that you don't have to run your RT server on your mail server, as
+the mail gateway will happily relay to a different machine.
+
+=head1 ENVIRONMENT
+
+=over 4
+
+=item EXTENSION
+
+Some MTAs will route mail sent to user-foo at host or user+foo at host to user at host
+and present "foo" in the environment variable C<EXTENSION>. Mailgate adds value
+of this variable to message in the C<X-RT-Mail-Extension> field of the message
+header.
+
+See also C<--extension> option. Note that value of the environment variable is
+always added to the message header when it's not empty even if C<--extension>
+option is not provided.
+
+=back
+
+=cut
+

commit ac74da99ce6fb2c0376b08a4eff79ee35cdde3ff
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Thu Jul 14 02:54:37 2022 +0800

    Support to import mailgate from RT

diff --git a/devel/import-rt b/devel/import-rt
index dd12b2a..b5339e3 100755
--- a/devel/import-rt
+++ b/devel/import-rt
@@ -1,16 +1,20 @@
 #!/bin/bash
 VERSION=${1:-stable}
-SOURCE="https://raw.githubusercontent.com/bestpractical/rt/$VERSION/bin/rt.in"
 
-echo "Importing from $VERSION"
-echo "Downloading..."
-curl -s $SOURCE \
-    | perl -pe 's,\@PERL\@.*$,/usr/bin/env perl,;s,\@LOCAL_ETC_PATH\@,/usr/local/etc,g;' > script/rt
+for FILE in rt rt-mailgate
+do
+    SOURCE="https://raw.githubusercontent.com/bestpractical/rt/$VERSION/bin/$FILE.in"
+    echo "Importing $FILE from $VERSION"
+    echo "Downloading..."
+    BARE_VERSION=${VERSION/rt-/}
+    curl -s $SOURCE \
+        | perl -pe "s,\@PERL\@.*$,/usr/bin/env perl,;s,\@LOCAL_ETC_PATH\@,/usr/local/etc,g;s,\@RT_BIN_PATH_R\@/,,g;s,\@RT_VERSION_MAJOR\@.\@RT_VERSION_MINOR\@.\@RT_VERSION_PATCH\@,$BARE_VERSION,g;" > script/$FILE
 
-if [[ $? == 0 ]]; then
-    echo "Placeholders rewritten."
-    echo
-    echo "Please check the changes using \`git diff\`."
-else
-    echo "An error occurred!"
-fi
+    if [[ $? == 0 ]]; then
+        echo "Placeholders rewritten."
+        echo
+        echo "Please check the changes using \`git diff\`."
+    else
+        echo "An error occurred!"
+    fi
+done

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

Summary of changes:
 Changes              |   3 +
 LICENSE              |   2 +-
 META.json            |  14 +-
 Makefile.PL          |  11 +-
 README.md            |  18 ++-
 devel/import-rt      |  28 ++--
 lib/RT/Client/CLI.pm |  20 +--
 script/rt            |   2 +-
 script/rt-mailgate   | 445 +++++++++++++++++++++++++++++++++++++++++++++++++++
 9 files changed, 501 insertions(+), 42 deletions(-)
 create mode 100644 script/rt-mailgate


hooks/post-receive
-- 
RT-Client-CLI


More information about the Bps-public-commit mailing list