cmakegen 0.1.1

Tool to generate cmake files
use clap::Clap;

mod cli;
use cli::*;
use std::{env, fs};
use std::{fs::File, io::Write};

fn main() {
    let cli = Cli::parse();

    match &cli.cmd {
        Cmd::Init(Init { name, .. }) => {
            File::create("CMakeLists.txt")
                .and_then(|file| Ok(base_cmake(file, name)))
                .expect("Could not create file");
        }
        Cmd::New(New { name, .. }) => {
            match fs::create_dir(name) {
                Err(error) => panic!("Error: {}", error.to_string()),
                Ok(_) => {}
            }

            File::create(format!("{}/CMakeLists.txt", name))
                .and_then(|file| Ok(base_cmake(file, &Some(name.to_owned()))))
                .expect("Could not create file");
        }
    }

    println!("{:?}", cli);
}

fn base_cmake(mut file: File, name: &Option<String>) {
    file.write_all(
        format!(
            "cmake_minimum_required(VERSION 3.20.2)\nproject({} C)",
            name.as_ref().unwrap_or(
                &env::current_dir()
                    .expect("Could not get working dir")
                    .file_name()
                    .unwrap()
                    .to_str()
                    .unwrap()
                    .to_string()
            )
        )
        .as_bytes(),
    )
    .expect("Could not write to file");
}