Merge pull request #745 from matthiasbeyer/libimagstorestdhook/git-commit-template
libimagstorestdhook/git: Provide better commit template message, including action and store id
This commit is contained in:
commit
172614004a
3 changed files with 16 additions and 6 deletions
|
@ -1,6 +1,7 @@
|
||||||
use toml::Value;
|
use toml::Value;
|
||||||
|
|
||||||
use libimagerror::into::IntoError;
|
use libimagerror::into::IntoError;
|
||||||
|
use libimagstore::storeid::StoreId;
|
||||||
|
|
||||||
use vcs::git::error::GitHookErrorKind as GHEK;
|
use vcs::git::error::GitHookErrorKind as GHEK;
|
||||||
use vcs::git::error::MapErrInto;
|
use vcs::git::error::MapErrInto;
|
||||||
|
@ -70,8 +71,17 @@ fn commit_default_msg<'a>(config: &'a Value, action: &'a StoreAction) -> &'a str
|
||||||
/// Get the commit template
|
/// Get the commit template
|
||||||
///
|
///
|
||||||
/// TODO: Implement good template string
|
/// TODO: Implement good template string
|
||||||
fn commit_template() -> &'static str {
|
fn commit_template(action: &StoreAction, id: &StoreId) -> String {
|
||||||
"Commit template"
|
format!(r#"
|
||||||
|
# Please commit your changes and remove these lines.
|
||||||
|
#
|
||||||
|
# You're about to commit changes via the {action} Hook
|
||||||
|
#
|
||||||
|
# Altered file: {id}
|
||||||
|
#
|
||||||
|
"#,
|
||||||
|
action = action,
|
||||||
|
id = id.local().display())
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Generate a commit message
|
/// Generate a commit message
|
||||||
|
@ -79,7 +89,7 @@ fn commit_template() -> &'static str {
|
||||||
/// Uses the functions `commit_interactive()` and `commit_with_editor()`
|
/// Uses the functions `commit_interactive()` and `commit_with_editor()`
|
||||||
/// or reads one from the commandline or uses the `commit_default_msg()` string to create a commit
|
/// or reads one from the commandline or uses the `commit_default_msg()` string to create a commit
|
||||||
/// message.
|
/// message.
|
||||||
pub fn commit_message(repo: &Repository, config: &Value, action: StoreAction) -> Result<String> {
|
pub fn commit_message(repo: &Repository, config: &Value, action: StoreAction, id: &StoreId) -> Result<String> {
|
||||||
use libimaginteraction::ask::ask_string;
|
use libimaginteraction::ask::ask_string;
|
||||||
use libimagutil::edit::edit_in_tmpfile_with_command;
|
use libimagutil::edit::edit_in_tmpfile_with_command;
|
||||||
use std::process::Command;
|
use std::process::Command;
|
||||||
|
@ -92,7 +102,7 @@ pub fn commit_message(repo: &Repository, config: &Value, action: StoreAction) ->
|
||||||
.map_err_into(GHEK::ConfigError)
|
.map_err_into(GHEK::ConfigError)
|
||||||
.map(Command::new)
|
.map(Command::new)
|
||||||
.and_then(|cmd| {
|
.and_then(|cmd| {
|
||||||
let mut s = String::from(commit_template());
|
let mut s = commit_template(&action, id);
|
||||||
edit_in_tmpfile_with_command(cmd, &mut s).map(|_| s)
|
edit_in_tmpfile_with_command(cmd, &mut s).map(|_| s)
|
||||||
.map_err_into(GHEK::EditorError)
|
.map_err_into(GHEK::EditorError)
|
||||||
})
|
})
|
||||||
|
|
|
@ -168,7 +168,7 @@ impl StoreIdAccessor for DeleteHook {
|
||||||
.map_into_hook_error()
|
.map_into_hook_error()
|
||||||
);
|
);
|
||||||
|
|
||||||
let message = try!(commit_message(&repo, cfg, action)
|
let message = try!(commit_message(&repo, cfg, action, &id)
|
||||||
.map_dbg_err_str("Failed to get commit message")
|
.map_dbg_err_str("Failed to get commit message")
|
||||||
.map_dbg_str("[GIT DELETE HOOK]: Got commit message"));
|
.map_dbg_str("[GIT DELETE HOOK]: Got commit message"));
|
||||||
|
|
||||||
|
|
|
@ -188,7 +188,7 @@ impl StoreIdAccessor for UpdateHook {
|
||||||
.map_into_hook_error()
|
.map_into_hook_error()
|
||||||
);
|
);
|
||||||
|
|
||||||
let message = try!(commit_message(&repo, cfg, StoreAction::Update)
|
let message = try!(commit_message(&repo, cfg, StoreAction::Update, &id)
|
||||||
.map_dbg_err_str("Failed to get commit message")
|
.map_dbg_err_str("Failed to get commit message")
|
||||||
.map_dbg_str("[GIT UPDATE HOOK]: Fetched commit message"));
|
.map_dbg_str("[GIT UPDATE HOOK]: Fetched commit message"));
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue