use std::path::Path;

pub fn migrate_config() {
    let version = &crate::settings::Settings::new()
        .map(|s| s.config_version)
        .unwrap_or_default();

    let mut save_version = false;
    if version.is_none() {
        //Migration from 0 to 1
        let old_path = &Path::new("config.toml");
        if old_path.exists() {
            println!("Migrating from configuration version 0 to version 1");
            let new_path = crate::config::get_config_file();
            println!("Your configuration file will be moved to {:?}", new_path);
            let _ = std::fs::copy(old_path, new_path);
            let _ = std::fs::remove_file(old_path);
        }

        let old_path = &Path::new(".thumbnails");
        if old_path.exists() {
            //thumbnails are just cache can be removed
            let _ = std::fs::remove_dir_all(old_path);
        }

        let old_path = &Path::new("cache.json");
        if old_path.exists() {
            let new_path = crate::config::get_cache_file();
            let _ = std::fs::copy(old_path, new_path);
            let _ = std::fs::remove_file(old_path);
        }
        save_version = true;
    }

    if save_version {
        if let Ok(mut settings) = crate::settings::Settings::new() {
            settings.config_version = Some(1);
            crate::ui::MyEguiApp::save_settings_to_file(&settings);
        }
    }
}
