# Cargo Remote ***Use with caution, I didn't test this software well and it is a really hacky (at least for now). If you want to test it please create a VM or at least a separate user on your build host*** ## Why I built it One big annoyance when working on rust projects on my notebook are the compile times. Since I'm using rust nightly for some of my projects I have to recompile rather often. Currently there seem to be no good remote-build integrations for rust, so I decided to build one my own. ## Planned capabilities This first version is very simple (could have been a bash script), but I intend to enhance it to a point where it detects compatibility between local and remote versions, allows (nearly) all cargo commands and maybe even load distribution over multiple machines. ## Usage For now only `cargo remote [FLAGS] [OPTIONS] ` works: it copies the current project to a temporary directory (`~/remote-builds/`) on the remote server, calls `cargo ` remotely and optionally (`-c`) copies back the resulting target folder. This assumes that server and client are running the same rust version and have the same processor architecture. On the client `ssh` and `rsync` need to be installed. If you want to pass remote flags you have to end the options/flags section using `--`. E.g. to build in release mode and copy back the result use: ```bash cargo remote -c -- build --release ``` ### Configuration You can place a config file called `.cargo-remote.toml` in the same directory as your `Cargo.toml` or at `~/.config/cargo-remote/cargo-remote.toml`. There you can define a default remote build host and user. It can be overridden by the `-r` flag. Example config file: ```toml remote = "builds@myserver" ``` ### Flags and options ``` USAGE: cargo remote [FLAGS] [OPTIONS] [remote options]... FLAGS: -c, --copy-back Transfer the target folder back to the local machine --help Prints help information -h, --transfer-hidden Transfer hidden files and directories to the build server -V, --version Prints version information OPTIONS: -b, --build-env Set remote environment variables. RUST_BACKTRACE, CC, LIB, etc. [default: RUST_BACKTRACE=1] -e, --env Environment profile. default_value = /etc/profile [default: /etc/profile] --manifest-path Path to the manifest to execute [default: Cargo.toml] -r, --remote Remote ssh build server -d, --rustup-default Rustup default (stable|beta|nightly) [default: stable] ARGS: cargo command that will be executed remotely ... cargo options and flags that will be applied remotely ``` ## How to install ```bash git clone https://gitlab.parity.io/General-Beck/cargo-remote.git cargo install --path cargo-remote/ ```