#os

etc

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

18 releases

0.1.16 Dec 9, 2020
0.1.15 Dec 9, 2020
0.1.12 Oct 29, 2020
0.1.11 Sep 25, 2020
0.1.2 Mar 22, 2020

#19 in #os

Download history 42/week @ 2022-10-08 22/week @ 2022-10-15 38/week @ 2022-10-22 54/week @ 2022-10-29 61/week @ 2022-11-05 34/week @ 2022-11-12 59/week @ 2022-11-19 20/week @ 2022-11-26 30/week @ 2022-12-03 51/week @ 2022-12-10 38/week @ 2022-12-17 29/week @ 2022-12-24 17/week @ 2022-12-31 40/week @ 2023-01-07 15/week @ 2023-01-14 56/week @ 2023-01-21

131 downloads per month
Used in fewer than 8 crates

MIT license

19KB
445 lines

etc

etc crate doc 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};

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());
}

Projects using etc

  • elvis - Webassembly UI framework
  • sup - Substrate package manager

LICENSE

MIT

Dependencies

~155KB