mod commands; mod db; mod models; use git2; use commands::{activity::*, blueprint::*, canvas::*, cicd::*, devtools::*, git_ops::*, git_repos::*, github::*, groups::*, network::{get_wsl_ip, sync_wsl_proxy, get_wsl_proxy_status, clear_wsl_proxy, test_wsl_proxy_ip, test_win_proxy_ip}, project_scan::*, project_tools::*, projects::{batch_create_projects, create_project, delete_project, get_project, get_projects, scan_subfolders, update_project, update_project_tags}, proxy::*, publish::*, settings::{detect_editors, get_settings, search_editor_path, update_settings}, shell::*, spaces::*, tags::*, templates::*}; #[cfg_attr(mobile, tauri::mobile_entry_point)] pub fn run() { tauri::Builder::default() .plugin(tauri_plugin_http::init()) .plugin(tauri_plugin_opener::init()) .plugin(tauri_plugin_updater::Builder::new().build()) .plugin(tauri_plugin_process::init()) .plugin(tauri_plugin_dialog::init()) .plugin(tauri_plugin_shell::init()) .setup(|app| { use tauri::Manager; let data_dir = app.path().app_data_dir().expect("no app data dir"); db::init(data_dir); // 禁用 libgit2 目录所有者验证,允许访问 WSL UNC 路径(\\wsl.localhost\...) unsafe { let _ = git2::opts::set_verify_owner_validation(false); } // 种植内置模板(首次启动时执行) commands::templates::seed_builtin_templates(); Ok(()) }) .invoke_handler(tauri::generate_handler![ // projects get_projects, get_project, create_project, update_project, update_project_tags, delete_project, scan_subfolders, batch_create_projects, // activity get_activity, add_activity, // groups get_groups, create_group, update_group, delete_group, reorder_groups, get_group_maps, add_group_member, remove_group_member, // settings get_settings, update_settings, detect_editors, search_editor_path, // project tools get_project_tools, add_project_tool, update_project_tool, remove_project_tool, launch_tool, // devtools scan_dev_tools, scan_wsl_dev_tools, get_dev_tools, save_dev_tools, delete_dev_tool, upsert_dev_tool, // wsl proxy get_wsl_ip, sync_wsl_proxy, get_wsl_proxy_status, clear_wsl_proxy, test_wsl_proxy_ip, test_win_proxy_ip, // v2rayn import scan_v2rayn_nodes, detect_v2rayn_db_path, get_active_v2rayn_node, // project env scan scan_project_env, get_project_env_tools, save_project_env_tools, // shell open_editor, open_terminal, // git ops git_clone, git_status, git_fetch, git_pull, git_push, git_head_commit, git_upstream_behind, git_create_branch, git_list_branches, git_checkout_branch, // github github_save_account, github_get_account, github_get_token, github_get_client_id, github_logout, github_start_oauth, github_poll_oauth, github_open_login_window, // spaces get_spaces, create_space, update_space, delete_space, set_current_space, get_deploy_commands, add_deploy_command, remove_deploy_command, execute_deploy, // git repos registry get_git_repos, import_git_repos, update_git_repo_deploy, mount_repo, delete_git_repo, // publish to github scan_local_git, github_create_repo, git_init_and_commit, git_remote_set, git_push_to_github, register_and_link_repo, write_gitignore, resolve_wsl_path, get_wsl_distros, // project templates list_templates, get_template, save_template, delete_template, create_project_from_template, // tags get_tags, create_tag, update_tag, delete_tag, get_project_tags, set_project_tags, get_all_project_tag_maps, // cicd get_cicd_config, save_cicd_config, generate_workflow, // blueprint get_blueprint, // canvas state get_canvas_state, save_canvas_state, ]) .run(tauri::generate_context!()) .expect("error while running tauri application"); }