use std::path::Path;
use std::process::Command;
use crate::tscircuit::RunnerKind;
pub fn dev_command(kind: &RunnerKind, file: &Path, port: Option<u16>) -> Command {
let mut cmd = base_command(kind);
cmd.arg("dev").arg(file);
if let Some(port) = port {
cmd.arg("-p").arg(port.to_string());
}
cmd
}
pub fn export_command(
kind: &RunnerKind,
file: &Path,
format: &str,
output: Option<&Path>,
) -> Command {
let mut cmd = base_command(kind);
cmd.arg("export").arg(file).arg("-f").arg(format);
if let Some(output) = output {
cmd.arg("-o").arg(output);
}
cmd
}
pub fn build_command(kind: &RunnerKind, file: &Path) -> Command {
let mut cmd = base_command(kind);
cmd.arg("build").arg(file).arg("--ignore-errors");
cmd
}
pub fn add_command(kind: &RunnerKind, packages: &[String]) -> Command {
let mut cmd = base_command(kind);
cmd.arg("add");
for pkg in packages {
cmd.arg(pkg);
}
cmd
}
pub fn install_command(kind: &RunnerKind) -> Command {
let mut cmd = base_command(kind);
cmd.arg("install");
cmd
}
pub fn search_command(kind: &RunnerKind, query: &[String]) -> Command {
let mut cmd = base_command(kind);
cmd.arg("search");
for q in query {
cmd.arg(q);
}
cmd
}
pub fn base_command(kind: &RunnerKind) -> Command {
match kind {
RunnerKind::Local(p) | RunnerKind::Global(p) => Command::new(p),
RunnerKind::Bun(bun) => {
let mut cmd = Command::new(bun);
cmd.args(["x", "--bun", "tsci"]);
cmd
}
}
}