diff --git a/README.md b/README.md index bfb09d9..d1b0ce0 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,194 @@ -# data-format-converter +# Data Format Converter CLI Tool -A CLI tool that converts between JSON, YAML, TOML, and CSV formats with validation, syntax highlighting, and interactive TUI mode. \ No newline at end of file +A CLI tool that converts between JSON, YAML, TOML, and CSV formats with validation, syntax highlighting, and an interactive TUI mode. + +## Features + +- Multi-format conversion (JSON, YAML, TOML, CSV) +- Syntax validation with detailed error reporting +- Syntax highlighting using Rich library +- Interactive TUI mode for data viewing and editing +- File watching for live conversions +- Stdin/stdout support for piping + +## Installation + +```bash +pip install data-format-converter +``` + +Or from source: + +```bash +git clone https://7000pct.gitea.bloupla.net/7000pctAUTO/data-format-converter.git +cd data-format-converter +pip install -e . +``` + +## Quick Start + +Convert a JSON file to YAML: +```bash +dfc convert input.json -to yaml -o output.yaml +``` + +Convert CSV to JSON: +```bash +dfc convert data.csv -to json -o data.json +``` + +Validate a file: +```bash +dfc validate config.yaml +``` + +Interactive mode: +```bash +dfc tui config.json +``` + +Watch file for changes: +```bash +dfc watch input.yaml -to json -o output/ +``` + +## Usage + +``` +Usage: dfc [OPTIONS] COMMAND [ARGS]... +``` + +### Commands + +- **convert**: Convert between data formats +- **validate**: Validate syntax of data files +- **tui**: Launch interactive TUI mode +- **watch**: Watch files for changes and auto-convert +- **info**: Show information about supported formats + +### Options + +- `--help`: Show help message +- `--theme`: Set syntax highlighting theme (default, monokai, github-dark, github-light, dracula, nord, one-dark) + +## Examples + +### Basic Conversion + +```bash +# JSON to YAML +dfc convert config.json -to yaml -o config.yaml + +# YAML to TOML +dfc convert settings.yaml -to toml -o settings.toml + +# CSV to JSON +dfc convert data.csv -to json -o data.json + +# JSON to CSV +dfc convert data.json -to csv -o data.csv +``` + +### Piping + +```bash +# Read from stdin, write to stdout +cat config.json | dfc convert -f json -to yaml + +# Use - for stdin/stdout +dfc convert input.yaml -to json - < input.yaml +``` + +### Validation + +```bash +# Validate a single file +dfc validate config.json + +# Validate with detailed output +dfc validate --verbose config.yaml + +# Validate from stdin +dfc validate --stdin --format json < config.json +``` + +### Interactive Mode + +```bash +# Open file in interactive viewer +dfc tui config.json + +# Open with custom theme +dfc tui config.json --theme monokai +``` + +### File Watching + +```bash +# Watch a single file +dfc watch input.json -to yaml -o output/ + +# Watch multiple files (glob pattern) +dfc watch "*.json" -to yaml -o output/ +``` + +## File Formats + +| Format | Extension | Read | Write | +|--------|-------------|------|-------| +| JSON | .json | ✓ | ✓ | +| YAML | .yaml, .yml | ✓ | ✓ | +| TOML | .toml | ✓ | ✓ | +| CSV | .csv | ✓ | ✓ | + +## Interactive Mode Controls + +- **Arrow keys**: Navigate +- **edit **: Edit a value +- **add **: Add a new key +- **delete **: Delete a key +- **show**: Show current data +- **save**: Save changes +- **quit**: Exit without saving +- **help**: Show help + +## Configuration + +Create a `config.toml` file in your home directory or specify with `--config`: + +```toml +[default] +output_dir = "./output" +theme = "github-dark" + +[convert] +indent = 2 + +[validate] +strict = false +``` + +## Development + +```bash +# Install in development mode +pip install -e ".[dev]" + +# Run tests +pytest tests/ -v + +# Run linter +ruff check . +``` + +## Contributing + +1. Fork the repository +2. Create a feature branch +3. Make your changes +4. Run tests: `pytest tests/ -v` +5. Submit a pull request + +## License + +MIT License