tcss-cli 1.0.0

Command-line interface for TCSS (Thematic CSS) compiler
Documentation
# Help and Version Flags Implementation

## Overview

This document describes the implementation of `--help` and `--version` flags in the TCSS CLI tool.

## Implementation Details

### Version Flag

The version flag is automatically provided by clap through the `#[command(version)]` attribute.

**Implementation in `src/main.rs`:**

```rust
#[derive(Parser)]
#[command(name = "tcss")]
#[command(author = "TCSS Contributors")]
#[command(version = env!("CARGO_PKG_VERSION"))]
#[command(about = "TCSS - A modern CSS preprocessor with Python-like syntax")]
```

**Usage:**
- `tcss --version` - Display version
- `tcss -V` - Short form

**Output:**
```
tcss 0.1.0
```

### Help Flag

The help flag is automatically provided by clap and includes:
- Command descriptions
- Argument descriptions
- Option descriptions
- Usage examples
- Command aliases

**Implementation Features:**

1. **Custom Help Template:**
   ```rust
   #[command(help_template = "\
   {before-help}{name} {version}
   {author-with-newline}{about-with-newline}
   {usage-heading} {usage}
   
   {all-args}{after-help}
   ")]
   ```

2. **Command Documentation:**
   - Each command has a description
   - Each command includes usage examples
   - Arguments and options are documented

3. **Command Aliases:**
   - `compile``c`
   - `watch``w`
   - `init``i`

**Usage:**
- `tcss --help` - Display general help
- `tcss -h` - Short form
- `tcss <command> --help` - Command-specific help

## Features Implemented

### ✅ Version Information

1. **Main Version Flag**
   - `--version` / `-V`
   - Shows: `tcss 0.1.0`
   - Works globally

2. **Subcommand Version**
   - Each subcommand supports `--version`
   - Propagated from main command

### ✅ Help Information

1. **Main Help**
   - `--help` / `-h`
   - Shows all commands
   - Shows global options
   - Shows usage examples

2. **Command-Specific Help**
   - `tcss compile --help`
   - `tcss watch --help`
   - `tcss init --help`
   - `tcss check --help`
   - Shows command arguments
   - Shows command options
   - Shows usage examples

3. **Command Aliases**
   - Short aliases for common commands
   - `c`, `w`, `i` for compile, watch, init
   - Visible in help output

### ✅ Enhanced Documentation

1. **Inline Examples**
   - Each command includes usage examples
   - Examples shown in help output
   - Real-world use cases

2. **Detailed Descriptions**
   - Clear argument descriptions
   - Option explanations
   - Default values shown

## Files Created/Modified

### Modified Files

1. **`tcss-cli/src/main.rs`**
   - Added version attribute
   - Added custom help template
   - Added command aliases
   - Added inline examples
   - Enhanced descriptions

2. **`tcss-cli/README.md`**
   - Added Quick Start section
   - Added Getting Help section
   - Added Version Information section
   - Added Command Aliases section
   - Enhanced Global Options section

### New Files

1. **`tcss-cli/tests/help_version_tests.rs`**
   - Tests for `--version` flag
   - Tests for `--help` flag
   - Tests for command-specific help
   - Tests for command aliases
   - 10+ test cases

2. **`tcss-cli/docs/HELP_AND_VERSION.md`**
   - Comprehensive documentation
   - Usage examples
   - Output examples
   - Tips and tricks

3. **`tcss-cli/examples/help_demo.sh`**
   - Demonstration script
   - Shows all help/version commands
   - Executable shell script

## Usage Examples

### Display Version

```bash
# Long form
tcss --version

# Short form
tcss -V

# Output
tcss 0.1.0
```

### Display Help

```bash
# General help
tcss --help
tcss -h

# Command help
tcss compile --help
tcss watch --help
tcss init --help
tcss check --help

# Using aliases
tcss c --help
tcss w --help
tcss i --help
```

### Command Aliases

```bash
# Compile
tcss c styles.tcss
tcss compile styles.tcss

# Watch
tcss w src/
tcss watch src/

# Init
tcss i my-project
tcss init my-project
```

## Testing

### Unit Tests

Located in `tcss-cli/tests/help_version_tests.rs`:

- `test_version_flag()` - Test `--version`
- `test_version_flag_short()` - Test `-V`
- `test_help_flag()` - Test `--help`
- `test_help_flag_short()` - Test `-h`
- `test_compile_help()` - Test `compile --help`
- `test_watch_help()` - Test `watch --help`
- `test_init_help()` - Test `init --help`
- `test_check_help()` - Test `check --help`
- `test_command_aliases()` - Test command aliases

**Note:** Tests are marked with `#[ignore]` by default since they require the binary to be built.

### Running Tests

```bash
# Build the binary first
cargo build --release -p tcss-cli

# Run tests (including ignored ones)
cargo test -p tcss-cli -- --ignored

# Run specific test
cargo test -p tcss-cli test_version_flag -- --ignored
```

### Manual Testing

```bash
# Run the demo script
./tcss-cli/examples/help_demo.sh
```

## Benefits

1. **User-Friendly**
   - Easy to discover features
   - Clear documentation
   - Helpful examples

2. **Standard Compliance**
   - Follows CLI conventions
   - Standard flags (`-h`, `-V`)
   - Consistent behavior

3. **Comprehensive**
   - General help
   - Command-specific help
   - Inline examples
   - Command aliases

4. **Well-Tested**
   - Automated tests
   - Demo script
   - Documentation

## Summary

The `--help` and `--version` flags are fully implemented with:

- ✅ Version display (`--version`, `-V`)
- ✅ General help (`--help`, `-h`)
- ✅ Command-specific help
- ✅ Command aliases (`c`, `w`, `i`)
- ✅ Inline usage examples
- ✅ Comprehensive tests
- ✅ Documentation
- ✅ Demo script

All standard CLI conventions are followed, making the TCSS CLI easy to use and discover.