Added startup setup

This commit is contained in:
Uber Veng
2026-05-22 01:00:57 +07:00
parent 8fe8af2962
commit 3fafc71cdd
5 changed files with 254 additions and 178 deletions

View File

@@ -20,7 +20,12 @@ use tokio::sync::mpsc;
#[tokio::main]
async fn main() -> Result<()> {
let config = config::Config::load()?;
let config = if config::Config::exists() {
config::Config::load()?
} else {
let url = prompt_server_url()?;
config::Config::create_with_url(&url)?
};
enable_raw_mode()?;
let mut stdout = io::stdout();
@@ -143,6 +148,37 @@ async fn run_exec(
Ok(())
}
/// Runs before ratatui starts. Prompts for the server URL on first launch.
fn prompt_server_url() -> Result<String> {
use std::io::Write;
println!();
println!(" ╔══════════════════════════════════╗");
println!(" ║ Ostiary — первый запуск ║");
println!(" ╚══════════════════════════════════╝");
println!();
println!(" Конфиг будет сохранён в:");
println!(" {}", config::config_path().display());
println!();
loop {
print!(" URL сервера меню: ");
std::io::stdout().flush()?;
let mut url = String::new();
std::io::stdin().read_line(&mut url)?;
let url = url.trim().to_string();
if url.is_empty() {
println!(" URL не может быть пустым. Попробуйте ещё раз.\n");
continue;
}
println!();
return Ok(url);
}
}
async fn read_crossterm_event() -> Result<Option<crossterm::event::Event>> {
if crossterm::event::poll(std::time::Duration::from_millis(100))? {
Ok(Some(crossterm::event::read()?))