Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Import the cargo-vendor subcommand into Cargo #6869

Merged
merged 1 commit into from
Jun 3, 2019

Commits on May 21, 2019

  1. Import the cargo-vendor subcommand into Cargo

    This commit imports the external [alexcrichton/cargo-vendor
    repository][repo] into Cargo itself. This means it will no longer be
    necessary to install the `cargo-vendor` subcommand in order to vendor
    dependencies. Additionally it'll always support the latest feature set
    of Cargo as it'll be built into Cargo!
    
    All tests were imported as part of this commit, but not all features
    were imported. Some flags have been left out that were added later in
    the lifetime of `cargo vendor` which seem like they're more questionable
    to stabilize. I'm hoping that they can have separate PRs adding their
    implementation here, and we can make a decision of their stabilization
    at a later date.
    
    The current man page for `cargo vendor -h` will look like:
    
        cargo-vendor
        Vendor all dependencies for a project locally
    
        USAGE:
    	cargo vendor [OPTIONS] [--] [path]
    
        OPTIONS:
    	-q, --quiet                    No output printed to stdout
    	    --manifest-path <PATH>     Path to Cargo.toml
    	    --no-delete                Don't delete older crates in the vendor directory
    	-s, --sync <TOML>...           Additional `Cargo.toml` to sync and vendor
    	    --respect-source-config    Respect `[source]` config in `.cargo/config`
    	-v, --verbose                  Use verbose output (-vv very verbose/build.rs output)
    	    --color <WHEN>             Coloring: auto, always, never
    	    --frozen                   Require Cargo.lock and cache are up to date
    	    --locked                   Require Cargo.lock is up to date
    	-Z <FLAG>...                   Unstable (nightly-only) flags to Cargo, see 'cargo -Z help' for details
    	-h, --help                     Prints help information
    
        ARGS:
    	<path>    Where to vendor crates (`vendor` by default)
    
        This cargo subcommand will vendor all crates.io and git dependencies for a
        project into the specified directory at `<path>`. After this command completes
        the vendor directory specified by `<path>` will contain all remote sources from
        dependencies specified. Additionally manifest beyond the default one can be
        specified with the `-s` option.
    
        The `cargo vendor` command will also print out the configuration necessary
        to use the vendored sources, which when needed is then encoded into
        `.cargo/config`.
    
    Since this change is not importing 100% of the functionality of the
    existing `cargo vendor` this change does run a risk of being a breaking
    change for any folks using such functionality. Executing `cargo vendor`
    will favor the built-in command rather than an external subcommand,
    causing unimplemented features to become errors about flag usage.
    
    [repo]: https://github.com/alexcrichton/cargo-vendor
    alexcrichton committed May 21, 2019
    Configuration menu
    Copy the full SHA
    3842d8e View commit details
    Browse the repository at this point in the history