#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] mod badge; mod git; use badge::set_sync_badge; use git::{ SearchCancellationState, amend_commit, apply_file_patch, cancel_code_search, cancel_file_history, checkout_branch, cherry_pick_abort, cherry_pick_commit, cherry_pick_continue, clone_repository, commit, commit_ai_generate, commit_ai_load, commit_ai_local_models, commit_ai_status, compare_commits, compare_file_to_head, compare_file_to_parent, create_branch, create_tag, cred_delete, cred_load, cred_save, delete_branch, delete_tag, diff_file_against_working_tree, fetch, get_file_blame, get_file_patch, get_remote_url, get_status, last_commit_message, list_branches, list_commits, list_file_history, list_repository_files, list_stashes, list_tags, merge_branch, open_repo_in_explorer, open_repository, open_repository_bundle, open_repository_file, pull, push, push_tag, read_conflict, rebase_abort, rebase_branch, rebase_continue, rename_branch, resolve_conflict, resolve_conflict_side, restore_file_from_commit, restore_files, restore_to_commit, search_code_introductions, stage_files, stash_apply, stash_drop, stash_pop, stash_push, undo_last_commit, unstage_files, }; use tauri::{Manager, AppHandle}; #[tauri::command] fn close_splashscreen(app: tauri::AppHandle) -> Result<(), String> { if let Some(window) = app.get_webview_window("splashscreen") { let _ = window.hide(); window .destroy() .map_err(|error| format!("failed to destroy splashscreen: {error}"))?; } if let Some(window) = app.get_webview_window("main") { window .show() .map_err(|error| format!("failed to show main window: {error}"))?; let _ = window.set_focus(); } Ok(()) } #[tokio::main] async fn main() { tauri::Builder::default() .plugin(tauri_plugin_single_instance::init(|app, _, _| { #[cfg(desktop)] let _ = app.get_webview_window("main") .expect("no main window") .set_focus(); })) .plugin(tauri_plugin_updater::Builder::new().build()) .plugin( tauri_plugin_aptabase::Builder::new("A-SH-1344793789") .with_options(tauri_plugin_aptabase::InitOptions { host: Some("https://aptabase.cbsk-tech.de".to_string()), flush_interval: None, }) .build(), ) .manage(SearchCancellationState::default()) .manage(commit_ai::CommitAiEngine::new()) .plugin(tauri_plugin_dialog::init()) .invoke_handler(tauri::generate_handler![ open_repository, clone_repository, open_repo_in_explorer, open_repository_file, get_status, list_branches, list_stashes, checkout_branch, create_branch, rename_branch, delete_branch, list_tags, create_tag, delete_tag, push_tag, cherry_pick_commit, cherry_pick_continue, cherry_pick_abort, stage_files, unstage_files, stash_push, stash_apply, stash_pop, stash_drop, restore_files, get_file_patch, apply_file_patch, commit, amend_commit, undo_last_commit, last_commit_message, commit_ai_status, commit_ai_load, commit_ai_local_models, commit_ai_generate, pull, push, fetch, list_commits, restore_to_commit, restore_file_from_commit, merge_branch, rebase_branch, rebase_continue, rebase_abort, list_repository_files, open_repository_bundle, list_file_history, cancel_file_history, get_file_blame, compare_commits, compare_file_to_head, compare_file_to_parent, diff_file_against_working_tree, search_code_introductions, cancel_code_search, read_conflict, resolve_conflict, resolve_conflict_side, get_remote_url, cred_load, cred_save, cred_delete, set_sync_badge, close_splashscreen ]) .run(tauri::generate_context!()) .expect("error while running tauri application"); }