import argv import blog import blog/post import filepath as path import gleam/list import gleam/string import simplifile pub fn main() -> Nil { let assert Ok(priv) = blog.priv_directory() let posts_path = path.join(priv, "posts") case argv.load().arguments { ["update_titles"] -> update_posts_titles(posts_path) _ -> Nil } } fn update_posts_titles(posts_path: String) -> Nil { let assert Ok(entries) = simplifile.read_directory(posts_path) as "Read posts directory" use file_name <- list.each(entries) let file_path = path.join(posts_path, file_name) let assert Ok(post) = post.from_string(path: file_path) as "Parse post" let new_file_name = post.meta.slug <> ".md" let new_file_path = string.replace(in: file_path, each: file_name, with: new_file_name) let assert Ok(_) = simplifile.rename(at: file_path, to: new_file_path) as "Rename post" }