Skip to content

Commit

Permalink
fix(cli): edit option accepts argument
Browse files Browse the repository at this point in the history
Signed-off-by: KeisukeYamashita <[email protected]>
  • Loading branch information
KeisukeYamashita committed Oct 29, 2024
1 parent 893e009 commit 80bd8b8
Showing 1 changed file with 24 additions and 16 deletions.
40 changes: 24 additions & 16 deletions src/args.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ pub struct Args {

/// Read last commit from the specified file or fallbacks to ./.git/COMMIT_EDITMSG
#[arg(short = 'e', long)]
pub edit: bool,
pub edit: Option<String>,

/// Lower end of the commit range to lint
#[arg(short = 'f', long)]
Expand All @@ -53,10 +53,12 @@ impl Args {
pub fn read(&self) -> Result<Vec<Message>, Error> {
// Check first whether or not the --edit option was supplied. When running from tooling such as
// `pre-commit`, stdin exists, so this needs to come first.
if self.edit {
let msg = std::fs::read_to_string("./.git/COMMIT_EDITMSG")
.expect("Failed to read './.git/COMMIT_EDITMSG'");
return Ok(vec![Message::new(msg)]);
if let Some(edit) = self.edit.clone() {
if edit != "false" {
let msg = std::fs::read_to_string(edit.clone())
.expect(format!("Failed to read commit message from {}", edit).as_str());

Check warning on line 59 in src/args.rs

View workflow job for this annotation

GitHub Actions / clippy

function call inside of `expect`

Check warning on line 59 in src/args.rs

View workflow job for this annotation

GitHub Actions / clippy

function call inside of `expect`
return Ok(vec![Message::new(msg)]);
}
}

// Otherwise, check for stdin and use the incoming text buffer from there if so.
Expand All @@ -68,18 +70,24 @@ impl Args {
return Ok(vec![Message::new(buffer)]);
}

// And if none of the above, we're expecting to be reading directly from Git...
let config = ReadCommitMessageOptions {
from: self.from.clone(),
path: self.cwd.clone(),
to: self.to.clone(),
};
if self.from.is_some() || self.from.is_some() {
// Reading directly from Git if from or to is specified.
let config = ReadCommitMessageOptions {
from: self.from.clone(),
path: self.cwd.clone(),
to: self.to.clone(),
};

let messages = git::read(config)
.iter()
.map(|s| Message::new(s.to_string()))
.collect();
let messages = git::read(config)
.iter()
.map(|s| Message::new(s.to_string()))
.collect();

Ok(messages)
return Ok(messages);
}

let msg = std::fs::read_to_string("./.git/COMMIT_EDITMSG")
.expect("Failed to read commit message from ./.git/COMMIT_EDITMSG");
return Ok(vec![Message::new(msg)]);

Check warning on line 91 in src/args.rs

View workflow job for this annotation

GitHub Actions / clippy

unneeded `return` statement

Check warning on line 91 in src/args.rs

View workflow job for this annotation

GitHub Actions / clippy

unneeded `return` statement
}
}

0 comments on commit 80bd8b8

Please sign in to comment.