use std::fs::{create_dir_all, remove_file, write, File};
use std::io::{Error, ErrorKind::Other, Read, Result};
-use std::path::PathBuf;
+use std::path::Path;
use git::Git;
pub trait Remote {
fn can_handle(&self, remote: &str) -> bool;
- fn sync_up(&self, remote: &str, directory: &PathBuf) -> Result<()>;
- fn sync_down(&self, remote: &str, directory: &PathBuf) -> Result<()>;
+ fn sync_up(&self, remote: &str, directory: &Path) -> Result<()>;
+ fn sync_down(&self, remote: &str, directory: &Path) -> Result<()>;
}
-pub fn add(config_directory: &PathBuf, remote_config: &PathBuf, remote: &String) -> Result<()> {
+pub fn add(config_directory: &Path, remote_config: &Path, remote: &String) -> Result<()> {
create_dir_all(config_directory)?;
write(remote_config, remote)?;
Ok(())
}
-pub fn remove(remote_config: &PathBuf) -> Result<()> {
+pub fn remove(remote_config: &Path) -> Result<()> {
if remote_config.exists() {
- remove_file(remote_config)?
+ remove_file(remote_config)?;
}
Ok(())
}
-pub fn sync_up(data_directory: &PathBuf, remote_config: &PathBuf) -> Result<()> {
+pub fn sync_up(data_directory: &Path, remote_config: &Path) -> Result<()> {
let remote_address =
read_remote(remote_config).ok_or_else(|| Error::new(Other, "No remote is configured"))?;
create_dir_all(data_directory)?;
))
}
-pub fn sync_down(data_directory: &PathBuf, remote_config: &PathBuf) -> Result<()> {
+pub fn sync_down(data_directory: &Path, remote_config: &Path) -> Result<()> {
let remote_address =
read_remote(remote_config).ok_or_else(|| Error::new(Other, "No remote is configured"))?;
create_dir_all(data_directory)?;
vec![Box::new(Git::new())]
}
-fn read_remote(file_path: &PathBuf) -> Option<String> {
+fn read_remote(file_path: &Path) -> Option<String> {
let mut file = File::open(file_path).ok()?;
let mut contents = String::new();
file.read_to_string(&mut contents).ok()?;