@salesforce/b2c-tooling-sdk / 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 - Foundation class with logging, JSON output, and error handling
- OAuthCommand - Adds OAuth authentication setup
- InstanceCommand - Adds B2C Commerce instance configuration
- CartridgeCommand - Adds cartridge path configuration for code operations
- JobCommand - Adds job execution configuration
- WebDavCommand - Adds WebDAV root directory configuration for file operations
- MrtCommand - Adds Managed Runtime API authentication
- OdsCommand - 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 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 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
- BaseCommand
- CartridgeCommand
- InstanceCommand
- JobCommand
- MrtCommand
- OAuthCommand
- OdsCommand
- TableRenderer
- WebDavCommand