fix(add): add directory implicitly
This commit is contained in:
parent
fe628ffc9f
commit
34dee1ceb6
@ -4,6 +4,7 @@ use clap::Values;
|
||||
use glob::glob;
|
||||
use crate::store::{self, object::Object};
|
||||
use crate::utils::{self, path};
|
||||
use crate::store::object::object::{Obj, ObjMethods};
|
||||
use crate::utils::nextsyncignore::{self, ignore_file};
|
||||
use crate::utils::path::{normalize_relative, repo_root, path_buf_to_string};
|
||||
|
||||
@ -73,6 +74,9 @@ fn add_entry(entry: PathBuf, force: bool, added_files: &mut Vec<String>, rules:
|
||||
return;
|
||||
}
|
||||
|
||||
// add the parent if there is one and it is not already created
|
||||
add_parent(entry.clone(), added_files);
|
||||
|
||||
added_files.push(path_buf_to_string(entry.strip_prefix(repo_root()).unwrap().to_path_buf()));
|
||||
if entry.is_dir() {
|
||||
add_folder_content(entry.to_path_buf(), added_files);
|
||||
@ -80,6 +84,20 @@ fn add_entry(entry: PathBuf, force: bool, added_files: &mut Vec<String>, rules:
|
||||
|
||||
}
|
||||
|
||||
fn add_parent(entry: PathBuf, added_files: &mut Vec<String>) {
|
||||
let test_parent = entry.strip_prefix(repo_root()).unwrap().parent();
|
||||
if test_parent.is_none() || test_parent.unwrap() == PathBuf::new() {
|
||||
return;
|
||||
}
|
||||
|
||||
let parent = entry.parent().unwrap();
|
||||
|
||||
if !Obj::from_path(parent).exists_on_remote() {
|
||||
add_parent(parent.to_path_buf(), added_files);
|
||||
added_files.push(path_buf_to_string(parent.strip_prefix(repo_root()).unwrap().to_path_buf()));
|
||||
}
|
||||
}
|
||||
|
||||
fn print_ignored_files(ignored_files: Vec<String>) {
|
||||
if ignored_files.len() > 0 {
|
||||
// todo multiple nextsyncignore
|
||||
|
@ -31,6 +31,7 @@ pub trait ObjMethods {
|
||||
fn rm(&mut self) -> io::Result<()>;
|
||||
fn rm_node(&mut self) -> io::Result<()>;
|
||||
fn rm_node_down(&mut self) -> io::Result<()>;
|
||||
fn exists_on_remote(&mut self) -> bool;
|
||||
}
|
||||
|
||||
pub struct Obj {
|
||||
@ -126,6 +127,10 @@ impl ObjMethods for Obj {
|
||||
eprintln!("rm: tried to do this on Obj");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn exists_on_remote(&mut self) -> bool {
|
||||
PathBuf::from(self.get_hash_path()).exists()
|
||||
}
|
||||
}
|
||||
|
||||
impl ObjMethods for Blob {
|
||||
@ -187,6 +192,10 @@ impl ObjMethods for Blob {
|
||||
fs::remove_file(self.get_file_path())?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn exists_on_remote(&mut self) -> bool {
|
||||
self.obj.exists_on_remote()
|
||||
}
|
||||
}
|
||||
|
||||
impl ObjMethods for Tree {
|
||||
@ -258,6 +267,10 @@ impl ObjMethods for Tree {
|
||||
fs::remove_dir_all(self.get_file_path())?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn exists_on_remote(&mut self) -> bool {
|
||||
self.obj.exists_on_remote()
|
||||
}
|
||||
}
|
||||
|
||||
impl Obj {
|
||||
|
Loading…
Reference in New Issue
Block a user