Implement sending of patches
This commit is contained in:
parent
5d1d7c5042
commit
0ef5b693e2
1 changed files with 39 additions and 0 deletions
39
src/main.rs
39
src/main.rs
|
|
@ -34,8 +34,11 @@ enum Command {
|
||||||
/// Format a patch. alias "p"
|
/// Format a patch. alias "p"
|
||||||
#[command(alias = "p")]
|
#[command(alias = "p")]
|
||||||
FormatPatch(FormatPatch),
|
FormatPatch(FormatPatch),
|
||||||
|
/// List all currently known patch series
|
||||||
#[command(alias = "ls")]
|
#[command(alias = "ls")]
|
||||||
List(List),
|
List(List),
|
||||||
|
/// Send a patch series by mail
|
||||||
|
Send(Send),
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Args, Debug)]
|
#[derive(Args, Debug)]
|
||||||
|
|
@ -44,6 +47,18 @@ struct List {
|
||||||
verbose: bool,
|
verbose: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Args, Debug)]
|
||||||
|
struct Send {
|
||||||
|
#[arg(
|
||||||
|
short,
|
||||||
|
long,
|
||||||
|
help = "Version of the patchset to set. Defaults to the latest version"
|
||||||
|
)]
|
||||||
|
version: Option<u64>,
|
||||||
|
#[arg(help = "Patch series to send")]
|
||||||
|
series: String,
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Args, Debug)]
|
#[derive(Args, Debug)]
|
||||||
struct FormatPatch {
|
struct FormatPatch {
|
||||||
#[arg(short, long, help = "Branch to use (defaults to the current branch)")]
|
#[arg(short, long, help = "Branch to use (defaults to the current branch)")]
|
||||||
|
|
@ -75,6 +90,7 @@ struct FormatPatch {
|
||||||
|
|
||||||
#[derive(Debug, serde::Deserialize)]
|
#[derive(Debug, serde::Deserialize)]
|
||||||
struct GsmConfig {
|
struct GsmConfig {
|
||||||
|
sendmail_args: Option<Vec<String>>,
|
||||||
editor: String,
|
editor: String,
|
||||||
repo_url_base: String,
|
repo_url_base: String,
|
||||||
component: Option<String>,
|
component: Option<String>,
|
||||||
|
|
@ -475,6 +491,29 @@ fn main() -> Result<()> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
Command::Send(send) => {
|
||||||
|
let branch_dir = patch_dir.join(&send.series);
|
||||||
|
let version = match send.version {
|
||||||
|
Some(v) => v,
|
||||||
|
None => match latest_version(&branch_dir)? {
|
||||||
|
None => return Err(miette!("No patch set for the branch {}", send.series)),
|
||||||
|
Some(v) => v,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
let version_dir = &branch_dir.join(&version.to_string());
|
||||||
|
let version_dir = version_dir.to_str().ok_or(miette!("Path is not UTF-8"))?;
|
||||||
|
|
||||||
|
let mut sendmail_args = vec!["send-email"];
|
||||||
|
if let Some(args) = &config.sendmail_args {
|
||||||
|
sendmail_args.extend(args.iter().map(|s| s.deref()))
|
||||||
|
}
|
||||||
|
sendmail_args.push(version_dir);
|
||||||
|
|
||||||
|
git_cd(&sendmail_args).wrap_err("Could not send mails")?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue