Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 30 additions & 16 deletions src/args.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@

/// 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 @@
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.as_deref() {
if edit != "false" {
let msg = std::fs::read_to_string(edit)
.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,30 @@
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.to.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 default_path = std::path::PathBuf::from(".git").join("COMMIT_EDITMSG");
let msg = std::fs::read_to_string(&default_path).expect(

Check warning on line 90 in src/args.rs

View workflow job for this annotation

GitHub Actions / clippy

function call inside of `expect`

Check warning on line 90 in src/args.rs

View workflow job for this annotation

GitHub Actions / clippy

function call inside of `expect`

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [clippy] clippy::expect_fun_call reported by reviewdog 🐶
function call inside of expect

format!(
"Failed to read commit message from {}",
default_path.display()
)
.as_str(),
);
Ok(vec![Message::new(msg)])
}
}
Loading