astudios 0.1.3

A CLI tool for managing Android Studio versions
Documentation
mod cli;
mod commands;

use astudios::error::AstudiosError;
use clap::Parser;
use commands::CommandHandler;

fn main() {
    let cli = cli::Cli::parse();

    if let Err(e) = CommandHandler::handle(cli) {
        match e {
            AstudiosError::VersionNotFound(msg) => {
                eprintln!("Error: {msg}");
            }
            AstudiosError::Download(msg) => {
                eprintln!("Download Error: {msg}");
            }
            AstudiosError::Installation(msg) => {
                eprintln!("Installation Error: {msg}");
            }
            AstudiosError::Extraction(msg) => {
                eprintln!("Extraction Error: {msg}");
            }
            AstudiosError::Network(e) => {
                eprintln!("Network Error: {e}");
                eprintln!("Please check your internet connection");
            }
            AstudiosError::Config(msg) => {
                eprintln!("Configuration Error: {msg}");
            }
            AstudiosError::PrerequisiteNotMet(msg) => {
                eprintln!("Prerequisite Check Failed: {msg}");
                eprintln!("Please resolve the above issues and try again");
            }
            AstudiosError::InsufficientResources(msg) => {
                eprintln!("Insufficient Resources: {msg}");
                eprintln!("Please free up space or resources and try again");
            }
            AstudiosError::PermissionDenied(msg) => {
                eprintln!("Permission Error: {msg}");
                eprintln!("You may need to run with administrator privileges");
            }
            AstudiosError::NetworkUnavailable(msg) => {
                eprintln!("Network Error: {msg}");
                eprintln!("Please check your internet connection and firewall settings");
            }
            _ => {
                eprintln!("Error: {e}");
            }
        }
        std::process::exit(1);
    }
}