From fc74207b943bfd1b3e36eab80f943e349b0eef36 Mon Sep 17 00:00:00 2001 From: Paul Delafosse Date: Tue, 29 Sep 2020 14:53:33 +0200 Subject: [PATCH] feat: move check edit to dedicated subcommand and fix rebase --- src/bin/cog.rs | 32 +++++++++++++++----------------- src/lib.rs | 9 +++++---- 2 files changed, 20 insertions(+), 21 deletions(-) diff --git a/src/bin/cog.rs b/src/bin/cog.rs index e9f1a510..da08b6d8 100644 --- a/src/bin/cog.rs +++ b/src/bin/cog.rs @@ -25,6 +25,7 @@ const SUBCOMMAND_SETTINGS: &[AppSettings] = &[ const BUMP: &str = "bump"; const CHECK: &str = "check"; +const EDIT: &str = "edit"; const LOG: &str = "log"; const VERIFY: &str = "verify"; const CHANGELOG: &str = "changelog"; @@ -34,13 +35,11 @@ fn main() -> Result<()> { let check_command = SubCommand::with_name(CHECK) .settings(SUBCOMMAND_SETTINGS) .about("Verify all commit message against the conventional commit specification") - .arg( - Arg::with_name("edit") - .help("Interactively rename invalid commit message") - .short("e") - .long("edit"), - ) .display_order(1); + let edit_command = SubCommand::with_name(EDIT) + .settings(SUBCOMMAND_SETTINGS) + .about("Interactively rename invalid commit message") + .display_order(2); let log_command = SubCommand::with_name(LOG) .settings(SUBCOMMAND_SETTINGS) @@ -81,13 +80,13 @@ fn main() -> Result<()> { .short("e") .long("no-error"), ) - .display_order(2); + .display_order(3); let verify_command = SubCommand::with_name(VERIFY) .settings(SUBCOMMAND_SETTINGS) .about("Verify a single commit message") .arg(Arg::with_name("message").help("The commit message")) - .display_order(3); + .display_order(4); let changelog_command = SubCommand::with_name(CHANGELOG) .settings(SUBCOMMAND_SETTINGS) @@ -106,7 +105,7 @@ fn main() -> Result<()> { .long("to") .takes_value(true), ) - .display_order(4); + .display_order(5); let bump_command = SubCommand::with_name(BUMP) .settings(SUBCOMMAND_SETTINGS) @@ -147,7 +146,7 @@ fn main() -> Result<()> { .long("minor") .required_unless_one(&["version", "auto", "patch", "major"]), ) - .display_order(5); + .display_order(6); let init_subcommand = SubCommand::with_name(INIT) .settings(SUBCOMMAND_SETTINGS) @@ -164,7 +163,7 @@ fn main() -> Result<()> { .author("Paul D. ") .about("A conventional commit compliant, changelog and commit generator") .long_about("Conventional Commit Git Terminal Overlord is a tool to help you use the conventional commit specification") - .subcommands(vec![verify_command, init_subcommand, check_command, log_command, changelog_command, bump_command]) + .subcommands(vec![verify_command, init_subcommand, check_command, edit_command, log_command, changelog_command, bump_command]) .get_matches(); if let Some(subcommand) = matches.subcommand_name() { @@ -208,12 +207,11 @@ fn main() -> Result<()> { CHECK => { let cocogitto = CocoGitto::get()?; - let subcommand = matches.subcommand_matches(CHECK).unwrap(); - if subcommand.is_present("edit") { - cocogitto.check_and_edit()?; - } else { - cocogitto.check()? - } + cocogitto.check()? + } + EDIT => { + let cocogitto = CocoGitto::get()?; + cocogitto.check_and_edit()?; } LOG => { let cocogitto = CocoGitto::get()?; diff --git a/src/lib.rs b/src/lib.rs index 341e48db..ffdf8b5b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -172,12 +172,12 @@ impl CocoGitto { pub fn check_and_edit(&self) -> Result<()> { let from = self.repository.get_first_commit()?; - let head = self.repository.get_head_commit_oid()?; - let commits = self.repository.get_commit_range(from, head)?; + let head = self.repository.get_head_commit()?; + let commits = self.repository.get_commit_range(from, head.id())?; let editor = std::env::var("EDITOR")?; let dir = TempDir::new("cocogito")?; - let mut errored_commits: Vec = commits + let errored_commits: Vec = commits .iter() .map(|commit| { let conv_commit = Commit::from_git_commit(&commit); @@ -188,7 +188,7 @@ impl CocoGitto { .collect(); // Get the last commit oid on the list as a starting point for our rebase - let last_errored_commit = errored_commits.pop(); + let last_errored_commit = errored_commits.last(); if let Some(last_errored_commit) = last_errored_commit { let commit = self .repository @@ -203,6 +203,7 @@ impl CocoGitto { let commit = self.repository.0.find_annotated_commit(rebase_start)?; let mut options = RebaseOptions::new(); + let mut rebase = self.repository .0