<center>'''Yuma yangdiff Manual'''</center>


<center>YANG-Based Unified Modular Automation Tools</center>


<center>YANG Module Compare Tool</center>


<center>Version yuma123-2.13</center>

== Legal Statements ==
Copyright 2009 – 2012, Andy Bierman, All Rights Reserved.

== Additional Resources ==
This document assumes you have successfully set up the software as
described in the printed document:

Yuma Installation Guide


Other documentation includes:

Yuma Quickstart Guide

Yuma User Manual

Yuma netconfd Manual

Yuma yangcli Manual

Yuma yangdump Manual

Yuma Developer Manual

=== WEB Sites ===
* '''Netconf Central'''
** [http://www.netconfcentral.org/ http://www.netconfcentral.org/]
** Yuma Home Page
*** Free information on NETCONF and YANG, tutorials, on-line YANG module
validation and documentation database 
* '''Yuma SourceFource OpenSource Project'''
** [http://sourceforge.net/projects/yuma/
http://sourceforge.net/projects/yuma/]
*** Download Yuma source and binaries; project forums and help
* '''Yang Central'''
** [http://www.yang-central.org/ http://www.yang-central.org]
** Free information and tutorials on YANG, free YANG tools for download
* '''NETCONF Working Group Wiki Page'''
** [http://trac.tools.ietf.org/wg/netconf/trac/wiki
http://trac.tools.ietf.org/wg/netconf/trac/wiki]
** Free information on NETCONF standardization activities and NETCONF
implementations
* '''NETCONF WG Status Page'''
** http://tools.ietf.org/wg/netconf/
** IETF Internet draft status for NETCONF documents
* '''libsmi Home Page'''
** [http://www.ibr.cs.tu-bs.de/projects/libsmi/
http://www.ibr.cs.tu-bs.de/projects/libsmi/]
** Free tools such as smidump, to convert SMIv2 to YANG
* '''YumaWorks'''
** [http://www.yumaworks.com/ http://www.yumaworks.com]
** Offers support, training, and consulting for Yuma.
** Offers YumaPro, a professional version of Yuma that includes
concurrency, external database support, sub-agent support, multiple
northbound interfaces, and more. API compatible with Yuma. Availability:
September, 2012. Licensed.

=== Mailing Lists ===
* '''NETCONF Working Group'''
** http://www.ietf.org/html.charters/netconf-charter.html
** Technical issues related to the NETCONF protocol are discussed on the
NETCONF WG mailing list. Refer to the instructions on the WEB page for
joining the mailing list.
* '''NETMOD Working Group'''
** [http://www.ietf.org/html.charters/netmod-charter.html
http://www.ietf.org/html.charters/netmod-charter.html]
** Technical issues related to the YANG language and YANG data types are
discussed on the NETMOD WG mailing list. Refer to the instructions on
the WEB page for joining the mailing list.

== Conventions Used in this Document ==
The following formatting conventions are used throughout this document:

<center>'''Documentation Conventions'''</center>



{| class=wikitable border="1"
! <center>Convention</center>
! <center>Description</center>

|-
|  '''--foo'''
|  CLI parameter foo

|-
|  '''<nowiki><foo></nowiki>'''
|  XML parameter foo

|-
|  '''foo'''
|  '''yangcli''' command or parameter

|-
|  '''$FOO'''
|  Environment variable FOO

|-
|  '''$$foo'''
|  '''yangcli''' global variable foo

|-
|   some text
|  Example command or PDU

|-
|  some text
|  Plain text

|}
= yangdiff User Guide =
[[Image:]]


== Introduction ==
The '''yangdiff''' program is used to compare two revisions of the same
YANG file. 

=== Features ===
The '''yangdiff''' program has the following features:

* The conceptual YANG object trees are compared, not the actual YANG
statements.
* Two separate subtrees of modules can be compared, not just 1 file at a
time.
* The differences report format for differences is easy to read, and can
be configured with 2 different levels of verbosity.
* A YANG revision statement can be automatically generated instead of a
list of differences. This will include an English text summary of the
differences found.

=== Starting yangdiff ===
The current working directory in use when '''yangdiff''' is invoked is
important. It is most convenient to run '''yangdiff''' from a work
directory, rather than the installation directory or within the module
library.

The '''yangdiff''' program can be invoked several ways:

* To get the current version and exit:

         '''yangdiff --version'''


* To get program help and exit:

         '''yangdiff --help'''
         '''yangdiff --help --brief'''
         '''yangdiff --help --full'''


* To compare a new YANG module named 'foo', with an old version named
foo.2008-09-01.yang, the following command line can be used

         '''yangdiff --old=foo.2008-09-01.yang --new=foo'''


* To get all the configuration parameters from a text file named
'~/yangdiff-project1.conf':

             '''yangdiff''
--''config''<nowiki>=</nowiki>''~/yangdiff-project1.conf'''


* To generate a terse differences report called
''~/project-X-diffs.log'' for the old files in the
'''/public/project-X/modules''' with the new modules in the '''~/work'''
directory:

             '''yangdiff'' --''difftype=terse 
             --output=~/project-X-diffs.log \'''
             '''--old=/public/project-X/modules \'''
             '''--new=/work'''

* To generate a revision statement differences to
''~/foo-projectX-revision.txt'' for the '~/work/foo.yang' module, with
the old version in the in the '''/public/project-X/modules''':<br/> 


             '''yangdiff'' --''difftype=revision 
             --output=~/foo-project-X-revision.txt \'''
             '''--old=/public/project-X/modules \'''
             '''--new=/work/foo.yang'''

=== Stopping yangdiff ===
There is no interactive mode for '''yangdiff''', so there is no need for
a command to exit the program.

The Control C character sequence can be used to cancel the
'''yangdiff''' processing in progress. However, this will leave any
partially completed output files in place.

=== Configuration Parameter List ===
The following configuration parameters are used by '''yangdiff'''. Refer
to the CLI Reference for more details.


<center>'''yangdiff CLI Parameters'''</center>



{| class=wikitable border="1"
|  <center>'''parameter'''</center>
|  <center>'''description'''</center>

|-
|  --config
|  Specifies the configuration file to use for parameters.

|-
|  --datapath
|  Sets the data file search path.

|-
|  --difftype
|  Specifies the type of differences report that should be output.

|-
|  --feature-disable
|  Leaf list of features to disable

|-
|  --feature-enable
|  Specifies a feature that should be enabled

|-
|  --feature-enable-default
|  Specifies if a feature should be enabled or disabled by default

|-
|  --header
|  Specifies whether the module header data should be compared or not.

|-
|  --help
|  Get context-sensitive help, then exit.

|-
|  --help-mode
|  Adjust the help output (--brief, or --full).

|-
|  --indent
|  Specifies the indent count to use when writing data.

|-
|  --log
|  Specifies the log file to use instead of STDOUT.

|-
|  --log-append
|  Controls whether a log file will be reused or overwritten.

|-
|  --log-level
|  Controls the verbosity of logging messages.

|-
|  --modpath
|  Sets the module search path.

|-
|  --new
|  Specifies the location of the new revision to compare.

|-
|  --old
|  Specifies the location of the old revision to compare.

|-
|  --output
|  Specifies where output files should be generated.

|-
|  --runpath
|  Sets the executable file search path.

|-
|  --subdirs
|  Controls whether sub-directories are searched for YANG files.

|-
|  --version
|  Prints the program version and then exit.

|-
|  --warn-idlen
|  Controls how identifier lengths are checked.

|-
|  --warn-linelen
|  Controls how line lengths are checked.

|-
|  --warn-off
|  Suppresses the specified warning number.

|-
|  --yuma-home
|  Specifies the '''$YUMA_HOME''' project root to use when searching for
files.

|}
== Comparing YANG Modules ==
The '''yangdiff''' program compares YANG files in the following maner:

* The cooked object trees are compared, not the actual YANG statements.
* Whitespace differences are ignored.
* Non-semantic changes are ignored:
** A uses-stmt can replace a set of objects if the grouping is identical
to the old objects.
** Refine statements are combined into the cooked objects, and not
compared directly.
** A typedef statement can replace an inline type statement
** Changes to YANG comments are ignored.
** Sub-statement order is ignored, however object order with a container
or list is not ignored.
** Objects can be moved to submodules, and include statements instead.

If the '''--old''' parameter is missing, then the module search path
will be used to find the specified module with the same name. If the'''
--old '''parameter contains just a module name, then the module search
path will be used to find a module with the new name.

The '''--new''' parameter is required. It can represent one YANG file or
a directory of new YANG modules.

The '''--difftype''' parameter is optional. The 'normal' report mode is
used if this parameter is missing.

The '''--output''' parameter will be used for the report file, if it is
specified.



{| class=wikitable border="1"
|  <center>'''symbol'''</center>
|  <center>'''description'''</center>

|-
|  <center>'''A'''</center>
|  Definition has bend added.

|-
|  <center>'''M'''</center>
|  Definition has been modified.

|-
|  <center>'''D'''</center>
|  Definition has been deleted.

|}
== Diff Reports ==
This section uses the example module below (test/'''test3a.yang''') to
demonstrate the different report formats available. The old module
revision is '''test/test3.yang'''.

The following command is used in all 3 examples, except the value of the
--difftype parameter is changed each time.


     '''<nowiki>yangdiff --old=test3a --new=test3
–difftype=<enum></nowiki>'''

=== Terse Report ===
If '''--difftype=terse''' is selected, then a brief summary of all
changes will be listed. There will be no indentation, and only the
change (Add, Modify, Delete), and the top-level definition is
identified.


 // Generated by yangdiff 0.9.7.473 
 // Copyright (c) 2009, Netconf Central, All Rights Reserved. 

 // old: test3 (2008-10-19) test3.yang 
 // new: test3 (2009-09-09) test3a.yang 

 D revision '2008-10-19' 
 A revision '2009-09-09' 
 A feature X 
 A identity testbase 
 A identity testbase1 
 M typedef C 
 D container test-D1 
 D leaf test-D 
 M container test33 

=== Normal Report ===
If '''--difftype=normal''' is selected, then a complete summary of all
changes will be listed.

If a change line is indented, it indicates a sub-statement of the object
in the previous line has been changed.


 // Generated by yangdiff 0.9.7.473 
 // Copyright (c) 2009, Netconf Central, All Rights Reserved. 

 // old: test3 (2008-10-19) test3.yang 
 // new: test3 (2009-09-09) test3a.yang 

 D revision '2008-10-19' 
 A revision '2009-09-09' 
 A feature X 
 A identity testbase 
 A identity testbase1 
 M typedef C 
    M type 
       M range from 'min .. 41 | 45' to 'min .. 41' 
 D container test-D1 
 D leaf test-D 
 M container test33 
    D presence 'not a top-level mand...' 
    M choice f 
       M case f1 
          M leaf f1 
             A if-feature 'X' 

=== Revision Statement ===
If '''--difftype=revision''' is selected, then a complete summary of all
changes will be printed in the form of a YANG revision statement. The
current date will be used for the revision-date field of the revision
statement.


 // Generated by yangdiff 0.9.7.473 
 // Copyright (c) 2009, Netconf Central, All Rights Reserved. 

 // old: test3 (2008-10-19) test3.yang 
 // new: test3 (2009-09-09) test3a.yang 

    revision 2009-09-10 { 
       description " 
          - Removed revision '2008-10-19' 
          - Added revision '2009-09-09' 
          - Added feature X 
          - Added identity testbase 
          - Added identity testbase1 
          - Changed typedef C 
             - Changed type 
                - Changed range from 'min .. 41 | 45' to 'min .. 41' 
          - Removed container test-D1 
          - Removed leaf test-D 
          - Changed container test33 
             - Removed presence 'not a top-level mand...' 
             - Changed choice f 
                - Changed case f1 
                   - Changed leaf f1 
                      - Added if-feature 'X' 
       "; 
    } 

= CLI Reference =
The '''yangdiff''' program uses command line interface (CLI) parameters
to control program behavior.

The following sections document all the Yuma CLI parameters relevant to
this program, in alphabetical order.

== --config ==
The '''--config''' parameter specifies the name of a Yuma configuration
file that contains more parameters to process, in addition to the CLI
parameters.

Refer to the 'Configuration Files' section for details on the format of
this file.


<center>'''--config parameter'''</center>



{| class=wikitable border="1"
|  Syntax
|  string: complete file specification of the text file to parse for
more parameters.

|-
|  Default:
|  /etc/yuma/yangdiff.conf

|-
|  Min Allowed:
|  0

|-
|  Max Allowed:
|  1

|-
|  Supported by:
|  netconfdyangcliyangdiffyangdump

|-
|  Example:
|   yangdiff --old=test1
    --new=test1a \
    --config=~/testconf.conf

|}
== --difftype ==
The '''--difftype''' parameter controls how differences are displayed in
the '''yangdiff''' program.. 

The allowed values are 'terse', 'normal', and 'revision'. 


The basic report format is: 


     '''<nowiki>[add/delete/modify] field-name [field-value]
</nowiki>'''

The ''''terse'''' option will include the names of the top-level fields
that are different. The actual differences for modification lines ('M')
are not printed.


     M typedef C 
     D container test-D1 
     D leaf test-D 
     M container test33

The ''''normal'''' option will include any changes for any nested fields
or objects. A brief description of the changes made in a modification
line ('M') are printed. This is the default reporting mode.


 M typedef C 
    M type 
       M range from 'min .. 41 | 45' to 'min .. 41' 
 D container test-D1 
 D leaf test-D 
 M container test33 
    D presence 'not a top-level mand...' 
    M choice f 
       M case f1 
          M leaf f1 
             A if-feature 'X'

The ''''revision'''' option will generate the differences report in YANG
revision-stmt format. For example:


   revision 2009-09-10 { 
       description " 
          - Changed typedef C 
             - Changed type 
                - Changed range from 'min .. 41 | 45' to 'min .. 41' 
          - Removed container test-D1 
          - Removed leaf test-D 
          - Changed container test33 
             - Removed presence 'not a top-level mand...' 
             - Changed choice f 
                - Changed case f1 
                   - Changed leaf f1 
                      - Added if-feature 'X' 
       "; 
    }

<center>'''difftype parameter'''</center>



{| class=wikitable border="1"
|  Syntax
|  enumeration: '''terse normal revision'''

|-
|  Default:
|  normal

|-
|  Min Allowed:
|  0

|-
|  Max Allowed:
|  1

|-
|  Supported by:
|  yangdiff

|-
|  Example:
|   yangdiff --difftype=revision \
   --new=test3a\
   --old=~test3

|}
== --feature-disable ==
The '''--feature-disable''' parameter directs all programs to disable a
specific feature.

This parameter is a formatted string containing a module name, followed
by a colon ':', followed by a feature name, e.g.,


 test:feature1

It is an error if a '''--feature-enable''' and '''--feature-disable'''
parameter specify the same feature.

Parameters for unknown features will be ignored.


<center>'''--feature-disable parameter'''</center>



{| class=wikitable border="1"
|  Syntax
|  formatted string (module:feature

|-
|  Default:
|  none

|-
|  Min Allowed:
|  0

|-
|  Max Allowed:
|  unlimited

|-
|  Supported by:
|  yangcliyangdiffyangdumpnetconfd

|-
|  Example:
|   yangdiff  --format=c \
     --feature-disable=test:feature1 \
     --module=test

|}
== --feature-enable ==
The '''--feature-enable''' parameter directs all programs to enable a
specific feature.

This parameter is a formatted string containing a module name, followed
by a colon ':', followed by a feature name, e.g.,


 test:feature1

It is an error if a '''--feature-disable''' and '''--feature-enable'''
parameter specify the same feature.

Parameters for unknown features will be ignored.


<center>'''--feature-enable parameter'''</center>



{| class=wikitable border="1"
|  Syntax
|  formatted string (module:feature

|-
|  Default:
|  none

|-
|  Min Allowed:
|  0

|-
|  Max Allowed:
|  unlimited

|-
|  Supported by:
|  yangcliyangdiffyangdumpnetconfd

|-
|  Example:
|   yangdiff  \
     --feature-enable=test:feature1 \
     --old=test --new=test-new

|}
== --feature-enable-default ==
The '''--feature-enable-default''' parameter controls how '''yangdump'''
will generate C code for YANG features by default.

If 'true', then by default, features will be enabled.

If 'false', then by default, features will be disabled.

If a '''--feature-enable''' or '''--feature-disable''' parameter is
present for a specific feature, then this parameter will be ignored for
that feature.


<center>'''--feature-enable-default parameter'''</center>



{| class=wikitable border="1"
|  Syntax
|  boolean (true or false)

|-
|  Default:
|  TRUE

|-
|  Min Allowed:
|  0

|-
|  Max Allowed:
|  1

|-
|  Supported by:
|  yangcliyangdiffyangdumpnetconfd

|-
|  Example:
|   yangdiff \
    --feature-enable-default=false

|}
== --header ==
The '''--header''' parameter controls whether YANG header contents will
be compared in the '''yangdiff''' program.


<center>'''--header parameter'''</center>



{| class=wikitable border="1"
|  Syntax
|  boolean (true or false)

|-
|  Default:
|  TRUE

|-
|  Min Allowed:
|  0

|-
|  Max Allowed:
|  1

|-
|  Supported by:
|  yangdiff

|-
|  Example:
|   yangdiff --header=false \
   --old=~/saved-modules \
   -- new=~/work

|}
== --help ==
The '''--help''' parameter causes program help text to be printed, and
then the program will exit instead of running as normal.

This parameter can be combined with the '''--help-mode''' parameter to
control the verbosity of the help text. Use '''--brief''' for less, and
'''--full '''for more than the normal verbosity.

This parameter can be combined with the '''--version''' parameter in all
programs. It can also be combined with the '''--show-errors''' parameter
in '''yangdump'''.

The program configuration parameters will be displayed in alphabetical
order, not in schema order.


<center>'''--help parameter'''</center>



{| class=wikitable border="1"
|  Syntax
|  empty

|-
|  Default:
|  none

|-
|  Min Allowed:
|  0

|-
|  Max Allowed:
|  1

|-
|  Supported by:
|  netconfdyangcliyangdiffyangdump

|-
|  Example:
|   yangdiff --help

|}
== --help-mode ==
The '''--help-mode''' parameter is used to control the amount of detail
printed when help text is requested in some command. It is always used
with another command, and makes no sense by itself. It is ignored unless
used with the '''--help''' parameter.

<center>'''--help-mode parameter'''</center>



{| class=wikitable border="1"
|  Syntax
|  choice of 3 empty leafs

'''--brief --normal --full'''

|-
|  Default:
|  normal

|-
|  Min Allowed:
|  0

|-
|  Max Allowed:
|  1

|-
|  Supported by:
|  netconfdyangcliyangdiffyangdump

|-
|  Example:
|   yangdiff --help --help-mode=full

|}
* '''default choice: '''normal
* '''choice help-mode'''
** '''brief'''
*** type: empty
*** This parameter specifies that brief documentation mode should be
used.
** '''normal'''
*** type: empty
*** This parameter specifies that normal documentation mode should be
used.
** '''full'''
*** type: empty
*** This parameter specifies that full documentation mode should be
used.

== --indent ==
The '''--indent''' parameter specifies the number of spaces that will be
used to add to the indentation level, each time a child node is printed
during program operation.

<center>'''--indent parameter'''</center>



{| class=wikitable border="1"
|  Syntax
|  uint32 (0 .. 9)

|-
|  Default:
|  2

|-
|  Min Allowed:
|  0

|-
|  Max Allowed:
|  1

|-
|  Supported by:
|  netconfdyangcliyangdiffyangdump

|-
|  Example:
|   yangcli --indent=4

|}
== --log ==
The '''--log''' parameter specifies the file name to be used for logging
program messages, instead of STDOUT. It can be used with the optional'''
--log-append''' and '''--log-level''' parameters to control how the log
file is written.


<center>'''--log parameter'''</center>



{| class=wikitable border="1"
|  Syntax
|  string: log file specification

|-
|  Default:
|  none

|-
|  Min Allowed:
|  0

|-
|  Max Allowed:
|  1

|-
|  Supported by:
|  netconfdyangcliyangdiffyangdump

|-
|  Example:
|   yangdiff  --log=~/test.log&

|}
== --log-append ==
The '''--log-append''' parameter specifies that the existing log file
(if any) should be appended , instead of deleted. It is ignored unless
the '''--log''' parameter is present.


<center>'''--log-append parameter'''</center>



{| class=wikitable border="1"
|  Syntax
|  empty

|-
|  Default:
|  none

|-
|  Min Allowed:
|  0

|-
|  Max Allowed:
|  1

|-
|  Supported by:
|  netconfdyangcliyangdiffyangdump

|-
|  Example:
|   yangdiff  --log-append \
   --log=~/server.log&

|}
== --log-level ==
The '''--log-level''' parameter controls the verbosity level of messages
printed to the log file or STDOUT, if no log file is specified.

The log levels are incremental, meaning that each higher level includes
everything from the previous level, plus additional messages.

There are 7 settings that can be used:

* '''none''': All logging is suppressed. Use with extreme caution!
* '''error''': Error messages are printed, indicating problems that
require attention.
* '''warn''': Warning messages are printed, indicating problems that may
require attention.
* '''info''': Informational messages are printed, that indicate program
status changes.
* '''debug''': Debugging messages are printed that indicate program
activity.
* '''debug2''': Protocol debugging and trace messages are enabled.
* '''debug3''': Very verbose debugging messages are enabled. This has an
impact on resources and performance, and should be used with caution.

<center>'''log-level parameter'''</center>



{| class=wikitable border="1"
|  Syntax
|  enumeration: '''off error warn info debug debug2 debug3'''

|-
|  Default:
|  --info (--debug for DEBUG builds)

|-
|  Min Allowed:
|  0

|-
|  Max Allowed:
|  1

|-
|  Supported by:
|  netconfdyangcliyangdiffyangdump

|-
|  Example:
|   yangdiff  --log-level=debug \
   --log=~/server.log&

|}
== --modpath ==
The '''--modpath''' parameter specifies the YANG module search path to
use while searching for YANG files. It consists of a colon (':')
separated list of path specifications, commonly found in Unix, such as
the '''$PATH''' environment variable.

This parameter overrides the '''$YUMA_MODPATH''' environment variable,
if it is present.


<center>'''--modpath parameter'''</center>



{| class=wikitable border="1"
|  Syntax
|  string: list of directory specifications

|-
|  Default:
|  '''$YUMA_MODPATH''' environment variable

|-
|  Min Allowed:
|  0

|-
|  Max Allowed:
|  1

|-
|  Supported by:
|  netconfdyangcliyangdiffyangdump

|-
|  Example:
|   yangdiff \
   --modpath=”~/testmodules:~/modules:~/trunk/netconf/modules”

|}
== --new ==
The '''--new''' parameter specifies the YANG file or directory
containing the new revision to be compared in the '''yangdiff'''
program.

If this parameter indicates a filename, then it represents the YANG
source module name to compare as the newer of the two revisions. 

If this parameter indicates a directory (and the 'old' parameter
indicates a filename), then it will be used to to search for a file with
the same name as the 'new' parameter. 

If the 'old' parameter identifies a directory as well (and the
'no-subdirs' parameter is present), then the modules within the 'new'
directory will be compared to files with the same name in the 'old'
directory. 

If the '''--subdirs''' parameter is ''true'', then all sub-directories
within the 'src' directory will also be checked. 

If this string begins with a '~' character, then a username is expected
to follow or a directory separator character. If it begins with a '$'
character, then an environment variable name is expected to follow. 


 <nowiki>~/some/path ==> <my-home-dir>/some/path </nowiki>
 <nowiki>~fred/some/path ==> <fred-home-dir>/some/path </nowiki>
 <nowiki>$workdir/some/path ==> <workdir-env-var>/some/path </nowiki>

This parameter must be present unless the''' --help''' or
'''--version''' parameters are present. 


<center>'''--new parameter'''</center>



{| class=wikitable border="1"
|  Syntax
|  string (module or directory specification. length 1 .. 4095)

|-
|  Default:
|  none

|-
|  Min Allowed:
|  1

|-
|  Max Allowed:
|  1

|-
|  Supported by:
|  yangdiff

|-
|  Example:
|   yangdiff \
   --new=test3a
   --difftype=terse 
   --old=test3\

|}
== --old ==
The '''--old''' parameter specifies the YANG file or directory
containing the older revision to be compared in the '''yangdiff'''
program.

If this parameter indicates a filename, then it represents the YANG
source module name to compare as the older of the two revisions. 

If this parameter indicates a directory (and the 'old' parameter
indicates a filename), then it will be used to to search for a file with
the same name as the 'new' parameter. 

If this string begins with a '~' character, then a username is expected
to follow or a directory separator character. If it begins with a '$'
character, then an environment variable name is expected to follow. 


 <nowiki>~/some/path ==> <my-home-dir>/some/path </nowiki>
 <nowiki>~fred/some/path ==> <fred-home-dir>/some/path </nowiki>
 <nowiki>$workdir/some/path ==> <workdir-env-var>/some/path </nowiki>

This parameter must be present unless the '''--help''' or
'''--version''' parameters are present. 


<center>'''--old parameter'''</center>



{| class=wikitable border="1"
|  Syntax
|  string (module or directory specification. length 1 .. 4095)

|-
|  Default:
|  none

|-
|  Min Allowed:
|  1

|-
|  Max Allowed:
|  1

|-
|  Supported by:
|  yangdiff

|-
|  Example:
|   yangdiff \
   --old=test3
   --difftype=terse 
   --new=test3a\

|}
== --output ==
The '''--output''' parameter specifies where the output files generated
by the program will be stored.

* The default is STDOUT if this parameter is not specified and the
'''--defnames''' parameter is set to 'false'. 
* If this parameter represents an existing directory, then the
'''--defnames''' parameter will be set to 'true' by default. 
* If this parameter represents a file name, then the '''--defnames'''
parameter will be ignored, and all translation output will be directed
to the specified file. 
* If this string begins with a '~' character, then a username is
expected to follow or a directory separator character. If it begins with
a '$' character, then an environment variable name is expected to
follow. 

         <nowiki>~/some/path ==> <my-home-dir>/some/path </nowiki>

     <nowiki>~fred/some/path ==> <fred-home-dir>/some/path </nowiki>

     <nowiki>$workdir/some/path ==> <workdir-env-var>/some/path
</nowiki>


* If the target specified in this parameter '''does not '''exist:
** If there is only one file to be output, then this parameter is used
as the file name.
** If there are multiple files to be output, then this parameter is used
as a directory name. A new directory will be created, if it is needed.
* If the target specified in this parameter '''does''' exist:
** If there is only one file to be output:
*** If the existing target is also a file, then the current file is
over-written.
*** If the existing target is a directory, then the output file will be
created in this directory.
** If there are multiple files to be output:
*** If the existing target is a file, then an error will be generated
instead of the output files.
*** If the existing target is a directory, then the output files will be
created in the specified directory.
* Use a trailing path separator character to force this parameter value
to be treated as a path specification (e.g., '~/workfiles/').
* This parameter is ignored if the '''--format''' parameter is missing.

<center>'''--output parameter'''</center>



{| class=wikitable border="1"
|  Syntax
|  string (path or file specification)

|-
|  Default:
|  none

|-
|  Min Allowed:
|  0

|-
|  Max Allowed:
|  1

|-
|  Supported by:
|  yangdumpyangdiff

|-
|  Example:
|   yangdiff  \
   --output=~/diff-files

|}
== --subdirs ==
The '''--subdirs''' parameter controls whether sub-directories should be
searched or not, if they are found during a module search.

If false, the file search paths for modules, scripts, and data files
will not include sub-directories if they exist in the specified path. 


<center>'''--subdirs parameter'''</center>



{| class=wikitable border="1"
|  Syntax
|  boolean

|-
|  Default:
|  TRUE

|-
|  Min Allowed:
|  0

|-
|  Max Allowed:
|  1

|-
|  Supported by:
|  yangdiff

yangdump

|-
|  Example:
|   yangiff  \
   --subdirs=false \
   --subtree=/testpath

|}
== --version ==
The '''--version''' parameter causes the program version string to be
printed, and then the program will exit instead of running as normal. 

All Yuma version strings use the same format:

<nowiki>DEBUG: <major>.<minor>.<svn-build-version></nowiki>

or

<nowiki>NON-DEBUG: <major>.<minor>-<release></nowiki>

An example version number that may be printed:


     yangdiff  2.0-0

This parameter can be combined with the '''--help '''parameter.


<center>'''--version parameter'''</center>



{| class=wikitable border="1"
|  Syntax
|  empty

|-
|  Default:
|  none

|-
|  Min Allowed:
|  0

|-
|  Max Allowed:
|  1

|-
|  Supported by:
|  netconfdyangcliyangdiffyangdump

|-
|  Example:
|   yangdiff  --version

|}
== --warn-idlen ==
The''' --warn-idlen''' parameter controls whether identifier length
warnings will be generated.

The value zero disables all identifier length checking. If non-zero,
then a warning will be generated if an identifier is defined which has a
length is greater than this amount.


<center>'''--warn-idlen parameter'''</center>



{| class=wikitable border="1"
|  Syntax
|  uint32: 0 to disable, or 8 .. 1023

|-
|  Default:
|  64

|-
|  Min Allowed:
|  0

|-
|  Max Allowed:
|  1

|-
|  Supported by:
|  netconfdyangcliyangdiffyangdump

|-
|  Example:
|   yangdiff --warn-idlen=50

|}
== --warn-linelen ==
The''' --warn-linelen''' parameter controls whether line length warnings
will be generated.

The value zero disables all line length checking. If non-zero, then a
warning will be generated if a YANG file line is entered which has a
length is greater than this amount.

Tab characters are counted as 8 spaces.


<center>'''--warn-linelen parameter'''</center>



{| class=wikitable border="1"
|  Syntax
|  uint32: 0 to disable, or 40 .. 4095

|-
|  Default:
|  72

|-
|  Min Allowed:
|  0

|-
|  Max Allowed:
|  1

|-
|  Supported by:
|  netconfdyangcliyangdiffyangdump

|-
|  Example:
|   yangdiff --warn-linelen=79

|}
== --warn-off ==
The''' --warn-off''' parameter suppresses a specific warning number.

The error and warning numbers, and the default messages, can be viewed
with the yangdump program by using the '''--show-errors''' configuration
parameter.

The specific warning message will be disabled for all modules. No
message will be printed and the warning will not count towards the total
for that module.


<center>'''--warn-off parameter'''</center>



{| class=wikitable border="1"
|  Syntax
|  uint32: 400 .. 899

|-
|  Default:
|  none

|-
|  Min Allowed:
|  0

|-
|  Max Allowed:
|  499

|-
|  Supported by:
|  netconfdyangcliyangdiffyangdump

|-
|  Example:
|   yangdiff  --warn-off=435
 <nowiki># revision order not descending</nowiki>

|}
== --yuma-home ==
The '''--yuma-home''' parameter specifies the project directory root to
use when searching for files.

If present, this directory location will override the ''''$YUMA_HOME'''
environment variable, if it is set. If this parameter is set to a
zero-length string, then the $'''YUMA_HOME''' environment variable will
be ignored.

The following directories are searched when either the '''$YUMA_HOME'''
environment variable or this parameter is set:

* '''$YUMA_HOME/modules'''
** This sub-tree is searched for YANG files.
* '''$YUMA_HOME/data'''
** This directory is searched for data files.
* '''$YUMA_HOME/scripts'''
** This directory is searched for '''yangcli''' script files.

<center>'''yuma-home parameter'''</center>



{| class=wikitable border="1"
|  Syntax
|  string: directory specification

|-
|  Default:
|  '''$YUMA_HOME''' environment variable

|-
|  Min Allowed:
|  0

|-
|  Max Allowed:
|  1

|-
|  Supported by:
|  netconfdyangcliyangdiffyangdump

|-
|  Example:
|   yangdiff  \
   --yuma-home=~/sw/netconf 

|}
