wini_cli/
utils.rs

1use {rand::Rng, std::path::Path};
2
3/// Creates a random string of length `length`.
4pub fn generate_random_string(length: usize) -> String {
5    let characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
6    let mut rng = rand::thread_rng();
7
8    (0..length)
9        .map(|_| {
10            let idx = rng.gen_range(0..characters.len());
11            characters.chars().nth(idx).unwrap()
12        })
13        .collect()
14}
15
16/// Copy recursively a directory
17pub fn copy_dir_all(src: impl AsRef<Path>, dst: impl AsRef<Path>) -> std::io::Result<()> {
18    std::fs::create_dir_all(&dst)?;
19    for entry in std::fs::read_dir(src)? {
20        let entry = entry?;
21
22        if entry.file_type()?.is_dir() {
23            copy_dir_all(entry.path(), dst.as_ref().join(entry.file_name()))?;
24        } else {
25            std::fs::copy(entry.path(), dst.as_ref().join(entry.file_name()))?;
26        }
27    }
28
29    Ok(())
30}