UNPKG

@dscodotco/theme-cli

Version:

A CLI tool for developing Shopify themes

67 lines (66 loc) 2.04 kB
/** * @module cli * @description Main CLI functionality for configuring and running commands */ import { Command } from "commander"; import { createShopifyCommand } from "./commands/shopify/index.js"; import { createLogger } from "./utils/logger.js"; const logger = createLogger("cli"); /** * Creates and configures the root CLI command * * Sets up the main program with all available commands and global options. * Currently supports Shopify commands, with a structure that allows easy * addition of commands for other e-commerce platforms. * * @returns The configured Command object ready to be run * * @example * ```typescript * const program = createCli(); * program.parse(process.argv); * ``` */ export function createCli() { const program = new Command() .name("dsco-theme") .description("CLI tool for working with e-commerce themes") .version(process.env.npm_package_version || "1.0.0"); // Add Shopify command program.addCommand(createShopifyCommand()); // Here, you can add other platform commands in the future // For example: // program.addCommand(createBigCommerceCommand()); // program.addCommand(createWooCommerceCommand()); // Handle errors program.showHelpAfterError(); program.showSuggestionAfterError(); return program; } /** * Runs the CLI with the given arguments * * Parses the arguments and executes the appropriate command. * Handles any errors that might occur during command execution. * * @param args - Command line arguments (defaults to process.argv) * @returns A promise that resolves when the command completes * * @example * ```typescript * // Run with default arguments * await runCli(); * * // Run with custom arguments * await runCli(['node', 'script.js', 'shopify', 'theme', 'init']); * ``` */ export async function runCli(args = process.argv) { try { await createCli().parseAsync(args); } catch (error) { logger.error(`${error.message}`); process.exit(1); } }