#read-write #directory #os #bundle #awesome #time

etc

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

Show the crate…

22 releases

0.1.20 May 2, 2024
0.1.19 Jan 22, 2024
0.1.18 Dec 29, 2023
0.1.16 Dec 9, 2020
0.1.2 Mar 22, 2020

#39 in #awesome

Download history 862/week @ 2024-07-21 1042/week @ 2024-07-28 888/week @ 2024-08-04 1133/week @ 2024-08-11 996/week @ 2024-08-18 1079/week @ 2024-08-25 951/week @ 2024-09-01 628/week @ 2024-09-08 473/week @ 2024-09-15 935/week @ 2024-09-22 748/week @ 2024-09-29 610/week @ 2024-10-06 789/week @ 2024-10-13 858/week @ 2024-10-20 660/week @ 2024-10-27 802/week @ 2024-11-03

3,146 downloads per month
Used in 20 crates (16 directly)

MIT license

21KB
431 lines

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

~170KB