Initial upload: ConfDoc v0.1.0 - Config validation and documentation generator
This commit is contained in:
234
README.md
234
README.md
@@ -1,3 +1,233 @@
|
||||
# confdoc
|
||||
# ConfDoc - Configuration Validation and Documentation Generator
|
||||
|
||||
A CLI tool that validates JSON/YAML/TOML configuration files against a schema and auto-generates human-readable documentation
|
||||
A powerful CLI tool for validating JSON/YAML/TOML configuration files against a schema with clear error messages, and auto-generating human-readable markdown documentation from your schemas.
|
||||
|
||||
## Features
|
||||
|
||||
- **Multi-format Support**: Parse and validate JSON, YAML, and TOML configuration files
|
||||
- **Schema Validation**: Validate configurations against JSON Schema with detailed, actionable error messages
|
||||
- **Auto-generated Documentation**: Generate clean markdown documentation from your schemas
|
||||
- **Environment Profiles**: Built-in development, staging, and production profiles with validation rules
|
||||
- **Type Inference**: Automatically infer schema from existing configurations
|
||||
- **CLI Interface**: Easy-to-use commands for validation, documentation, and schema initialization
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
# Install from PyPI
|
||||
pip install confdoc
|
||||
|
||||
# Or install with development dependencies
|
||||
pip install confdoc[dev]
|
||||
```
|
||||
|
||||
## Quick Start
|
||||
|
||||
### Validate a Configuration File
|
||||
|
||||
```bash
|
||||
confdoc validate config.json --schema schema.json
|
||||
```
|
||||
|
||||
### Generate Documentation
|
||||
|
||||
```bash
|
||||
confdoc doc schema.json --output CONFIGURATION.md
|
||||
```
|
||||
|
||||
### Initialize a New Schema
|
||||
|
||||
```bash
|
||||
# Create a starter schema
|
||||
confdoc init schema.json
|
||||
|
||||
# Or infer schema from existing config
|
||||
confdoc init schema.json --config config.yaml
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
### validate Command
|
||||
|
||||
Validate a configuration file against a schema:
|
||||
|
||||
```bash
|
||||
confdoc validate <config-file> [OPTIONS]
|
||||
```
|
||||
|
||||
Options:
|
||||
- `--schema, -s`: Path to schema file (default: schema.json)
|
||||
- `--format, -f`: Config format: json, yaml, toml, auto (default: auto)
|
||||
- `--profile, -p`: Profile to apply (development, staging, production)
|
||||
- `--output, -o`: Output format: text, json (default: text)
|
||||
|
||||
Example:
|
||||
```bash
|
||||
confdoc validate config.yaml --schema schema.json --profile development
|
||||
```
|
||||
|
||||
### doc Command
|
||||
|
||||
Generate markdown documentation from a schema:
|
||||
|
||||
```bash
|
||||
confdoc doc <schema-file> [OPTIONS]
|
||||
```
|
||||
|
||||
Options:
|
||||
- `--output, -o`: Output file path
|
||||
- `--title, -t`: Document title
|
||||
- `--format, -f`: Output format (default: markdown)
|
||||
|
||||
Example:
|
||||
```bash
|
||||
confdoc doc schema.json --output docs/configuration.md --title "My App Config"
|
||||
```
|
||||
|
||||
### init Command
|
||||
|
||||
Initialize a new schema file:
|
||||
|
||||
```bash
|
||||
confdoc init [output-file] [OPTIONS]
|
||||
```
|
||||
|
||||
Options:
|
||||
- `--config, -c`: Generate schema from existing config file
|
||||
|
||||
Example:
|
||||
```bash
|
||||
# Create a starter schema
|
||||
confdoc init
|
||||
|
||||
# Infer schema from config
|
||||
confdoc init schema.json --config config.toml
|
||||
```
|
||||
|
||||
## Examples
|
||||
|
||||
### Example Configuration (config.json)
|
||||
|
||||
```json
|
||||
{
|
||||
"app": {
|
||||
"name": "myapp",
|
||||
"version": "1.0.0",
|
||||
"debug": true
|
||||
},
|
||||
"database": {
|
||||
"host": "localhost",
|
||||
"port": 5432,
|
||||
"name": "mydb"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Example Schema (schema.json)
|
||||
|
||||
```json
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"title": "Application Configuration",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"app": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": {"type": "string", "description": "Application name"},
|
||||
"version": {"type": "string", "description": "Application version"},
|
||||
"debug": {"type": "boolean", "description": "Enable debug mode", "default": false}
|
||||
},
|
||||
"required": ["name"]
|
||||
},
|
||||
"database": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"host": {"type": "string", "description": "Database host"},
|
||||
"port": {"type": "integer", "description": "Database port", "minimum": 1, "maximum": 65535},
|
||||
"name": {"type": "string", "description": "Database name"}
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": ["app", "database"]
|
||||
}
|
||||
```
|
||||
|
||||
## Schema Reference
|
||||
|
||||
ConfDoc uses JSON Schema for validation. Supported keywords:
|
||||
|
||||
- `type`: string, integer, number, boolean, object, array, null
|
||||
- `required`: Array of required property names
|
||||
- `properties`: Object defining each property's schema
|
||||
- `enum`: List of allowed values
|
||||
- `minimum`, `maximum`: Numeric constraints
|
||||
- `minLength`, `maxLength`: String length constraints
|
||||
- `pattern`: Regular expression pattern
|
||||
- `default`: Default value for the property
|
||||
- `description`: Human-readable description
|
||||
|
||||
## Environment Profiles
|
||||
|
||||
ConfDoc includes built-in profiles:
|
||||
|
||||
| Profile | Description |
|
||||
|---------|-------------|
|
||||
| development | Lenient validation, allows extra properties |
|
||||
| staging | Strict validation, no extra properties |
|
||||
| production | Strict validation, no extra properties |
|
||||
|
||||
## Configuration
|
||||
|
||||
### Environment Variables
|
||||
|
||||
| Variable | Description |
|
||||
|----------|-------------|
|
||||
| `CONFDOC_CONFIG_PATH` | Default config path |
|
||||
| `CONFDOC_DEFAULT_SCHEMA` | Default schema file |
|
||||
|
||||
### Programmatic Usage
|
||||
|
||||
```python
|
||||
from confdoc.parsers import ConfigParserFactory
|
||||
from confdoc.validator import SchemaValidator
|
||||
from confdoc.docs import DocGenerator
|
||||
|
||||
# Parse a config file
|
||||
factory = ConfigParserFactory()
|
||||
parser = factory.get_parser_for_file("config.json")
|
||||
config = parser.parse(content)
|
||||
|
||||
# Validate against schema
|
||||
validator = SchemaValidator()
|
||||
is_valid, errors = validator.validate(config, schema)
|
||||
|
||||
# Generate documentation
|
||||
doc_gen = DocGenerator()
|
||||
docs = doc_gen.generate(schema, "My Config")
|
||||
```
|
||||
|
||||
## Development
|
||||
|
||||
```bash
|
||||
# Clone the repository
|
||||
git clone https://7000pct.gitea.bloupla.net/7000pctAUTO/confdoc.git
|
||||
cd confdoc
|
||||
|
||||
# Install development dependencies
|
||||
pip install -e ".[dev]"
|
||||
|
||||
# Run tests
|
||||
pytest tests/ -v
|
||||
|
||||
# Run with coverage
|
||||
pytest tests/ --cov=confdoc --cov-report=term-missing
|
||||
```
|
||||
|
||||
## Contributing
|
||||
|
||||
Contributions are welcome! Please feel free to submit a Pull Request.
|
||||
|
||||
## License
|
||||
|
||||
This project is licensed under the MIT License - see the LICENSE file for details.
|
||||
|
||||
Reference in New Issue
Block a user