---
editLink: false
lastUpdated: false
---

[@salesforce/b2c-tooling-sdk](../modules.md) / cli

# cli

CLI utilities and base command classes for building B2C Commerce CLI commands.

This module provides reusable base classes, configuration loading, and table
rendering utilities for oclif-based CLI applications.

## Base Command Classes

Extend these classes to create CLI commands with pre-configured functionality:

- [BaseCommand](classes/BaseCommand.md) - Foundation class with logging, JSON output, and error handling
- [OAuthCommand](classes/OAuthCommand.md) - Adds OAuth authentication setup
- [InstanceCommand](classes/InstanceCommand.md) - Adds B2C Commerce instance configuration
- [CartridgeCommand](classes/CartridgeCommand.md) - Adds cartridge path configuration for code operations
- [JobCommand](classes/JobCommand.md) - Adds job execution configuration
- [WebDavCommand](classes/WebDavCommand.md) - Adds WebDAV root directory configuration for file operations
- [MrtCommand](classes/MrtCommand.md) - Adds Managed Runtime API authentication
- [OdsCommand](classes/OdsCommand.md) - Adds On-Demand Sandbox configuration

## Command Hierarchy

Commands inherit in a chain, each adding specific functionality:

```
BaseCommand
  └─ OAuthCommand (adds OAuth)
       └─ InstanceCommand (adds instance config)
            ├─ CartridgeCommand (adds cartridge paths)
            ├─ JobCommand (adds job config)
            └─ WebDavCommand (adds WebDAV root config)
       └─ MrtCommand (adds MRT API auth)
       └─ OdsCommand (adds ODS config)
```

## Example Usage

```typescript
import { InstanceCommand, createTable, type ColumnDef } from '@salesforce/b2c-tooling-sdk/cli';

export default class ListSites extends InstanceCommand {
  static description = 'List all sites on the instance';

  async run() {
    const client = await this.createOcapiClient();
    const sites = await client.getSites();

    const columns: Record<string, ColumnDef<Site>> = {
      id: { header: 'ID', get: (s) => s.id },
      name: { header: 'Name', get: (s) => s.display_name },
    };

    createTable(columns).render(sites, ['id', 'name']);
  }
}
```

## Configuration Loading

Use [loadConfig](functions/loadConfig.md) to resolve configuration from multiple sources:

```typescript
import { loadConfig } from '@salesforce/b2c-tooling-sdk/cli';

const config = await loadConfig({
  flags: { hostname: 'example.com' },
  configPath: './dw.json',
});
```

## Table Rendering

Use [createTable](functions/createTable.md) for consistent tabular output:

```typescript
import { createTable, type ColumnDef } from '@salesforce/b2c-tooling-sdk/cli';

const columns: Record<string, ColumnDef<Item>> = {
  id: { header: 'ID', get: (item) => item.id },
  status: { header: 'Status', get: (item) => item.status },
};

createTable(columns).render(items, ['id', 'status']);
```

## Classes

- [AmCommand](classes/AmCommand.md)
- [B2CLifecycleRunner](classes/B2CLifecycleRunner.md)
- [BaseCommand](classes/BaseCommand.md)
- [CartridgeCommand](classes/CartridgeCommand.md)
- [InstanceCommand](classes/InstanceCommand.md)
- [JobCommand](classes/JobCommand.md)
- [MrtCommand](classes/MrtCommand.md)
- [OAuthCommand](classes/OAuthCommand.md)
- [OdsCommand](classes/OdsCommand.md)
- [TableRenderer](classes/TableRenderer.md)
- [WebDavCommand](classes/WebDavCommand.md)

## Interfaces

- [AfterB2COperationResult](interfaces/AfterB2COperationResult.md)
- [B2COperationContext](interfaces/B2COperationContext.md)
- [B2COperationLifecycleHookOptions](interfaces/B2COperationLifecycleHookOptions.md)
- [B2COperationLifecycleHookResult](interfaces/B2COperationLifecycleHookResult.md)
- [B2COperationLifecycleProvider](interfaces/B2COperationLifecycleProvider.md)
- [B2COperationResult](interfaces/B2COperationResult.md)
- [BeforeB2COperationResult](interfaces/BeforeB2COperationResult.md)
- [ColumnDef](interfaces/ColumnDef.md)
- [ConfigSourcesHookOptions](interfaces/ConfigSourcesHookOptions.md)
- [ConfigSourcesHookResult](interfaces/ConfigSourcesHookResult.md)
- [ExtractedMrtFlags](interfaces/ExtractedMrtFlags.md)
- [HttpMiddlewareHookOptions](interfaces/HttpMiddlewareHookOptions.md)
- [HttpMiddlewareHookResult](interfaces/HttpMiddlewareHookResult.md)
- [LoadConfigOptions](interfaces/LoadConfigOptions.md)
- [~~PluginSources~~](interfaces/PluginSources.md)
- [TableRenderOptions](interfaces/TableRenderOptions.md)

## Type Aliases

- [Args](type-aliases/Args.md)
- [B2COperationLifecycleHook](type-aliases/B2COperationLifecycleHook.md)
- [B2COperationType](type-aliases/B2COperationType.md)
- [ConfigSourcesHook](type-aliases/ConfigSourcesHook.md)
- [Flags](type-aliases/Flags.md)
- [HttpMiddlewareHook](type-aliases/HttpMiddlewareHook.md)
- [ParsedFlags](type-aliases/ParsedFlags.md)
- [WebDavRootKey](type-aliases/WebDavRootKey.md)

## Variables

- [VALID\_ROOTS](variables/VALID_ROOTS.md)
- [WEBDAV\_ROOTS](variables/WEBDAV_ROOTS.md)

## Functions

- [createB2COperationContext](functions/createB2COperationContext.md)
- [createTable](functions/createTable.md)
- [extractInstanceFlags](functions/extractInstanceFlags.md)
- [extractMrtFlags](functions/extractMrtFlags.md)
- [extractOAuthFlags](functions/extractOAuthFlags.md)
- [~~loadConfig~~](functions/loadConfig.md)

## References

### findDwJson

Re-exports [findDwJson](../config/functions/findDwJson.md)
