Pants v2: The ergonomic build system

Welcome to the Pants v2 documentation hub!

Pants v2 is a fast, scalable, user-friendly build system for growing codebases. It's currently focused on Python, with support for other languages coming soon.

Here you'll find guides to help you get started with Pants v2, comprehensive documentation on how to configure, run and customize Pants v2, and information on how to get help from the Pants community.

Get Started

An autoformatter for shell scripts (https://github.com/mvdan/sh).

Config section: [shfmt]

Basic options

skip

--[no-]shfmt-skip
PANTS_SHFMT_SKIP
default: False

Don't use shfmt when running `./pants fmt` and `./pants lint`.


args

--shfmt-args="[<shell_str>, <shell_str>, ...]"
PANTS_SHFMT_ARGS
default: []

Arguments to pass directly to shfmt, e.g. `--shfmt-args='-i 2'`.'


Advanced options

version

--shfmt-version=<str>
PANTS_SHFMT_VERSION
default: v3.2.4

Use this version of shfmt.


known_versions

--shfmt-known-versions="['<str>', '<str>', ...]"
PANTS_SHFMT_KNOWN_VERSIONS
default:
[
  "v3.2.4|darwin|43a0461a1b54070ddc04fbbf1b78f7861ee39a65a61f5466d15a39c4aba4f917|2980208",
  "v3.2.4|linux|3f5a47f8fec27fae3e06d611559a2063f5d27e4b9501171dde9959b8c60a3538|2797568"
]

Known versions to verify downloads against.

Each element is a pipe-separated string of version|platform|sha256|length, where:

  • version is the version string
  • platform is one of [darwin,linux],
  • sha256 is the 64-character hex representation of the expected sha256
    digest of the download file, as emitted by shasum -a 256
  • length is the expected length of the download file in bytes, as emmitted by
    wc -c

E.g., 3.1.2|darwin|6d0f18cd84b918c7b3edd0203e75569e0c7caecb1367bbbe409b44e28514f5be|42813.

Values are space-stripped, so pipes can be indented for readability if necessary.


url_template

--shfmt-url-template=<str>
PANTS_SHFMT_URL_TEMPLATE
default: https://github.com/mvdan/sh/releases/download/{version}/shfmt\_{version}\_{platform}\_amd64

URL to download the tool, either as a single binary file or a compressed file (e.g. zip file). You can change this to point to your own hosted file, e.g. to work with proxies or for access via the filesystem through a file:// URL.

Use {version} to have the value from --version substituted, and {platform} to have a value from --url-platform-mapping substituted in, depending on the current platform. For example, https://github.com/.../protoc-{version}-{platform}.zip.


url_platform_mapping

--shfmt-url-platform-mapping="{'key1': val1, 'key2': val2, ...}"
PANTS_SHFMT_URL_PLATFORM_MAPPING
default:
{
  "darwin": "darwin",
  "linux": "linux"
}

A dictionary mapping platforms to strings to be used when generating the URL to download the tool.

In --url-template, anytime the {platform} string is used, Pants will determine the current platform, and substitute {platform} with the respective value from your dictionary.

For example, if you define {&quot;darwin&quot;: &quot;apple-darwin&quot;, &quot;linux&quot;: &quot;unknown-linux&quot;}, and run Pants on Linux, then {platform}` will be substituted in the --url-template option with unknown-linux.


config_discovery

--[no-]shfmt-config-discovery
PANTS_SHFMT_CONFIG_DISCOVERY
default: True

If true, Pants will include all relevant `.editorconfig` files during runs. See https://editorconfig.org.


Deprecated options

None

Updated 15 days ago


shfmt


Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.