---
myst:
html_meta:
description: "tzst CLI API - Command-line interface functions and utilities for tar.zst archive operations"
keywords: "tzst CLI API, command line interface, Python CLI, tar.zst commands"
og:title: "tzst CLI API Reference"
og:description: "CLI API documentation for tzst - Command-line interface functions and utilities"
twitter:title: "tzst CLI API Reference"
twitter:description: "CLI API documentation for tzst - Command-line interface functions and utilities"
---
# CLI API
The command-line interface module provides comprehensive functionality for the tzst CLI tool, including argument parsing, command execution, and interactive features.
```{eval-rst}
.. automodule:: tzst.cli
:members:
:undoc-members:
:show-inheritance:
:no-index:
```
## Overview
The tzst CLI provides a powerful command-line interface for archive operations with intuitive commands and comprehensive options. The interface is designed for both interactive use and scripting, with robust error handling and user-friendly output.
### Core Commands
| Command | Aliases | Description | Streaming Support |
|---------|---------|-------------|-------------------|
| `a` | `add`, `create` | Create or add to archive | N/A |
| `x` | `extract` | Extract with full paths | `--streaming` |
| `e` | `extract-flat` | Extract without directory structure | `--streaming` |
| `l` | `list` | List archive contents | `--streaming` |
| `t` | `test` | Test archive integrity | `--streaming` |
### Key Features
- **Intuitive Commands**: Simple, memorable command aliases (a, x, e, l, t)
- **Streaming Support**: Memory-efficient processing for large archives
- **Interactive Conflict Resolution**: User-friendly prompts for handling file conflicts
- **Comprehensive Options**: Fine-grained control over compression, extraction, and security
- **Cross-Platform**: Consistent behavior across Windows, macOS, and Linux
## Main Functions
### main
```{eval-rst}
.. autofunction:: tzst.cli.main
```
The main entry point for the CLI application. Handles argument parsing, command execution, and comprehensive error reporting.
**Key Features:**
- Robust argument validation and error handling
- Support for all archive operations
- Consistent exit codes for scripting
- User-friendly error messages
**Exit Codes:**
- `0`: Success
- `1`: General error (file not found, archive corruption, etc.)
- `2`: Argument parsing error
- `130`: Interrupted by user (Ctrl+C)
### create_parser
```{eval-rst}
.. autofunction:: tzst.cli.create_parser
```
Creates and configures the comprehensive argument parser for the CLI interface.
**Supported Arguments:**
- **Global**: `--version`, `--help`
- **Archive Creation**: `-l/--level`, `--no-atomic`
- **Extraction**: `-o/--output`, `--streaming`, `--filter`, `--conflict-resolution`
- **Listing**: `-v/--verbose`, `--streaming`
- **Testing**: `--streaming`
## Command Handlers
The CLI implements dedicated command handlers for each operation, providing specialized functionality and error handling.
### Archive Creation Commands
#### cmd_add
Creates new archives from files and directories with configurable compression and atomic operations.
**Features:**
- Configurable compression levels (1-22)
- Atomic file operations (default) for safe creation
- Recursive directory processing
- Path validation and normalization
**Usage Examples:**
```bash
# Basic archive creation
tzst a backup.tzst documents/ photos/
# High compression with atomic disabled
tzst a backup.tzst files/ -l 15 --no-atomic
```
### Extraction Commands
#### cmd_extract_full
Extracts archives preserving complete directory structure with advanced conflict resolution.
**Features:**
- Preserves full directory paths
- Multiple conflict resolution strategies
- Security filters for safe extraction
- Selective file extraction
- Streaming mode for large archives
#### cmd_extract_flat
Extracts archives flattening all files to a single directory, useful for consolidating files.
**Features:**
- Flattens directory structure
- Automatic conflict resolution for filename collisions
- Preserves file content while simplifying structure
- Same security and streaming features as full extraction
### Management Commands
#### cmd_list
Lists archive contents with optional detailed information and streaming support.
**Features:**
- Simple or verbose listing modes
- Human-readable file sizes
- Modification timestamps
- Streaming mode for memory efficiency
#### cmd_test
Tests archive integrity and validity with comprehensive error reporting.
**Features:**
- Complete archive validation
- Streaming mode support
- Detailed error reporting
- Exit codes for automated testing
#### cmd_version
Displays version information and system details.
## Utility Functions
### print_banner
```{eval-rst}
.. autofunction:: tzst.cli.print_banner
```
Displays the application banner with version and copyright information.
### format_size
```{eval-rst}
.. autofunction:: tzst.cli.format_size
```
Formats file sizes in a human-readable format (bytes, KB, MB, GB).
### validate_compression_level
```{eval-rst}
.. autofunction:: tzst.cli.validate_compression_level
```
Validates compression level arguments and converts them to integers.
## Interactive Features
The CLI includes interactive conflict resolution for file extraction conflicts, allowing users to choose how to handle existing files during extraction operations.
### Conflict Resolution Options
- **Replace**: Overwrite the existing file
- **Skip**: Keep the existing file, skip extraction
- **Replace All**: Apply replace to all subsequent conflicts
- **Skip All**: Apply skip to all subsequent conflicts
- **Auto-rename All**: Automatically rename conflicting files
- **Exit**: Stop extraction process
### Security Considerations
The CLI implements multiple security filters for safe extraction:
- **`data` filter** (default): Safest option, blocks potentially dangerous archive members
- **`tar` filter**: Preserves more tar features while maintaining basic security
- **`fully_trusted` filter**: No restrictions, use only with completely trusted archives
### Performance Options
- **Streaming Mode**: Use `--streaming` for memory-efficient processing of large archives (>100MB)
- **Compression Levels**: Choose from 1 (fastest) to 22 (maximum compression)
- **Atomic Operations**: Default behavior uses temporary files for safe archive creation