cargo-temp 0.4.0

Create temporary Rust project with specified dependencies
use anyhow::Result;
use clap::Parser;
use std::{env, io::Write};

#[cfg(windows)]
mod binding;

mod cli;
mod config;
mod dependency;
mod project;
mod subprocess;

use crate::{cli::Cli, config::Config, project::Project};

fn main() -> Result<()> {
    env_logger::builder()
        .format(|buf, record| writeln!(buf, "[{} cargo-temp] {}", record.level(), record.args()))
        .filter(Some("cargo_temp"), log::LevelFilter::Info)
        .init();

    // Parse the command line input.
    let mut args = env::args().peekable();
    let command = args.next();
    args.next_if(|x| x.as_str() == "temp");

    let cli = Cli::parse_from(command.into_iter().chain(args));

    // Read configuration from disk or generate a default one.
    let config = Config::get_or_create()?;

    Project::execute(cli, config)
}