nvm-windows 0.1.3

A tool to manage Node.js versions.
#[cfg(not(target_os = "windows"))]
compile_error!("only windows is supported.");

use clap::Parser;
use nvm_windows::model::{CliArgs, Commands, Config};
use nvm_windows::{
  Result, activate_symlink, deactivate_symlink, display_current,
  display_or_update_node_mirror, display_or_update_npm_mirror,
  display_or_update_root, install_version, list_versions, setup,
  switch_version, uninstall_version,
};

#[cfg(feature = "debug")]
use nvm_windows::log_init;

fn main() -> Result<()> {
  #[cfg(feature = "debug")]
  log_init();

  let args = CliArgs::parse();
  log::debug!("args: {:?}", args);
  let config = Config::load()?;
  log::debug!("config: {:?}", config);
  if !matches!(args.command, Commands::Setup) {
    config.is_valid()?;
  }

  match args.command {
    Commands::Setup => setup(config)?,
    Commands::Install {
      version,
      skip: insecure,
    } => install_version(config, version, insecure)?,
    Commands::Uninstall { version } => uninstall_version(config, version)?,
    Commands::List { remote: available } => list_versions(config, available)?,
    Commands::On => activate_symlink(config)?,
    Commands::Off => deactivate_symlink()?,
    Commands::Root { path } => display_or_update_root(config, path)?,
    Commands::Current => display_current()?,
    Commands::NodeMirror { url } => display_or_update_node_mirror(config, url)?,
    Commands::NpmMirror { url } => display_or_update_npm_mirror(config, url)?,
    Commands::Use { version } => switch_version(config, version)?,
  }

  Ok(())
}