# Scripts
There's scripts in the `./bin` directory to help you build, run, test, and publish rustimate.
They're designed for macOS, but should work on Linux or Windows (via WSL).
- `build`: Runs the code formatter, checks all the projects, then builds binaries for Linux, macOS, Windows, and Docker.
- `build-client`: Runs `wasm-pack` for the client Rust code, and `npm install` to bundle it to JavaScript.
- `build-client-watch`: Builds the client app using `build-client`, then watches for changes in `client`'s code.
- `build-css`: Uses `scss` to compile the stylesheets in `assets/stylesheets`.
- `build-css-watch`: Builds the css resources using `build-css`, then watches for changes in `stylesheets`.
- `build-docker`: Makes a release build, builds a docker image, then exports and zips the output.
- `build-ios`: Creates a `cargo-lipo` universal library for iOS.
- `build-linux`: Build a release-mode binary for Linux.
- `build-mac`: Build a release-mode binary for macOS.
- `build-windows`: Build a release-mode binary for Windows.
- `check`: Runs code statistics, checks for outdated dependencies, then runs cargo-audit and clippy.
- `dev`: Watches the project directories, and runs the main application, restarting when changes are detected.
- `doc`: Runs rustdoc for all projects, linking between projects and using custom logos and styling.
- `flamegraph`: Uses `cargo-flamegraph` to produce an SVG flamegraph of the projects compilation.
- `format`: Runs `rustfmt` on all projects.
- `publish`: Publishes all projects (in a very specific order) to crates.io. Usually used after `version-bump`.
- `run-docker`: Runs the Docker image produced by `build-docker`, exposing an HTTP port.
- `run-release`: Builds the project in release mode and runs it.
- `rustup`: Installs Rust, additional toolchains, and required components. Good for bootstrapping a new machine.
- `version-bump`: Passed two arguments, this script will change all references of the old version to a new version.