gitignore-template-generator 0.5.0

A binary crate to generate templates for .gitignore files
Documentation
use std::process::exit;

use gitignore_template_generator::{
    GitignoreTemplateManager, TemplateGenerator, TemplateLister, constant,
    http_client::UreqHttpClient,
    parser::{ArgsParser, ClapArgsParser},
};

fn main() {
    let cli_args = std::env::args_os();
    let cli_args_parser = ClapArgsParser::new();
    let parsed_cli_args = cli_args_parser.parse(cli_args);

    if parsed_cli_args.show_list {
        let server_url = parsed_cli_args.server_url;
        let endpoint_uri = constant::template_manager::LISTER_URI;

        let http_client = UreqHttpClient { server_url };
        let template_list =
            GitignoreTemplateManager::list_from_api(&http_client, endpoint_uri);

        match template_list {
            Ok(result) => println!("{result}"),
            Err(error) => {
                eprintln!("{}", error.message);
                exit(error.exit_status);
            }
        };
    } else {
        let server_url = parsed_cli_args.server_url;
        let endpoint_uri = parsed_cli_args.endpoint_uri;
        let template_names = parsed_cli_args.template_names;

        let http_client = UreqHttpClient { server_url };
        let generated_template = GitignoreTemplateManager::generate_from_api(
            &http_client,
            &endpoint_uri,
            &template_names,
        );

        match generated_template {
            Ok(template) => println!("{template}"),
            Err(error) => {
                eprintln!("{}", error.message);
                exit(error.exit_status);
            }
        };
    }
}