'\" Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. 
'\"
'\" Licensed under the Apache License, Version 2.0 (the "License");
'\" you may not use this code except in compliance
'\" with the License. You may obtain a copy of the License
'\" at http://www.apache.org/licenses/LICENSE-2.0
'\" 
'\" Unless required by applicable law or agreed to in writing, software 
'\" distributed under the License is distributed on an "AS IS" BASIS, 
'\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 
'\" implied. See the License for the specific language governing 
'\" permissions and limitations under the License.
.TH check-blueprint-vs-input 1UTIL {{DATE}} ONAP ONAP
.SH NAME
check-blueprint-vs-input
.SH SYNOPSIS
check-blueprint-vs-input [-h] [-b BLUEPRINT] [-i INPUTS]
                                [-B BLUEPRINT_EXCLUSION_LIST]
                                [-I INPUTS_EXCLUSION_LIST] [-t] [-v]
.SH DESCRIPTION
Validate a blueprint and inputs file against each other. This looks for the
inputs: node of the blueprint file, the inputs used by {get_input} within the
blueprint, and the values found in the inputs file. The files may be in either
YAML or JSON formats. The names default to blueprint.yaml and inputs.yaml. If
a blueprint inputs name has a default value, it is not considered an error if
it is not in the inputs file. If using a template inputs file, add the
-t/--template option. This will look for the inputs under an "inputs:" node
instead of at the top level. If there are blueprint nodes or inputs nodes that
should not be considered an error, specify them using the -B/--blueprint-
exclusion-list and -I/inputs-exclusion-list parameters. "check-blueprint-vs-
input --help" will list all of the available options.
.SS OPTIONS
.HP 20
-h, --help
show this help message and exit
.HP 20
-b BLUEPRINT, --blueprint BLUEPRINT
Path to blueprint file, defaults to 'blueprint.yaml'
.HP 20
-i INPUTS, --inputs INPUTS
Port to listen on, defaults to 'inputs.yaml'
.HP 20
-B BLUEPRINT_EXCLUSION_LIST, --blueprint-exclusion-list BLUEPRINT_EXCLUSION_LIST
Comma-separated list of names not to warn about not
                        being in the blueprint file
.HP 20
-I INPUTS_EXCLUSION_LIST, --inputs-exclusion-list INPUTS_EXCLUSION_LIST
Comma-separated list of names not to warn about not
                        being in the inputs file
.HP 20
-t, --inputs-template
Treat inputs file as coming from template area
.HP 20
-v, --verbose
Verbose, may be specified multiple times
