use std::io::Write;
use std::net::{IpAddr, SocketAddr};
use std::path::PathBuf;
use clap::Args;
mod api;
mod cache;
mod server;
mod wire;
#[derive(Debug, Args)]
pub(super) struct InspectArgs {
#[arg(long, default_value = ".")]
repo: PathBuf,
#[arg(long, default_value = "127.0.0.1")]
host: String,
#[arg(long, default_value_t = 7878)]
port: u16,
#[arg(long)]
open: bool,
}
pub(super) fn run(
args: InspectArgs,
stdout: &mut dyn Write,
) -> Result<(), Box<dyn std::error::Error>> {
let span = tracing::info_span!("shore.inspect");
let _entered = span.enter();
tracing::debug!(command = "inspect", "command_start");
let ip: IpAddr = args
.host
.parse()
.map_err(|_| format!("invalid --host value: {}", args.host))?;
let addr = SocketAddr::new(ip, args.port);
server::serve(addr, args.repo, args.open, stdout)
}