From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
To: "Strawbridge, Michael" <Michael.Strawbridge@amd.com>
Cc: "git@vger.kernel.org" <git@vger.kernel.org>,
"Tuikov, Luben" <Luben.Tuikov@amd.com>,
Junio C Hamano <gitster@pobox.com>
Subject: Re: [PATCH v5 1/2] send-email: refactor header generation functions
Date: Tue, 17 Jan 2023 14:20:58 +0100 [thread overview]
Message-ID: <230117.86wn5lxpl0.gmgdl@evledraar.gmail.com> (raw)
In-Reply-To: <20230110211452.2568535-2-michael.strawbridge@amd.com>
On Tue, Jan 10 2023, Strawbridge, Michael wrote:
> Split process_file and send_message into easier to use functions.
> Making SMTP header information more widely available.
>
> Cc: Luben Tuikov <luben.tuikov@amd.com>
> Cc: Junio C Hamano <gitster@pobox.com>
> Signed-off-by: Michael Strawbridge <michael.strawbridge@amd.com>
> ---
> git-send-email.perl | 49 ++++++++++++++++++++++++++++-----------------
> 1 file changed, 31 insertions(+), 18 deletions(-)
>
> diff --git a/git-send-email.perl b/git-send-email.perl
> index 5861e99a6e..810dd1f1ce 100755
> --- a/git-send-email.perl
> +++ b/git-send-email.perl
> @@ -1495,16 +1495,7 @@ sub file_name_is_absolute {
> return File::Spec::Functions::file_name_is_absolute($path);
> }
>
> -# Prepares the email, then asks the user what to do.
> -#
> -# If the user chooses to send the email, it's sent and 1 is returned.
> -# If the user chooses not to send the email, 0 is returned.
> -# If the user decides they want to make further edits, -1 is returned and the
> -# caller is expected to call send_message again after the edits are performed.
> -#
> -# If an error occurs sending the email, this just dies.
> -
> -sub send_message {
> +sub gen_header {
> my @recipients = unique_email_list(@to);
> @cc = (grep { my $cc = extract_valid_address_or_die($_);
> not grep { $cc eq $_ || $_ =~ /<\Q${cc}\E>$/ } @recipients
> @@ -1546,6 +1537,22 @@ sub send_message {
> if (@xh) {
> $header .= join("\n", @xh) . "\n";
> }
> + my $recipients_ref = \@recipients;
> + return ($recipients_ref, $to, $date, $gitversion, $cc, $ccline, $header);
> +}
> +
> +# Prepares the email, then asks the user what to do.
> +#
> +# If the user chooses to send the email, it's sent and 1 is returned.
> +# If the user chooses not to send the email, 0 is returned.
> +# If the user decides they want to make further edits, -1 is returned and the
> +# caller is expected to call send_message again after the edits are performed.
> +#
> +# If an error occurs sending the email, this just dies.
> +
> +sub send_message {
> + my ($recipients_ref, $to, $date, $gitversion, $cc, $ccline, $header) = gen_header();
This makes the diff smaller, but if we're refactoring these functions to
return arguments it's probably better to return a hash reference rather
than remembering all the parameter names.
But in this case it's probably fine...
> + my @recipients = @$recipients_ref;
>
> my @sendmail_parameters = ('-i', @recipients);
> my $raw_from = $sender;
> @@ -1735,11 +1742,8 @@ sub send_message {
> $references = $initial_in_reply_to || '';
> $message_num = 0;
>
> -# Prepares the email, prompts the user, sends it out
> -# Returns 0 if an edit was done and the function should be called again, or 1
> -# otherwise.
> -sub process_file {
> - my ($t) = @_;
> +sub pre_process_file {
> + my ($t, $quiet) = @_;
This, I think, is an anti-pattern in this file. We can just read the
"$quiet" and other things that we set up when we parse the parameters as
globals, we don't need to pass them as named parameters.
It doesn't help readability to shadow that variable with another lexical
here below:
> [...]
> +}
> +
> +# Prepares the email, prompts the user, sends it out
> +# Returns 0 if an edit was done and the function should be called again, or 1
> +# otherwise.
> +sub process_file {
> + my ($t) = @_;
> +
> + pre_process_file($t, $quiet);
>
> my $message_was_sent = send_message();
> if ($message_was_sent == -1) {
> @@ -2002,7 +2015,7 @@ sub process_file {
> # Execute a command (e.g. $to_cmd) to get a list of email addresses
> # and return a results array
> sub recipients_cmd {
> - my ($prefix, $what, $cmd, $file) = @_;
> + my ($prefix, $what, $cmd, $file, $quiet) = @_;
>
> my @addresses = ();
> open my $fh, "-|", "$cmd \Q$file\E"
next prev parent reply other threads:[~2023-01-17 13:23 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-10 21:16 [PATCH v5 0/2] send-email: expose header information to git-send-email's sendemail-validate hook Strawbridge, Michael
2023-01-10 21:16 ` [PATCH v5 1/2] send-email: refactor header generation functions Strawbridge, Michael
2023-01-17 13:20 ` Ævar Arnfjörð Bjarmason [this message]
2023-01-17 15:13 ` Junio C Hamano
2023-01-17 21:36 ` Strawbridge, Michael
2023-01-10 21:16 ` [PATCH v5 2/2] send-email: expose header information to git-send-email's sendemail-validate hook Strawbridge, Michael
2023-01-14 1:17 ` Junio C Hamano
2023-01-14 16:03 ` Junio C Hamano
2023-01-14 16:06 ` Junio C Hamano
2023-01-15 3:34 ` Junio C Hamano
2023-01-17 4:09 ` Luben Tuikov
2023-01-17 4:29 ` Junio C Hamano
2023-01-17 4:56 ` Luben Tuikov
2023-01-17 13:23 ` Ævar Arnfjörð Bjarmason
2023-01-17 21:58 ` Strawbridge, Michael
2023-01-17 1:49 ` [PATCH v5 0/2] " Strawbridge, Michael
-- strict thread matches above, loose matches on Subject: below --
2023-01-17 1:37 Strawbridge, Michael
2023-01-17 1:37 ` [PATCH v5 1/2] send-email: refactor header generation functions Strawbridge, Michael
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=230117.86wn5lxpl0.gmgdl@evledraar.gmail.com \
--to=avarab@gmail.com \
--cc=Luben.Tuikov@amd.com \
--cc=Michael.Strawbridge@amd.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).