co-author 0.1.3

Co-Author your git commits from the command line
use super::core::conf_provider::GitConfProvider;
use super::core::editor::file_editor::FileEditor;
use super::core::hook::Hook;
use super::core::libgit::wrapper::LibGitWrapper;
use super::core::service::GitService;
use crate::common::env;
use crate::common::fs::file_reader::FileReader;
use crate::common::fs::file_writer::FileWriter;
use crate::common::runner::CommandRunner;
use crate::Result;

type Editor = FileEditor<CommandRunner, GitConfProvider>;
type GitHook = Hook<CommandRunner>;
pub type Service = GitService<LibGitWrapper<FileReader>, GitHook, Editor, FileWriter>;

pub fn init() -> Result<Service> {
	let cwd = env::cwd()?;
	Ok(GitService::new(
		LibGitWrapper::from(&cwd, FileReader)?,
		Hook::new(CommandRunner),
		FileEditor::new(CommandRunner, GitConfProvider),
		FileWriter,
	))
}