mirror of https://github.com/YGGverse/Yoda.git
phpcomposergemini-protocolgeminismallwebaltwebphp-gtkgemini-clientyoda-browserphp-cppgemini-browseryodagtk3browsergtk
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.1 KiB
40 lines
1.1 KiB
mod app; |
|
|
|
use app::App; |
|
use gtk::glib::{user_config_dir, ExitCode}; |
|
use sqlite::Connection; |
|
use std::{fs::create_dir_all, sync::Arc}; |
|
|
|
const VENDOR: &str = "YGGverse"; |
|
const APP_ID: &str = "Yoda"; // env!("CARGO_PKG_NAME"); |
|
const BRANCH: &str = "Rust-GTK4"; |
|
|
|
fn main() -> ExitCode { |
|
// Init profile path |
|
let mut profile_path = user_config_dir(); |
|
|
|
profile_path.push(VENDOR); |
|
profile_path.push(APP_ID); |
|
profile_path.push(BRANCH); |
|
|
|
if let Err(error) = create_dir_all(&profile_path) { |
|
panic!("Failed to create profile directory: {error}") |
|
} |
|
|
|
// Init profile database path |
|
let mut profile_database_path = profile_path.clone(); |
|
|
|
profile_database_path.push("profile.sqlite3"); |
|
|
|
// Init database connection |
|
let profile_database_connection = match Connection::open(profile_database_path) { |
|
Ok(connection) => Arc::new(connection), |
|
Err(error) => panic!("Failed to connect profile database: {error}"), |
|
}; |
|
|
|
// Init GTK, start application |
|
match gtk::init() { |
|
Ok(_) => App::new(profile_database_connection, profile_path).run(), |
|
Err(_) => ExitCode::FAILURE, |
|
} |
|
}
|
|
|