fixrs 0.1.5

Blazing-fast CLI to replace Rust qualified paths with use statements, auto-fixing clippy::absolute_paths
Documentation
use std::{env, process::exit};

use clap::{ArgAction, Args, Command, FromArgMatches, arg};
use current_platform::CURRENT_PLATFORM;
use fixrs::{Options, finish_run, run};

fn main() {
  let is_subcommand = env::args().nth(1).as_deref() == Some("fixrs");

  let Some(matches) = clap_args::parse!(|cmd| {
    if is_subcommand {
      let sub = Options::augment_args(
        Command::new("fixrs")
          .disable_version_flag(true)
          .disable_help_flag(true)
          .arg(arg!(-v --version "show version").action(ArgAction::SetTrue))
          .arg(arg!(--vv "version detail"))
          .arg(arg!(-h --help "print help")),
      );
      cmd.subcommand(Options::apply_i18n(sub))
    } else {
      let cmd = Options::augment_args(cmd);
      Options::apply_i18n(cmd)
    }
  }) else {
    return;
  };

  let options = if is_subcommand {
    if let Some(sub_matches) = matches.subcommand_matches("fixrs") {
      if sub_matches.get_one::<bool>("help") == Some(&true) {
        return;
      }
      if sub_matches.get_one::<bool>("version") == Some(&true) {
        println!("{}", env!("CARGO_PKG_VERSION"));
        return;
      }
      if sub_matches.get_one::<bool>("vv") == Some(&true) {
        println!(
          "ver:{}\ntarget:{CURRENT_PLATFORM}",
          env!("CARGO_PKG_VERSION")
        );
        return;
      }
      match Options::from_arg_matches(sub_matches) {
        Ok(opts) => opts,
        Err(e) => e.exit(),
      }
    } else {
      Options::default()
    }
  } else {
    match Options::from_arg_matches(&matches) {
      Ok(opts) => opts,
      Err(e) => e.exit(),
    }
  };

  match run(&options) {
    Ok(summary) => finish_run(&summary, &options),
    Err(e) => {
      eprintln!("Error: {e}");
      exit(1);
    }
  }
}