Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

unified-args

Package Overview
Dependencies
Maintainers
1
Versions
22
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

unified-args

Create CLIs for unified processors

  • 3.1.1
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

unified-args Build Status Coverage Status

Interface for creating CLIs around unified processors. Wrapper around the engine to configure it with command-line arguments. Should be required and configured in an executable script, on its own, as it handles the whole process.

unifiedjs.github.io, the website for unified provides a good overview about what unified can do. Make sure to visit it and try its introductionary Guides.

Installation

npm:

npm install unified-args

Usage

This example creates a CLI for remark, loading remark- plugins, searching for markdown files, and loading configuration and ignore files.

cli (you can make it runnable with: chmod +x cli):

#!/usr/bin/env node
'use strict';

var start = require('unified-args');
var extensions = require('markdown-extensions');
var remark = require('remark');
var pack = require('remark/package.json');

var name = pack.name;

start({
  processor: remark,
  name: name,
  description: pack.description,
  version: pack.version,
  pluginPrefix: name,
  extensions: extensions,
  packageField: name + 'Config',
  rcName: '.' + name + 'rc',
  ignoreName: '.' + name + 'ignore'
});

Table of Contents

API

start(configuration)

Create a CLI for a unified processor.

configuration

All options are required.

CLI

CLIs created with unified-args, such as the example above, creates an interface similar to the below (run cli --help for accurate information):

Usage: remark [options] [path | glob ...]

  Markdown processor powered by plugins

Options:

  -h  --help                output usage information
  -v  --version             output version number
  -o  --output [path]       specify output location
  -r  --rc-path <path>      specify configuration file
  -i  --ignore-path <path>  specify ignore file
  -s  --setting <settings>  specify settings
  -e  --ext <extensions>    specify extensions
  -u  --use <plugins>       use plugins
  -w  --watch               watch for changes and reprocess
  -q  --quiet               output only warnings and errors
  -S  --silent              output only errors
  -f  --frail               exit with 1 on warnings
  -t  --tree                specify input and output as syntax tree
      --file-path <path>    specify path to process as
      --tree-in             specify input as syntax tree
      --tree-out            output syntax tree
      --[no-]stdout         specify writing to stdout (on by default)
      --[no-]color          specify color in report (on by default)
      --[no-]config         search for configuration files (on by default)
      --[no-]ignore         search for ignore files (on by default)

Examples:

  # Process `input.md`
  $ remark input.md -o output.md

  # Pipe
  $ remark < input.md > output.md

  # Rewrite all applicable files
  $ remark . -o

All non-options are seen as input and can be:

  • Paths (cli README.txt) and globs (cli *.txt) pointing to files to load
  • Paths (cli test) and globs (cli fixtures/{in,out}) pointing to directories. These are searched for files with known extensions which are not ignored by patterns in ignore files. The default behaviour is to exclude files in node_modules and hidden directories (those starting with a dot: .) unless explicitly given
  • Default: none
  • Engine: files

--help

cli --help

Output short usage information.

  • Default: off
  • Alias: -h

--version

cli --version

Output version number.

  • Default: off
  • Alias: -v

--output [path]

cli . --output
cli . --output doc
cli input.txt --output doc/output.text

Whether to write successfully processed files, and where to. Can be set from configuration files.

  • If output is not given, files are not written to the file-system
  • If output is given without path, input files are overwritten when successful
  • If output is given with path and it points to an existing directory, files are written to that directory (intermediate directories are not created)
  • If output is given with path, the parent directory of that path exists, and one file is processed, the file is written to the given path
  • Default: off
  • Alias: -o
  • Engine: output

--rc-path <path>

cli . --rc-path config.json

File-path to a JSON configuration file to load, regardless of --config.

  • Default: none
  • Alias: -r
  • Engine: rcPath

--ignore-path <path>

cli . --ignore-path .gitignore

File-path to an ignore file to load, regardless of --ignore.

--setting <settings>

cli input.txt --setting alpha:true
cli input.txt --setting bravo:true --setting '"charlie": "delta"'
cli input.txt --setting echo-foxtrot:-2
cli input.txt --setting 'golf: false, hotel-india: ["juliet", 1]'

Configuration for the parser and compiler of the processor. Can be set from configuration files.

The given settings are JSON, with two exceptions:

  • Surrounding braces must not be used: "foo": 1, "bar": "baz" is valid
  • Keys do not need to be quoted: both "foo": "bar" and foo: "bar" are considered equal

Top-level keys are camel-cased: foo-bar: true and fooBar: true are treated the same.

--use <plugin>

cli input.txt --use man
cli input.txt --use 'toc=max-depth:3'

Plug-in to load by its name or path, optionally with options, and use on every processed file. Can be set from configuration files.

To pass options, follow the plugin by an equals sign (=) and settings, which have the same in syntax as --setting <settings>.

Plug-ins prefixed with the configured pluginPrefix are preferred over modules without prefix.

  • Default: none
  • Alias: -u
  • Engine: plugins

--ext <extensions>

cli . --ext html
cli . --ext html,htm

Specify one or more extensions to include when searching for files.

If no extensions are given, uses the configured extensions.

--watch

cli . -qwo

Yields:

Watching... (press CTRL+C to exit)
Note: Ignoring `--output` until exit.

Process as normal, then watch found files and reprocess when they change.

The watch is stopped when SIGINT is received (usually done by pressing CTRL-C).

If --output is given without path it is not honoured, to prevent an infinite loop. When the watch closes, a final process runs including --output.

  • Default: off
  • Alias: -w

--tree

cli --tree < input.json > output.json

Treat input as a syntax tree in JSON and output the transformed syntax tree. This runs neither the parsing nor the compilation phase.

  • Default: off
  • Alias: -t
  • Engine: tree

--tree-in

cli --tree-in < input.json > input.txt

Treat input as a syntax tree in JSON. This does not run the parsing phase.

--tree-out

cli --tree-out < input.txt > output.json

Output the transformed syntax tree. This does not run the compilation phase.

--quiet

cli input.txt --quiet

Ignore files without any messages in the report. The default behaviour is to show a success message.

  • Default: off
  • Alias: -q
  • Engine: quiet

--silent

cli input.txt --silent

Show only fatal errors in the report. Turns --quiet on.

  • Default: off
  • Alias: -S
  • Engine: silent

--frail

cli input.txt --frail

Exit with a status code of 1 if warnings or errors occur. The default behaviour is to exit with 1 on errors.

  • Default: off
  • Alias: -f
  • Engine: frail

--file-path <path>

cli --file-path input.txt < input.txt > doc/output.txt

File path to process the given file on stdin(4) as, if any.

--stdout

cli input.txt --no-stdout

Whether to write a processed file to stdout(4).

  • Default: off if --output or --watch are given, or if multiple files could be processed
  • Engine: out

--color

cli input.txt --no-color

Whether to output ANSI color codes in the report.

--config

cli input.txt --no-config

Whether to load configuration files.

Searches for files with the configured rcName: $rcName (JSON), $rcName.js (JavaScript), $rcName.yml (YAML), and $rcName.yaml (YAML); and looks for the configured packageField in package.json files.

--ignore

cli . --no-ignore

Whether to load ignore files.

Searches for files named $ignoreName.

Diagnostics

CLIs created with unified-args exit with:

  • 1 on fatal errors
  • 1 on warnings in --frail mode, 0 on warnings otherwise
  • 0 on success

Debugging

CLIs can be debugged by setting the DEBUG environment variable to *, such as DEBUG="*" cli example.txt.

License

MIT © Titus Wormer

Keywords

FAQs

Package last updated on 01 Jul 2017

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc