coveralls 0.1.5

Send job to Coveralls (coveralls.io)
Documentation
use coveralls::{cli_args::CliArgs, CoverallsManager, Coverage, Env, Config};
use simple_error::SimpleError;
use clap::Parser;
use std::{io::{Result, ErrorKind, Error, stdin}, process::exit, fs::File};

fn work() -> Result<()> {
    let args = CliArgs::parse();
    let env = Env::new();
    let do_send = !args.no_send;
    let config = {
        let config = match Config::load_from_command(&args, &env)? {
            Some(v) => Some(v),
            None => Config::load_from_environment(&env)?,
        };

        match config {
            Some(v) => v.init_parameters(&args),
            None => {
                return Err(Error::new(ErrorKind::Other, SimpleError::new("No service name found")));
            }
        }
    };

    let manager = CoverallsManager::new();

    let mut coverage = if let Some(input) = &args.input {
        Coverage::from_reader(File::open(input)?)?
    } else {
        Coverage::from_reader(stdin())?
    };

    manager.apply_config(&config, &mut coverage, args.force_fetch_git_infos)?;
    config.show(coverage.git());

    if do_send {
        manager.send(&coverage)?;
    }

    Ok(())
}

fn main() {
    if let Err(err) = work() {
        eprintln!("{}", err);
        exit(1);
    }
}