.TH "BST SHOW" "1" "10-Sep-2017" "" "bst show Manual"
.SH NAME
bst\-show \- Show elements in the pipeline
.SH SYNOPSIS
.B bst show
[OPTIONS] TARGET
.SH DESCRIPTION
Show elements in the pipeline

By default this will show all of the dependencies of the
specified target element.

Specify `--deps` to control which elements to show:


    none:  No dependencies, just the element itself
    plan:  Dependencies required for a build plan
    run:   Runtime dependencies, including the element itself
    build: Build time dependencies, excluding the element itself
    all:   All dependencies


FORMAT
~~~~~~
The --format option controls what should be printed for each element,
the following symbols can be used in the format string:


    %{name}           The element name
    %{variant}        The selected element variant
    %{key}            The abbreviated cache key (if all sources are consistent)
    %{full-key}       The full cache key (if all sources are consistent)
    %{state}          cached, buildable, waiting or inconsistent
    %{config}         The element configuration
    %{vars}           Variable configuration
    %{env}            Environment settings
    %{public}         Public domain data
    %{workspaced}     If the element is workspaced
    %{workspace-dirs} A list of workspace directories

The value of the %{symbol} without the leading '%' character is understood
as a pythonic formatting string, so python formatting features apply,
examle:


    bst show target.bst --format \
        'Name: %{name: ^20} Key: %{key: ^8} State: %{state}'

If you want to use a newline in a format string in bash, use the '$' modifier:


    bst show target.bst --format \
        $'---------- %{name} ----------\n%{vars}'
.SH OPTIONS
.TP
\fB\-\-except\fP TEXT
Except certain dependencies
.TP
\fB\-d,\fP \-\-deps [none|plan|run|build|all]
The dependencies to show (default: all)
.TP
\fB\-\-order\fP [stage|alpha]
Staging or alphabetic ordering of dependencies
.TP
\fB\-f,\fP \-\-format FORMAT
Format string for each element
.TP
\fB\-\-variant\fP TEXT
A variant of the specified target