.TH "BST SHOW" "1" "26-Apr-2018" "" "bst show Manual"
.SH NAME
bst\-show \- Show elements in the pipeline
.SH SYNOPSIS
.B bst show
[OPTIONS] [ELEMENTS]...
.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
    %{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 PATH
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\-\-downloadable\fP
Refresh downloadable state