Skip to content
upload

GitHub Action

cargo-get

v1.1.1 Latest version

cargo-get

upload

cargo-get

Get cargo package metadata

Installation

Copy and paste the following snippet into your .yml file.

              

- name: cargo-get

uses: nicolaiunrein/[email protected]

Learn more about this action in nicolaiunrein/cargo-get

Choose a version

    Cargo plugin to easily query information from Cargo.toml files

    crates.io CI GitHub Release

    Overview

    This plugin helps querying information from a Cargo.toml file and can be used in shell scripts or CI/CD pipelines. The plugin accepts only one flag at a time and returns a single string with the requested value. Some queries like eq. keywords or authors return multiple values which get separated by line breaks (each value on a new line).

    This plugin is inspired by cargo-edit and presents itself as a lightweight wrapper around cargo_toml

    Contribution

    Thanks for your interest - we gratefully welcome contributions.

    Questions can be asked in issues. To help us help you get pull requests merged quickly and smoothly, open an issue before submitted large changes. Please keep the contents of pull requests and commits short. Commit messages should include the intent of the commit. cargo-get uses rustfmt for formatting and clippy for linting.

    Installation

    Pre-built Binaries

    1. Download the binary for your CPU architecture from the GitHub latest release.
    2. Make the binary executable using chmod +x
    3. Place the binary in your $PATH and rename it to cargo-get.

    Cargo

    Ensure that you have a fairly recent version of rust/cargo installed.

    $ cargo install cargo-get
    

    (Please check cargo's documentation to learn how cargo install works and how to set up your system so it finds binaries installed by cargo.)

    Examples

    All Options

    $ cargo get -h
    Cargo plugin to easily query information from Cargo.toml files
    
    Usage: cargo-get [OPTIONS] <COMMAND>
    
    Commands:
      package.name
      package.edition
      package.rust_version
      package.version
      package.build
      package.workspace
      package.authors
      package.links
      package.description
      package.homepage
      package.readme
      package.keywords
      package.categories
      package.exclude
      package.include
      package.license
      package.license_file
      package.repository
      package.default_run
      package.publish
      package.resolver
      package.metadata
      workspace.members
      workspace.package.authors
      workspace.package.categories
      workspace.package.description
      workspace.package.documentation
      workspace.package.edition
      workspace.package.exclude
      workspace.package.homepage
      workspace.package.include
      workspace.package.keywords
      workspace.package.license
      workspace.package.license_file
      workspace.package.publish
      workspace.package.readme
      workspace.package.repository
      workspace.package.rust_version
      workspace.package.version
      help                             Print this message or the help of the given subcommand(s)
    
    Options:
          --entry <PATH>                                 Path to the crate root to query
          --delimiter <Tab | CR | LF | CRLF | String>    Delimiter for array values
          --terminator <CR | LF | CRLF | NUL | String>   String terminator for printed values. (Defaults to `LF`)
      -h, --help                                         Print help
      -V, --version                                      Print version

    Get Version

    $ cargo get package.version
    0.2.1
    
    $ cargo get package.version --pretty
    v0.2.1
    
    $ cargo get package.version --major --minor --patch --pre
    0
    2
    1
    alpha2
    
    $ cargo get package.version --major --minor --delimiter="."
    0.2
    

    Now it is also easy to run commands like:

    git tag $(cargo get package.version --pretty)

    Get keywords

    $ cargo get package.keywords
    command-line-utilities
    development-tools::cargo-plugins

    Custom delimiter

    # Use one of Tab, CR, LF, CRLF or a custom string.
    
    $ cargo get package.keywords --delimiter Tab
    command-line-utilities 	development-tools::cargo-plugins
    
    $ cargo get package.keywords --delimiter=" -- "
    command-line-utilities -- development-tools::cargo-plugins
    
    $ cargo get package.keywords --delimiter=";"
    command-line-utilities;development-tools::cargo-plugins

    Optional entry point

    # Full path
    $ cargo get package.name --entry="../../some/other/project/Cargo.toml"
    some-other-project
    
    # Directory
    $ cargo get package.name --entry="../../some/other/project"
    some-other-project
    
    # Current directory
    $ cargo get package.name
    current-project

    GitHub Actions

    Package name

    - name: Get package name
      id: cargo-get
      uses: nicolaiunrein/cargo-get@master
      with:
        subcommand: package.name

    Package author

    - name: Get package author
      id: cargo-get
      uses: nicolaiunrein/cargo-get@master
      with:
        subcommand: package.authors