Home
Head's Up: I'm in the middle of upgrading my site. Most things are in place, but there are something missing and/or broken including image alt text. Please bear with me while I'm getting things fixed.

Update All Files Recursively In A Directory With A Give Extension With Rust

This is a very simple process that recursively loops over a directory and updates any files with a given extension :

rust
use std::fs;
use std::path::PathBuf;
use walkdir::WalkDir;

fn main() {
    update_files("some/path");
}

fn update_file(file_path: PathBuf) {
    let contents = fs::read_to_string(&file_path).unwrap();
    if !contents.contains("-- site:") {
        let mut new_contents = contents.trim_end().to_string();
        new_contents.push_str("\n-- site: aws\n");
        let _ = fs::write(file_path, new_contents);
    }
}

fn update_files(dir: &str) {
    for entry in WalkDir::new(dir) {
        let pb = entry.unwrap().into_path();
        if match pb.extension() {
            Some(extwrap) => match extwrap.to_str() {
                Some(ext) => match ext {
                    "org" => true,
                    _ => false,
                },
                None => false,
            },
            None => false,
        } {
            update_file(pb);
        }
    }
}

- The [TODO: Code shorthand span ] function is responsibe for finding the filew with the extension. It passes them to [TODO: Code shorthand span ]

- The [TODO: Code shorthand span ] function does the work. In this example I'm looking for the string [TODO: Code shorthand span ] in the file. I add it to the end of the file (after truncating it) if it's not already there

- This code uses the [TODO: Code shorthand span ] create that can be installed with [TODO: Code shorthand span ]

- One imporvement would be to move the file extension into an argument that's passed to the function

- Adding more error handling is also possible, but I'm fine with this panicing if something goes wrong. It's effectively a one - off script.

Footnotes And References