{namespace buck.targets}

/***/
{template .soyweb}
  {call buck.page}
    {param title: 'buck targets' /}
    {param description}
      A command that lists all the available build targets in the current
      project.
    {/param}
    {param content}


{call buck.command}
{param overview}
Lists the build targets available in the current project.

<p>

The following will print all build targets in the project (sorted
 alphabetically) to standard out:

<pre>buck targets</pre>

This command can be handy in programmatic tasks, such as running all of the
Java tests under <code>&#x2F;/java/com/myproject</code>:

{literal}<pre>
buck targets --type java_test | \
  grep '&#x2F;/java/com/myproject' | \
  xargs buck test
</pre>{/literal}

<p>

A list of rules can also be passed into <code>buck targets</code> and Buck will
only print out target information for those rules.  For example:

{literal}<pre>
buck targets --show-output &#x2F;/java/com/myproject:binary
> &#x2F;/java/com/myproject:binary buck-out/gen/java/com/myproject/binary.apk
</pre>{/literal}

{/param}

{param params}
{call buck.param}
  {param name: 'type' /}
  {param desc}
  The types of target to filter by.  For example:
  <p>
  <pre>
    buck targets --type java_test java_binary
  </pre>
  {/param}
{/call}

{call buck.param}
  {param name: 'referenced-file' /}
  {param desc}
  Filters targets by the list of rules that include
  {sp}<code>referenced-file</code> in their transitive closure.

  <p>

  For example, if a developer wanted to run all tests that could be affected by
  particular file, they would run:
  <p>
{literal}<pre>
buck targets --type java_test \
  --referenced-file java/com/example/Foo.java |
  xargs buck test
</pre>{/literal}
  {/param}
{/call}

{call buck.param}
  {param name: 'json' /}
  {param desc}
  Print JSON representation of each target
  {/param}
{/call}

{call buck.param}
  {param name: 'print0' /}
  {param desc}
  Delimit targets using the ASCII NUL character (when <code>--json</code> is not specified).
  This facilitates use with <code>xargs</code>:
  <p>
{literal}<pre>
buck targets --print0 | xargs -0 buck build
</pre>{/literal}
    {/param}
  {/call}

{call buck.param}
  {param name: 'resolvealias' /}
  {param desc}
  Print the fully-qualified build target for the specified alias[es].  This
  command also accepts build targets.  See  <a
  href="{ROOT}concept/buckconfig.html"><code>.buckconfig</code></a> for more
  information.
  {/param}
{/call}

{call buck.param}
  {param name: 'show-output' /}
  {param desc}
  Prints the relative path to the output for each rule after the rule name.
  {/param}
{/call}

{/param}

{/call}

    {/param}  // content
  {/call} // buck.page
{/template}
