Run a script in the workspace, with all dependencies packaged/copied into a chroot.

Example BUILD file:

  command="./scripts/my-script.sh --data-files-dir={chroot}",

The command may use either {chroot} on the command line, or the $CHROOT environment variable to get the root directory for where any dependencies are located.

In contrast to the experimental_shell_command, in addition to workdir you only have the command and dependencies fields as the tools you are going to use are already on the PATH which is inherited from the Pants environment. Also, the outputs does not apply, as any output files produced will end up directly in your project tree.


type: str

Shell command to execute.

The command is executed as 'bash -c ' by default.


type: Iterable[str] | None
default: None

Addresses to other targets that this target depends on, e.g. ['helloworld/subdir:lib'].

Alternatively, you may include file names. Pants will find which target owns that file, and create a new target from that which only includes the file in its sources field. For files relative to the current BUILD file, prefix with ./; otherwise, put the full path, e.g. ['./sibling.txt', 'resources/demo.json'].

You may exclude dependencies by prefixing with !, e.g. ['!helloworld/subdir:lib', '!./sibling.txt']. Ignores are intended for false positives with dependency inference; otherwise, simply leave off the dependency from the BUILD file.


type: str | None
default: None

A human-readable description of the target.

Use ./pants list --documented :: to see all targets with descriptions.


type: Iterable[str] | None
default: None

Arbitrary strings to describe a target.

For example, you may tag some test targets with 'integration_test' so that you could run ./pants --tag='integration_test' test :: to only run on targets with that tag.


type: str | None
default: '.'

Sets the current working directory of the command, relative to the project root.

Did this page help you?