Metanorma CLI Usage
Usage samples
For a single document:
$ metanorma my-standard-document.adoc
or
$ metanorma --type iso -x html my-standard-document.adoc
if type and extensions are not defined in the .
See Metanorma CLI Manual for the complete Metanorma CLI command options.
Generate a new Metanorma document using a template (metanorma new
)
Metanorma CLI allows you to create a new document using an official template, or a user-specified custom template.
To see what options are available under the new
command,
run metanorma help new
.
Generate a new document from an official Metanorma template
The metanorma new
command allows you to create a document using templates.
To create a new document using an official template, you simply
invoke the command with the mandatory options type
and doctype
,
then Metanorma will find and load the official template to
create your document.
By default, the template repository for a certain flavor is located at:
https://github.com/metanorma/metanorma-{flavor-name}
.
For example, if you want to create a new CalConnect document (type
:
calconnect
) called calconnect-foo-standard
, using the standard
template
type, run the following command:
metanorma new -d standard -t calconnect calconnect-foo-standard
This will create your bare bones document and will also print out all files created during generation.
Most Metanorma flavors provide templates
Generate a new document from a custom Metanorma template repository
The CLI allows using custom or unofficial template repositories, meaning you could also generate a new document using your own custom template.
Metanorma supports two types of template repositories:
-
Git: a Git repository (local or remote, public or private)
-
Local: a directory
Once a template repository and a template within is specified, Metanorma will automatically download and generate the new document using your custom template.
For example, if you want to create a new CalConnect document with the following parameters:
-
Document name:
my-custom-calconnect-document
-
Flavor:
calconnect
-
Doctype:
standard
-
Template:
https://gitfoo.com/foobar/mn-templates-foobar
(fictitious example)
You could execute the following command to do so:
metanorma new -d standard -t calconnect \
-l https://gitfoo.com/foobar/mn-templates-foobar my-custom-calconnect-document
When using a local directory:
metanorma new -d standard -t calconnect \
-l ~/shared/mn-templates my-custom-calconnect-document
Compile a document (metanorma compile
or just metanorma
)
The key functionality of this CLI is to allow compilation of a Metanorma document.
The command metanorma help compile
will display all usage instructions of
the compile
command shown with available options.
Usage:
metanorma compile FILENAME [..options]
Options:
-t, [--type=TYPE] # Type of standard to generate
-x, [--extensions=EXTENSIONS] # Type of extension to generate per type
-f, [--format=FORMAT] # Format of source file: eg. asciidoc
# Default: asciidoc
-r, [--require=one two three] # Require LIBRARY prior to execution
-w, [--wrapper], [--no-wrapper] # Create wrapper folder for HTML output
-a, [--asciimath], [--no-asciimath] # Keep Asciimath in XML output instead of converting it to MathM
-R, [--relaton=RELATON] # Export Relaton XML for document to nominated filename
-e, [--extract=EXTRACT] # Export sourcecode fragments from this document to nominated directory
-v, [--version=VERSION] # Print version of code (accompanied with -t)
So, let’s put this in use. For example we have a document my-iso-document.adoc
and we want to compile this using iso
and html
as extension, then we can use
the following command.
metanorma compile --type iso -x html my-iso-document.adoc
# or just
metanorma --type iso -x html my-iso-document.adoc
This should compile any valid document, but if there are some issues then it
will also print those out in the terminal. Currently, the supported flavors
are ietf
, iso
, gb
, calconnect
, csa
, m3d
and rsd
.
Compile a document collection (metanorma collection
)
This functionality compiles collections of Metanorma documents. It compiles the individual documents comprising the collection; then it compiles a document acting as a container for those collections. See https://github.com/metanorma/metanorma/wiki/Metanorma-collections, https://github.com/metanorma/metanorma-cli/blob/master/spec/fixtures/collection1.yml
The file argument to the collection command is a Metanorma Collections YAML file, which contains:
-
Directives on how the collection should be generated
-
Metadata about the collection
-
A manifest listing the documents contained in the collection, in nested hierarchy
-
Content to put at the beginning of the collection container
-
Content to put at the ending of the collection container
Documents within a collection
may cross-reference each other using the syntax
* []
,
(see Issue 57), where
mydoc
is be the value of docref/identifier corresponding to the target document,
as set in the YAML manifest.
The output directory will contain:
-
The documents referenced in the manifest, with any citations of other documents in the collection resolved, in the output formats requested
-
If
xml
orpresentation
are requested as formats, a concatenatedcollection.xml
and/orcollection.presentation.xml
file, containing all the documents in the collection. -
If
html
is requested as a format, anindex.html
HTML page, populated from a provided Liquid template cover page, and linking to all the documents in the manifest.
Usage:
metanorma collection FILENAME [..options]
Options:
-x, [--extensions=EXTENSIONS] # Type of extension to generate
-w, [--output-folder=FOLDER] # Folder to generate collection in
-c, [--coverpage=COVERPAGE] # Cover page as Liquid template for collection (currently HTML only)
List supported doctypes (metanorma list-doctypes
)
You want to know what are the supported doctypes and what do they support for
input and output format? Well, the metanorma list-doctypes
can help.
metanorma list-doctypes
To list out the details for a specific flavor run the following command:
metanorma list-doctypes <flavor>
metanorma list-doctypes iso
List supported output formats (metanorma list-extensions
)
Need to know what output formats are supported for a given flavor? We’ve got you covered.
To list out the output formats supported by every single flavor type, run the following command:
metanorma list-extensions
To list out the output formats supported by a particular flavor type, run the following command:
metanorma list-extensions <flavor>
metanorma list-extensions ieee
Show processor version (metanorma version
)
The version
command returns the version of the Metanorma processor for
a specific flavor.
The version of the ieee
processor can be shown with the following command.
metanorma version --type ieee
Add new template repository (metanorma template-repo add
)
The template-repo add
interface allows you to add your custom template
repository to Metanorma, so next time when you need to generate a new document
then you can directly use that name to use your custom template from that
repository.
metanorma template-repo add my-templates https://github.com/example/my-templates
Generating a Metanorma site
The site
subcommand allows you to manage mini site generation using the CLI.
To generate a mini site you need to provide the SOURCE_PATH
and the CLI will
take care of compiling each of those files and generate deployable site in the
provided output directory.
This interface also supports a YAML manifest file that can be used to customize the site generation process.
See the
sample metanorma.yml
for more details.
metanorma site generate SOURCE_PATH -o OUTPUT_PATH -c metanorma.yml
Using Metanorma behind proxy servers
The metanorma
command can read proxy settings from the following
environment variables:
-
HTTP_PROXY
for HTTPS and HTTP proxies -
SOCKS_PROXY
for SOCKS proxies
Please refer to our announcement on proxy support for details.
Note
|
Since metanorma uses Git for templates (and fonts via Fontist, which also relies on Git),
Git must also be configured to use proxies. Please refer to
this Gist by evantoli for details.
|