8 Commits

Author SHA1 Message Date
Uber Veng
2d9b214ff4 Fix first startup on macOS 3 2026-05-29 13:24:27 +07:00
Uber Veng
80d2e7fd71 Fix first startup on macOS 2 2026-05-29 13:17:30 +07:00
Uber Veng
03e1311e90 update install script 5 2026-05-29 13:03:35 +07:00
Uber Veng
a93f3ad9f6 Fix first startup on macOS 2026-05-29 12:58:15 +07:00
Uber Veng
b0407d6519 update install script 4 2026-05-29 12:49:58 +07:00
Uber Veng
c484f2deb8 update install script 3 2026-05-29 11:55:33 +07:00
Uber Veng
958a729880 update install script 2 2026-05-29 11:52:08 +07:00
Uber Veng
8c6ed94850 update install script 2026-05-29 11:35:20 +07:00
4 changed files with 15 additions and 12 deletions

3
Cargo.lock generated
View File

@@ -189,6 +189,7 @@ dependencies = [
"crossterm_winapi",
"derive_more",
"document-features",
"filedescriptor",
"mio",
"parking_lot",
"rustix",
@@ -1203,7 +1204,7 @@ dependencies = [
[[package]]
name = "ostiary"
version = "1.1.2"
version = "1.1.5"
dependencies = [
"anyhow",
"base64",

View File

@@ -1,10 +1,10 @@
[package]
name = "ostiary"
version = "1.1.2"
version = "1.1.5"
edition = "2024"
[dependencies]
crossterm = "0.29"
crossterm = { version = "0.29", features = ["use-dev-tty"] }
ratatui = "0.30"
tokio = { version = "1", features = ["full"] }
reqwest = { version = "0.12", features = ["json", "stream", "rustls-tls"], default-features = false }

View File

@@ -108,4 +108,8 @@ fi
echo ""
ok "Launching ${BINARY}..."
exec "$INSTALL_DIR/$BINARY"
if { true </dev/tty; } 2>/dev/null; then
"$INSTALL_DIR/$BINARY"
else
ok "Run: $BINARY"
fi

View File

@@ -172,17 +172,15 @@ async fn run_exec(
fn prompt_first_endpoint() -> Result<(String, String)> {
use std::io::{BufRead, BufReader, Write};
// Open /dev/tty directly so input works even when launched via `curl | bash`
// (where stdin is the pipe carrying the script, not the keyboard).
let tty = std::fs::OpenOptions::new()
.read(true)
.write(true)
.open("/dev/tty")
// Open /dev/tty read-only for keyboard input so the wizard works even when
// stdin is a pipe (e.g. `curl | bash`). Writing goes through stdout so we
// don't touch the terminal's write-side state before crossterm takes over.
let tty_in = std::fs::File::open("/dev/tty")
.map_err(|e| anyhow::anyhow!(
"Не удалось открыть терминал ({e}). Запустите ostiary напрямую."
))?;
let mut out = tty.try_clone()?;
let mut reader = BufReader::new(tty);
let mut reader = BufReader::new(tty_in);
let mut out = std::io::stdout();
writeln!(out)?;
writeln!(out, " ╔══════════════════════════════════╗")?;