extern crate regex;
use regex::Regex;
use std::error::Error;
use std::fs::write;
use std::fs::File;
use std::io::{BufRead, BufReader};
fn create_readme() -> Result<(), Box<dyn Error>> {
let comment_capture = Regex::new(r"^//!\s?(?P<comment>.*)")?;
let src_lib = File::open("src/lib.rs").expect("Could not read lib.rs");
let reader = BufReader::new(src_lib);
let mut readme_lines = vec![];
for result in reader.lines() {
let line = result.expect("Could not read line");
if let Some(capture) = comment_capture.captures_iter(&line).next() {
if let Some(comment) = capture.name("comment") {
if comment.as_str() == "#" || comment.as_str().find("# ") == Some(0) {
continue;
}
let modified_comment = comment.as_str().replace("```no_run", "```rust");
readme_lines.push(modified_comment)
}
}
}
let mut contents: String = readme_lines.join("\n");
contents.push_str("\n");
write("README.md", contents).expect("Could not write to README.md");
Ok(())
}
fn main() -> Result<(), Box<dyn Error>> {
create_readme()?;
Ok(())
}