Added startup setup
This commit is contained in:
38
src/main.rs
38
src/main.rs
@@ -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()?))
|
||||
|
||||
Reference in New Issue
Block a user