diff options
Diffstat (limited to 'src/bin')
| -rw-r--r-- | src/bin/git-autosave.rs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/bin/git-autosave.rs b/src/bin/git-autosave.rs new file mode 100644 index 0000000..fa0d9e6 --- /dev/null +++ b/src/bin/git-autosave.rs @@ -0,0 +1,26 @@ +use auth_git2::GitAuthenticator; +use git_autosave::{Config, authenticate::Inquirer, commit_autosave, push_autosaves}; +use git2::{RemoteCallbacks, Repository}; + +fn main() -> Result<(), anyhow::Error> { + let repository = Repository::discover(".")?; + let gitconfig = repository.config()?; + let config: &'static mut Config = Box::leak(Box::new(Config::load()?)); + + if std::env::args().any(|arg| arg == "--init") { + let id = git_autosave::init(&repository, Some(config))?; + config.save()?; + println!("Initialized autosave for repository: {id}"); + } + + let auth = GitAuthenticator::new().set_prompter(Inquirer(config)); + let mut callbacks = RemoteCallbacks::new(); + callbacks.credentials(auth.credentials(&gitconfig)); + + let commit = commit_autosave(&repository)?; + println!("Commited autosave: {commit}"); + push_autosaves(&repository, callbacks)?; + println!("Successfully pushed autosave to remote"); + + Ok(()) +} |
