cargo-wop - cargo without project

WARNING: this package is experimental at the moment.

The ambition is to allow running all cargo commands against a rust source with additional dependency annotations.

This project is heavily inspired by cargo-script, cargo-eval. In contrast to these projects, cargo-wop aims to be as close as possible to cargo and support all sensible arguments.

Usage:

```bash

these two are the same

cargo wop my-script.rs cargo wop run my-script.rs

build artifacts declared by the script

and copy them into the working directory

cargo wop build my-script.rs

Run the tests

cargo wop test my-script.rs ```

How arguments are interpreted

At the moment the following cargo commands are supported: bench, build, check, clean, clippy, install, locate-project, metadata, pkgid, run, tree, test, verify-project. For most commands cargo-wop rewrites the command-line as follows:

```bash

Original command-line

cargo wop [cargo-command] [script] [args...]

Rewritten command line

cargo [cargo-command] --manifest-path [generated_manifest] [args...] ```

Some commands use additional rules:

Custom commands:

Specifying dependencies

Dependencies are described in a cargo manifest embedded in the top-level comment. Importantly, the file must start with the comment for the manifest to be recognized. For example:

rust //! My script //! //!cargo //! [dependencies] //! serde = "1.0" //! //!

The embedded manifest can contain any keys recognized by cargo. cargo-wop normalizes this manifest and makes sure the source file is correctly included. It also normalizes any paths used to specify dependencies. To show the generated manifest use:

bash cargo wop manifest my-script.rs For example, simply specify a [lib] target with the correct flags set to build a static C library:

rust //! My script //! //!cargo //! [lib] //! crate-type = ["cdylib"] //! //! [dependencies] //!

This script can be built into a library via:

bash cargo wop build my-script.rs

Related projects