mod forge; mod refresh; mod ui; use std::io::{self, IsTerminal}; use std::path::PathBuf; use anyhow::{Result, bail}; use clap::Parser; #[derive(Parser)] #[command(name = "sorcery-ssh")] struct Cli { #[arg(long, env = "SORCERY_REPOSITORIES", value_name = "DIR")] repositories: PathBuf, #[arg(long, env = "SORCERY_CONTROL_SOCKET", value_name = "PATH")] control_socket: Option, #[arg(long, env = "SORCERY_CLONE_URL_BASE", value_name = "URL")] clone_url_base: Option, } fn main() -> Result<()> { let cli = Cli::parse(); if !io::stdin().is_terminal() || !io::stdout().is_terminal() { bail!("interactive session needs a terminal; try `ssh -t`"); } ui::run(cli.repositories, cli.clone_url_base, cli.control_socket) }