//! `--game rust`: the installer's second game (docs/modules/rust/PLAN.md §34, R4). //! //! The same four verbs as ServUO and the same bundle discipline — an exact, protocol-checked pair //! from CI, never "latest of each" — over a different shape of host. A Rust host commonly runs //! several servers, and R8 gives each its own sidecar, so where ServUO has one deployment this has //! **named instances** (D148): one server root, one plugin, and one sidecar service per //! `--server-id`, all sharing one binary and one bundle. //! //! Kept in its own module rather than threaded through the ServUO pipeline: the two share the //! bundle reader, the download and checksum code, the service machinery and the report format, and //! share nothing about what is deployed or where. ServUO's files and record are untouched by any //! of this. mod doctor; mod install; mod plugin; mod record; mod server; mod sidecar; mod uninstall; use anyhow::Result; use crate::cli::{Cli, Command}; /// Runs one verb for Rust. The `i32` is the exit code, as for ServUO. pub fn run(cli: &Cli, command: Command) -> Result { match command { Command::Install => install::deploy(cli, crate::install::Mode::Install).map(|()| 0), Command::Update => install::deploy(cli, crate::install::Mode::Update).map(|()| 0), Command::Doctor => doctor::run(cli), Command::Uninstall => uninstall::run(cli), } }