# ocl

> A git-style command parser for Optimist: the Optimist Command Loader.

Latest version **1.1.1** (published 2013-11-11) · MIT license · 0 weekly downloads

## Install

```sh
npm install ocl
pnpm add ocl
yarn add ocl
bun add ocl
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.1.1 |
| Published | 2013-11-11 |
| First published | 2013-11-05 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 1 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Michael Schoonmaker |
| Maintainers | schoonology |
| Keywords | optimist, command, loader, argv, commander |

## Links

- npm: https://www.npmjs.com/package/ocl
- npm.io page: https://npm.io/package/ocl

## Dependencies (1)

- [optimist](https://npm.io/package/optimist.md) ~0.6.0

## Alternatives

- [@salesforce/cli](https://npm.io/package/@salesforce/cli.md) — 389.7K weekly downloads
- [@mintlify/cli](https://npm.io/package/@mintlify/cli.md) — 208.9K weekly downloads
- [@grafana/e2e-selectors](https://npm.io/package/@grafana/e2e-selectors.md) — 128.7K weekly downloads
- [mintlify](https://npm.io/package/mintlify.md) — 112.0K weekly downloads
- [@intlayer/cli](https://npm.io/package/@intlayer/cli.md) — 22.8K weekly downloads

## Recent versions

- 1.1.1 (latest) — 2013-11-11
- 1.1.0 — 2013-11-11
- 1.0.1 — 2013-11-06
- 1.0.0 — 2013-11-05

## README

# OCL: the Optimist Command Loader

## Isn't this what ___ does?

Probably, and probably not. This is, _quite specifically_, a git-style command
parser for Optimist. Not something _kinda like_ Optimist, but Optimist.

## Why?

I originally built OCL to bring apps like [`slc`][slc] and [`bacn`][bacn] more
in line with patterns I started using in [`discovery`][discovery]'s HTTP
trackers application and elsewhere. With these patterns, the purpose of OCL
is to gracefully co-exist with [`rc`][rc] and [`optimist`][optimist].

If so, the following becomes possible:

```
// This file is assumed to be located in a project's bin/ directory.

// Create a command loader for modules in the lib/commands directory.
var loader = require('ocl')({ root: __dirname + '../lib/commands' });

// Load configuration options from the same argv.
// NOTE: This same line can (and should) exist in each command that uses the
// `rc` config. Alternatively, it can be composed into lib/config.js.
var rc = require('rc')('discovery', {});

// Load commands, falling back to lib/commands/help in a pickle.
loader.run();
```

Or, to use Optimist's dynamic help formatting:

```
// This file is assumed to be located in a project's bin/ directory.

// Load options from JSON in bin/options.
var options = require('./options.json');

// Create a command loader for modules in the lib/commands directory.
var loader = require('ocl')({ root: __dirname + '../lib/commands' });

var optimist = require('optimist').options(options);

// Load configuration from the same argv.
var rc = require('rc')('discovery', {}, optimist.argv);

// Display dynamic help, if needed.
if (rc.help) {
  optimist.showHelp();
  process.exit(0);
}

// Load commands as before (lib/commands/help may still be loaded, and can
// fall back to optimist.showHelp().
loader.run();
```


[slc]: https://github.com/strongloop/slc
[bacn]: https://github.com/strongloop/bacn
[rc]: https://github.com/dominictarr/rc
[optimist]: https://github.com/substack/node-optimist

---
_Source: https://npm.io/package/ocl · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
