[][src]Crate etc

etc

etc crate doc dependency status downloads LICENSE

It's time to bundle etc for your awesome project!

use etc::{Etc, FileSystem, Read, Write};

fn main() {
    // config root path
    let mut dir = std::env::temp_dir();
    dir.push(".etc.io");

    // generate `/.etc.io` dir
    let etc = Etc::new(&dir).unwrap();
    let hello = etc.open("hello.md").unwrap();

    // input and output
    assert!(hello.write(b"hello, world!\n").is_ok());
    assert_eq!(hello.read().unwrap(), b"hello, world!\n");

    // remove hello.md
    assert!(etc.rm("hello.md").is_ok());

    // hello.md has been removed
    let mut hello_md = dir.clone();
    hello_md.push("hello.md");
    assert!(!hello_md.exists());

    // remove all
    assert!(etc.drain().is_ok());
    assert!(!dir.exists());
}

Loading dir with files' content into one struct!

use etc::{Etc, Tree, FileSystem, Write};
use std::{
  env,
  iter::FromIterator,
  path::PathBuf,
};

fn main() {
    // config root path
    let mut dir = env::temp_dir();
    dir.push(".etc.load");

    // write files
    let etc = Etc::new(&dir).unwrap();
    let amd = etc.open("mds/a.md").unwrap();
    let bmd = etc.open("mds/b.md").unwrap();
    assert!(amd.write(b"# hello").is_ok());
    assert!(bmd.write(b"# world").is_ok());

    // batch and load
    let mut tree = Tree::batch(&etc).unwrap();
    assert!(tree.load().is_ok());
    assert_eq!(
        tree,
        Tree {
            path: PathBuf::from(&dir),
            content: None,
            children: Some(vec![Tree {
                path: PathBuf::from_iter(&[&dir, &PathBuf::from("mds")]),
                content: None,
                children: Some(vec![
                    Tree {
                        path: PathBuf::from_iter(&[&dir, &PathBuf::from("mds/a.md")]),
                        content: Some(b"# hello".to_vec()),
                        children: None,
                    },
                    Tree {
                        path: PathBuf::from_iter(&[&dir, &PathBuf::from("mds/b.md")]),
                        content: Some(b"# world".to_vec()),
                        children: None,
                    }
                ])
            }]),
        }
    );

    // remove all
    assert!(etc.drain().is_ok());
    assert!(!dir.exists());
}

LICENSE

MIT

Structs

Etc

contains dir and file

Tree

Here are two file types in Tree

Enums

Error

etc Error

Traits

FileSystem

mock file system

Meta

meta data

Read

io read

Write

io write

Functions

cp_r

unix cp -r

find_all

unix find <src> -name <target>