Using the Command-Line Interface

The CLI is built for automation: everything the GUI can do is available as flags, and every run produces a predictable exit code so scripts can branch on the result without parsing output text.

The examples below use ./outline-extractor-cli.sh, the macOS and Linux launcher. On Windows run outline-extractor-cli.cmd instead - it takes exactly the same arguments and returns the same exit codes, so every example translates by swapping the launcher name.

Running an extraction

./outline-extractor-cli.sh extract \
  --extractor essbase-xml --extractor-option file-path=outline.xml \
  --writer documentation --writer-option output-directory=./out \
  --writer-option include-headers=true

--extractor/--writer select a provider by ID (see Extractors and Writers for the full list). --extractor-option/--writer-option set one KEY=VALUE property each, and can be repeated as many times as needed.

Configuration files

Instead of (or alongside) command-line flags, a JSON configuration file can supply the extractor, writer, and their options:

{
  "extractor": "essbase-xml",
  "writer": "documentation",
  "extractorOptions": { "file-path": "outline.xml" },
  "writerOptions": { "output-directory": "./out", "include-headers": "true" }
}
./outline-extractor-cli.sh extract --config extraction.ngoe.json

Configuration is loaded first; any --extractor/--writer/--extractor-option/--writer-option flags on the command line override it for that run. Pass --save-config <file> to write the effective configuration (config file plus any overrides) back out as JSON - useful for capturing exactly what ran, or for turning a one-off command line into a reusable config file. These files are also interchangeable with the GUI’s Load/Save Configuration menu items.

Referencing a secret instead of storing it

Any option value - typically password - can be exactly ${ENV:VARIABLE_NAME} instead of a literal value, to read it from an environment variable at the moment it’s actually needed rather than storing it in the file:

{
  "extractor": "essbase-java-members",
  "extractorOptions": { "server": "myserver", "username": "admin", "password": "${ENV:ESSBASE_PASSWORD}" },
  "writer": "console"
}

If ESSBASE_PASSWORD isn’t set when this actually runs, the command fails immediately with exit code 3 and a clear message naming the property and variable - never a silent fallback to some other value. --save-config always writes the reference back out, never the resolved secret, even right after a run that used it - so a config file built this way is safe to commit, email, or hand to someone else. The whole value has to match this pattern exactly; it isn’t substituted inside a larger string.

Discovering providers

./outline-extractor-cli.sh describe-providers

Lists every registered extractor and writer with its property definitions (name, type, whether it’s required, its default value, and a description) - the authoritative source for what options a given provider accepts, rather than trial and error, and the source this manual’s own property tables were generated from. Add --format json for machine-readable output.

Output and exit codes

Failures are reported the same way whether they come from the CLI or the GUI: a one-line Error [CODE]: message on stderr (or a {"error": {…​}} object with --format json), plus one of a small, stable set of exit codes:

0

Success

2

Malformed command-line syntax

3

A configuration problem - bad or missing option value, unknown provider ID

4

Valid options, but the extractor or writer failed against a real system

70

An unclassified/internal error

Add --verbose to also print the underlying stack trace to stderr.