Metadata-Version: 2.4
Name: jbussdieker-config
Version: 0.5.1
Summary: A modern Python development toolkit.
Author-email: "Joshua B. Bussdieker" <jbussdieker@gmail.com>
Maintainer-email: "Joshua B. Bussdieker" <jbussdieker@gmail.com>
License-Expression: MIT
Project-URL: Homepage, https://github.com/jbussdieker/jbussdieker-config
Project-URL: Documentation, https://github.com/jbussdieker/jbussdieker-config/blob/main/README.md
Project-URL: Repository, https://github.com/jbussdieker/jbussdieker-config
Project-URL: Issues, https://github.com/jbussdieker/jbussdieker-config/issues
Project-URL: Changelog, https://github.com/jbussdieker/jbussdieker-config/blob/main/CHANGELOG.md
Classifier: Topic :: Software Development :: Build Tools
Classifier: Development Status :: 3 - Alpha
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Operating System :: OS Independent
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Natural Language :: English
Classifier: Typing :: Typed
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file

# jbussdieker-config

A modern Python development toolkit plugin for managing configuration settings within the jbussdieker CLI framework. This plugin provides a simple and intuitive way to view, set, and manage configuration values for the jbussdieker ecosystem.

## 🚀 Features

- **Configuration Management**: View and modify configuration settings for jbussdieker plugins
- **JSON-Based Storage**: Persistent configuration stored in JSON format
- **Custom Settings**: Support for custom configuration values beyond built-in settings
- **Type-Aware**: Automatic type conversion for boolean, string, and other data types
- **Environment Override**: Configurable config file location via environment variables
- **Default Values**: Sensible defaults for common development settings

## 📦 Installation

```bash
pip install jbussdieker-config --upgrade
```

## 🔧 Prerequisites

- Python 3.9 or higher
- jbussdieker CLI framework

## 🎯 Usage

### View Current Configuration

Display all current configuration settings:

```bash
jbussdieker config
```

### Set Configuration Values

Set a configuration value using the `KEY=VALUE` format:

```bash
jbussdieker config --set user_name="John Doe"
jbussdieker config --set user_email="john@example.com"
jbussdieker config --set private=false
```

### Custom Settings

Set custom configuration values that aren't part of the built-in settings:

```bash
jbussdieker config --set custom_setting="value"
```

## 📋 Configuration Settings

The plugin manages the following built-in configuration settings:

### User Information
- `user_name`: Your full name (default: "Joshua B. Bussdieker")
- `user_email`: Your email address (default: "jbussdieker@gmail.com")
- `github_org`: Your GitHub organization (default: "jbussdieker")

### Project Settings
- `private`: Whether projects should be private by default (default: true)
- `storage_url`: URL for storage configuration
- `openai_api_key`: OpenAI API key for AI-powered features

### Logging Configuration
- `log_level`: Logging level (default: "INFO")
- `log_format`: Log format string (default: "%(levelname)s: %(message)s")

### Custom Settings
- `custom_settings`: Dictionary for storing custom configuration values

## 🔍 How It Works

1. **Configuration Storage**: Settings are stored in `~/.jbussdieker.json` by default
2. **Environment Override**: Use `JBUSSDIEKER_CONFIG` environment variable to specify a custom config file path
3. **Type Conversion**: Boolean values are automatically converted from string representations
4. **Persistence**: Changes are immediately saved to the configuration file
5. **Validation**: Built-in settings are validated against expected types

## 🛠️ Development

This plugin is part of the jbussdieker ecosystem. It integrates seamlessly with the jbussdieker CLI framework.

### Project Structure

```
src/jbussdieker/config/
├── __init__.py      # Package initialization and version
├── cli.py           # CLI interface and argument parsing
└── config.py        # Configuration management and storage
```

### Configuration File Location

By default, the configuration is stored in:
- `~/.jbussdieker.json`

You can override this by setting the `JBUSSDIEKER_CONFIG` environment variable:

```bash
export JBUSSDIEKER_CONFIG="/path/to/custom/config.json"
```

## 📝 License

This project is licensed under **MIT**.

## 🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

## 📚 Related

- [jbussdieker](https://pypi.org/project/jbussdieker/) - The main CLI framework
- [jbussdieker-commit](https://pypi.org/project/jbussdieker-commit/) - AI-powered commit message generation
