aboutsummaryrefslogtreecommitdiff
path: root/contrib/libxo/xo/xo.1
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/libxo/xo/xo.1')
-rw-r--r--contrib/libxo/xo/xo.1211
1 files changed, 211 insertions, 0 deletions
diff --git a/contrib/libxo/xo/xo.1 b/contrib/libxo/xo/xo.1
new file mode 100644
index 000000000000..c3d062f750f1
--- /dev/null
+++ b/contrib/libxo/xo/xo.1
@@ -0,0 +1,211 @@
+.\" #
+.\" # Copyright (c) 2014, Juniper Networks, Inc.
+.\" # All rights reserved.
+.\" # This SOFTWARE is licensed under the LICENSE provided in the
+.\" # ../Copyright file. By downloading, installing, copying, or
+.\" # using the SOFTWARE, you agree to be bound by the terms of that
+.\" # LICENSE.
+.\" # Phil Shafer, July 2014
+.\"
+.Dd December 4, 2014
+.Dt XO 1
+.Os
+.Sh NAME
+.Nm xo
+.Nd emit formatted output based on format string and arguments
+.Sh SYNOPSIS
+.Nm
+.Op Fl options
+.Op Ar argument...
+.Sh DESCRIPTION
+The
+.Nm
+utility allows command line access to the functionality of
+the
+.Nm libxo
+library.
+Using
+.Nm ,
+shell scripts can emit
+.Em XML ,
+.Em JSON ,
+or
+.Em HTML
+using the same commands that emit text output.
+.Pp
+.Bl -tag -width indent
+.It Ic --close Ar path
+Close tags for the given path
+.It Ic -C | Ic --continuation
+Indicates this output is a continuation of the previous output data
+and should appear on the same line.
+This is allows HTML output to be constructed correctly.
+.It Ic --depth Ar num
+Set the depth for pretty printing
+.It Ic --help
+Display help text
+.It Ic -H | Ic --html
+Generate HTML output
+.It Ic -J | Ic --json
+Generate JSON output
+.It Ic --leading-xpath Ar path
+Add a prefix to generated XPaths (HTML)
+.It Ic --not-first
+Indicate that this content is not the first in a series of sibling
+objects, which is vital information for "JSON" output, which requires
+a comma between such objects.
+.It Ic --open Ar path
+Open tags for the given path
+.It Ic -p | Ic --pretty
+Make 'pretty' output (add indent, newlines)
+.It Ic --style Ar style
+Generate given style (xml, json, text, html)
+.It Ic -T | Ic --text
+Generate text output (the default style)
+.It Ic --top-warp
+Indicates the entire object should be placed inside a top-level
+object wrapper, specifically when generating JSON output.
+.It Ic --version
+Display version information
+.It Ic -W | Ic --warn
+Display warnings in text on stderr
+.It Ic --warn-xml
+Display warnings in xml on stdout
+.It Ic --wrap Ar path
+Wrap output in a set of containers
+.It Ic -X | Ic --xml
+Generate XML output
+.It Ic --xpath
+Add XPath data to HTML output
+.El
+.Pp
+The
+.Nm
+utility accepts a format string suitable for
+.Xr xo_emit 3
+and a set of zero or more arguments used to supply data for that string.
+.Pp
+In addition,
+.Nm
+accepts any of the
+.Nm libxo
+options listed in
+.Xr xo_options 7 .
+.Sh EXAMPLES
+In this example,
+.Nm
+is used to emit the same data encoded in text and then in XML by
+adding the "-p" (pretty) and "-X" (XML output) flags:
+.Bd -literal -offset indent
+ % xo 'The {:product} is {:status}\\n' stereo "in route"
+ The stereo is in route
+ % xo -p -X 'The {:product} is {:status}\\n' stereo "in route"
+ <product>stereo</product>
+ <status>in route</status>
+.Ed
+.Pp
+In this example, the output from a
+.Nm
+command is shown in several styles:
+.Bd -literal -offset indent
+ xo "The {k:name} weighs {:weight/%d} pounds.\\n" fish 6
+.Pp
+ TEXT:
+ The fish weighs 6 pounds.
+ XML:
+ <name>fish</name>
+ <weight>6</weight>
+ JSON:
+ "name": "fish",
+ "weight": 6
+ HTML:
+ <div class="line">
+ <div class="text">The </div>
+ <div class="data" data-tag="name">fish</div>
+ <div class="text"> weighs </div>
+ <div class="data" data-tag="weight">6</div>
+ <div class="text"> pounds.</div>
+ </div>
+.Ed
+.Pp
+The
+.Fl "-wrap <path>"
+option can be used to wrap emitted content in a
+specific hierarchy.
+The path is a set of hierarchical names separated
+by the '/' character.
+.Bd -literal -offset indent
+ xo --wrap top/a/b/c '{:tag}' value
+.Pp
+ XML:
+ <top>
+ <a>
+ <b>
+ <c>
+ <tag>value</tag>
+ </c>
+ </b>
+ </a>
+ </top>
+ JSON:
+ "top": {
+ "a": {
+ "b": {
+ "c": {
+ "tag": "value"
+ }
+ }
+ }
+ }
+.Ed
+.Pp
+The
+.Fl "\-open <path>"
+and
+.Fl "\-close <path>"
+can be used to emit
+hierarchical information without the matching close and open
+tag.
+This allows a shell script to emit open tags, data, and
+then close tags.
+The
+.Fl \-depth
+option may be used to set the
+depth for indentation.
+The
+.Fl "\-leading-xpath"
+may be used to
+prepend data to the XPath values used for HTML output style.
+.Bd -literal -offset indent
+ #!/bin/sh
+ xo --open top/data
+ xo --depth 2 '{:tag}' value
+ xo --close top/data
+.Pp
+ XML:
+ <top>
+ <data>
+ <tag>value</tag>
+ </data>
+ </top>
+ JSON:
+ "top": {
+ "data": {
+ "tag": "value"
+ }
+ }
+.Ed
+.Sh SEE ALSO
+.Xr libxo 3 ,
+.Xr xo_emit 3 ,
+.Xr xo_options 7
+.Sh HISTORY
+The
+.Nm libxo
+library first appeared in
+.Fx 11.0 .
+.Sh AUTHORS
+.Nm libxo
+was written by
+.An Phil Shafer Aq Mt phil@freebsd.org .
+