From 73b627c73683fcea0e5fcfcee480414ebb318d28 Mon Sep 17 00:00:00 2001 From: Josh Triplett Date: Fri, 16 Sep 2016 11:10:27 -0700 Subject: [PATCH] format: Handle empty subject-prefix Don't write "[] " with an empty subject-prefix, but do write [v2] or [M/N] if needed. --- src/main.rs | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/src/main.rs b/src/main.rs index 57a651d96fa4b83fa8687a7c09f0aa4fbd4d7c07..65b0aeecacd92f2e328e381429622f92e12dc0bd 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1069,6 +1069,14 @@ fn mail_signature() -> String { format!("-- \ngit-series {}", crate_version!()) } +fn ensure_space(s: &str) -> &'static str { + if s.is_empty() || s.ends_with(' ') { + "" + } else { + " " + } +} + fn ensure_nl(s: &str) -> &'static str { if !s.ends_with('\n') { "\n" @@ -1119,7 +1127,9 @@ fn format(out: &mut Output, repo: &Repository, m: &ArgMatches) -> Result<()> { let version = m.value_of("reroll-count"); let subject_prefix = m.value_of("subject-prefix").unwrap_or("PATCH"); - let subject_patch = version.map_or(subject_prefix.to_string(), |n| format!("{} v{}", subject_prefix, n)); + let subject_patch = version.map_or( + subject_prefix.to_string(), + |n| format!("{}{}v{}", subject_prefix, ensure_space(&subject_prefix), n)); let file_prefix = version.map_or("".to_string(), |n| format!("v{}-", n)); let signature = mail_signature(); @@ -1159,7 +1169,7 @@ fn format(out: &mut Output, repo: &Repository, m: &ArgMatches) -> Result<()> { in_reply_to_message_id = Some(cover_message_id); try!(writeln!(out, "From: {} <{}>", committer_name, committer_email)); try!(writeln!(out, "Date: {}", date_822(committer.when()))); - try!(writeln!(out, "Subject: [{} 0/{}] {}\n", subject_patch, commits.len(), subject)); + try!(writeln!(out, "Subject: [{}{}0/{}] {}\n", subject_patch, ensure_space(&subject_patch), commits.len(), subject)); if !body.is_empty() { try!(writeln!(out, "{}", body)); } @@ -1205,12 +1215,16 @@ fn format(out: &mut Output, repo: &Repository, m: &ArgMatches) -> Result<()> { try!(writeln!(out, "From: {} <{}>", committer_name, committer_email)); } try!(writeln!(out, "Date: {}", date_822(commit_author.when()))); - let m_of_n = if commits.len() == 1 && cover_entry.is_none() { - "".to_string() + let prefix = if commits.len() == 1 && cover_entry.is_none() { + if subject_patch.is_empty() { + "".to_string() + } else { + format!("[{}] ", subject_patch) + } } else { - format!(" {}/{}", commit_num+1, commits.len()) + format!("[{}{}{}/{}] ", subject_patch, ensure_space(&subject_patch), commit_num+1, commits.len()) }; - try!(writeln!(out, "Subject: [{}{}] {}\n", subject_patch, m_of_n, subject)); + try!(writeln!(out, "Subject: {}{}\n", prefix, subject)); if !no_from && (commit_author_name != committer_name || commit_author_email != committer_email) { try!(writeln!(out, "From: {} <{}>\n", commit_author_name, commit_author_email));