# CLI Commands Reference

This document provides detailed information about all available Theme CLI commands.

## Global Options

These options are available for all commands:

```bash
--help          # Show help information for any command
--version       # Show Theme CLI version
--debug         # Enable debug logging
--verbose       # Enable verbose output
--config <path> # Specify a custom config file
```

## Theme Commands

### Initialize Theme

Creates a new Shopify theme project.

```bash
theme-cli init [name] [options]

Options:
  --template <name>  # Use a specific theme template (default: "blank")
  --typescript      # Initialize with TypeScript support
  --force          # Overwrite existing directory
```

Example:
```bash
# Create a new theme with TypeScript
theme-cli init my-theme --typescript

# Use a specific template
theme-cli init my-theme --template dawn
```

### Development Server

Start a local development server for theme preview and hot reloading.

```bash
theme-cli dev [options]

Options:
  -s, --store <name>     # Shopify store name (required)
  -k, --api-key <key>    # Shopify Admin API key (required)
  -p, --password <token> # Shopify Admin API password/token (required)
  -t, --theme-id <id>    # Existing theme ID to use
  -n, --theme-name <name># Name for development theme
  -d, --theme-dir <path> # Theme directory (default: current)
  --port <number>        # Port for preview server (default: 3000)
  --https               # Enable HTTPS
  --no-watch           # Disable file watching
```

Example:
```bash
# Start server with existing theme
theme-cli dev -s my-store -k api_key -p shpat_token -t 123456789

# Create new development theme
theme-cli dev -s my-store -k api_key -p shpat_token -n "Dev Theme"
```

### Deploy Theme

Deploy your theme to Shopify.

```bash
theme-cli deploy [options]

Options:
  -s, --store <name>     # Shopify store name (required)
  -k, --api-key <key>    # Shopify Admin API key (required)
  -p, --password <token> # Shopify Admin API password/token (required)
  -t, --theme-id <id>    # Target theme ID (required)
  --files <pattern>     # Deploy specific files (glob pattern)
  --backup             # Create backup before deploying
  --force             # Skip confirmation prompt
```

Example:
```bash
# Deploy entire theme
theme-cli deploy -s my-store -k api_key -p shpat_token -t 123456789

# Deploy specific files with backup
theme-cli deploy -s my-store -k api_key -p shpat_token -t 123456789 --files "templates/*" --backup
```

### Theme Check

Run theme linting and validation.

```bash
theme-cli check [options]

Options:
  -d, --theme-dir <path> # Theme directory to check
  --fix                 # Automatically fix issues
  --output <format>     # Output format (text, json)
```

Example:
```bash
# Check current theme
theme-cli check

# Auto-fix issues
theme-cli check --fix
```

### Theme Package

Package your theme for the Shopify Theme Store.

```bash
theme-cli package [options]

Options:
  -d, --theme-dir <path> # Theme directory to package
  -o, --output <path>   # Output directory
  --minify             # Minify assets
  --zip               # Create ZIP archive
```

Example:
```bash
# Package theme with minification
theme-cli package --minify --zip
```

## Development Scripts

The Theme CLI project includes several development scripts:

### Local Theme Development

```bash
npm run theme:dev
# or
yarn theme:dev
```

This script (`scripts/local-theme-dev.sh`):
1. Builds the project
2. Tests the Shopify API connection
3. Initializes a new theme
4. Starts the development server

### Project Setup

```bash
npm run setup
# or
yarn setup
```

This script (`scripts/project-setup.sh`):
1. Installs dependencies
2. Sets up development environment
3. Links the CLI locally

### Theme Development with npm

```bash
npm run theme:dev:npm
# or
yarn theme:dev:npm
```

This script (`scripts/setup-theme-dev.sh`):
1. Uses the published npm package
2. Sets up a new theme project
3. Starts the development server

## Configuration

### Environment Variables

Required variables in your `.env` file:

```env
SHOPIFY_STORE=your-store        # Store name without .myshopify.com
SHOPIFY_API_KEY=your_api_key    # Admin API key
SHOPIFY_PASSWORD=your_password  # Admin API password/token
SHOPIFY_THEME_ID=123456789     # Optional: Existing theme ID
```

### Theme Configuration

Create a `theme.config.js` in your theme directory:

```javascript
module.exports = {
  development: {
    store: process.env.SHOPIFY_STORE,
    themeId: process.env.SHOPIFY_THEME_ID,
    password: process.env.SHOPIFY_PASSWORD,
    ignore: ['settings_data.json'],
    deployIgnore: ['node_modules', '.git']
  },
  production: {
    // Production-specific settings
  }
};
```

## Troubleshooting

If you encounter issues:

1. Check your credentials in `.env`
2. Ensure you have the required API scopes
3. Try running with `--debug` flag
4. Check the [Troubleshooting Guide](./troubleshooting.md)

For more detailed information about specific commands, use:
```bash
theme-cli [command] --help
``` 