cargo-run-script is a Cargo subcommand which allows you to define scripts for common project related tasks within your 'Cargo.toml'. If you are familiar with node, cargo-run-script brings the npm run functionality to the Rust and Cargo ecosystem.
cargo-run-script requires Rust in order to build/install. If you need to install Rust, follow these instructions. Once you have Rust installed, cargo-run-script can be installed by running the command below:
cargo install cargo-run-scriptScripts can be defined for workspaces or for single packages by adding the proper section to the Cargo.toml file.
Scripts are defined by adding a [package.metadata.scripts] section to the Cargo.toml file of your project, as shown below.
[package.metadata.scripts]
hello = "echo Hello"
goodbye = "echo Goodbye"A more complete example can be seen by reviewing the Cargo.toml for this project.
Scripts are defined by adding a [workspace.metadata.scripts] section to the Cargo.toml file of your workspace, as shown below.
[workspace.metadata.scripts]
hello = "echo Hello"
goodbye = "echo Goodbye"Scripts can be defined as accepting arguments, as shown below.
[package.metadata.scripts]
print_arguments = "echo $1 $2"All instances of $x are replaced with the relevant passed argument before invoking the shell.
Note that $0 will be replaced by the first argument passed, which is the binary path of the executable on most systems.
From the root of your project directory (at the same level as the Cargo.toml), you can run your scripts as shown below.
# to run a script called "hello"
cargo run-script helloThe output of this would be
Running script 'hello': 'echo Hello'
Hello
Finished, status of exit code: 0Running scripts with arguments is also simple.
# to run a script called "print_arguments"
cargo run-script print_arguments "first argument" "second argument"Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.