Trait spielrs_diff::tree::TreeBuilder[][src]

pub trait TreeBuilder {
    fn build_tree<'async_trait>(
        dir_path: String,
        excluding: Option<Vec<String>>,
        recursive_excluding: bool
    ) -> Pin<Box<dyn Future<Output = Vec<Tree>> + Send + 'async_trait>>;
fn tree_diff(dir_tree: Vec<Tree>, dir_tree_comp: Vec<Tree>) -> bool;
fn get_content_files<'async_trait>(
        dir_tree: Vec<Tree>
    ) -> Pin<Box<dyn Future<Output = Vec<String>> + Send + 'async_trait>>;
fn compare_dir_content(
        dir_content: Vec<String>,
        dir_content_comp: Vec<String>
    ) -> bool; }
Expand description

Trait for Tree to create your own TreeBuilder

Required methods

Build a vector of Tree

Compare two tree directories and return true if are different

Get the content by string of all the files in one tree directory

compare all the content from two tree directories and return true if both are equal

Implementors

Build a vector of Tree You can exclude directories or files only from the root path of the directory or recursively in the building

Example

use spielrs_diff::tree::{Tree, TreeBuilder};

#[tokio::main]
async fn main() {
    let dir_one = Tree::build_tree(
        "./mocks/dir_one".to_string(),
        Some(vec!["purpose".to_string()]),
        true
    ).await;

    println!("{:#?}", dir_one);
}

Compare two tree directories and return true if are different

Example

use spielrs_diff::tree::{Tree, TreeBuilder};

#[tokio::test]
async fn should_return_false_equal_dir_tree() {
    let dir_one = Tree::build_tree("./mocks/dir_one".to_string(), None, false).await;
    let dir_two = Tree::build_tree("./mocks/dir_two".to_string(), None, false).await;

    let diff = Tree::tree_diff(dir_one, dir_two);

    assert_eq!(diff, false);
}

Get the content by string of all the files in one tree directory

Example

use spielrs_diff::tree::{Tree, TreeBuilder};

#[tokio::test]
async fn should_return_all_file_content() {
    let dir_one = Tree::build_tree("./mocks/dir_one".to_string(), None, false).await;
    let content = Tree::get_content_files(dir_one).await;

    assert_eq!(
        content,
        vec!(
            "Hello world",
            "print(\"This line will be printed.\")",
            "new language",
            "fn main() {\n    println(\"hello world\")\n}\n",
        )
    )
}

compare all the content from two tree directories and return true if both are equal

Example

use spielrs_diff::tree::{Tree, TreeBuilder};

#[tokio::test]
async fn should_return_true_if_both_dir_content_are_equal() {
    let dir_one = Tree::build_tree("./mocks/dir_one".to_string(), None, false).await;
    let content_one = Tree::get_content_files(dir_one).await;

    let dir_two = Tree::build_tree("./mocks/dir_two".to_string(), None, false).await;
    let content_two = Tree::get_content_files(dir_two).await;

    assert_eq!(Tree::compare_dir_content(content_one, content_two), true);
}