aicommit 0.1.143

A CLI tool that generates concise and descriptive git commit messages using LLMs
Documentation
# Рефакторинг main.rs

## Обзор

Файл `main.rs` был разделен с 3423 строк на модульную структуру с файлами до 1361 строки.

## Структура модулей

### Новая архитектура

- **main.rs** (501 строк) - Главный модуль, координирует всю функциональность
- **types.rs** (756 строк) - Типы данных: структуры, енумы и их реализации
- **version.rs** (197 строк) - Функции управления версиями
- **git.rs** (1361 строк) - Git операции и работа с коммитами
- **providers.rs** (114 строк) - Интеграция с AI провайдерами
- **models.rs** (511 строк) - Управление моделями и их статусами
- **utils.rs** (89 строк) - Вспомогательные функции

### Резервные копии

- **old/main.rs.backup** - Оригинальная версия файла main.rs
- **decomposition/** - Директория с разбитыми на отдельные файлы функциями и структурами

## Процесс рефакторинга

### 1. Backup
```bash
mkdir -p old
cp src/main.rs old/main.rs.backup
```

### 2. Декомпозиция
Скрипт `decompose.py` извлёк 53 элемента:
- 14 структур (struct)
- 1 enum
- 2 реализации (impl)
- 36 функций

### 3. Реорганизация
Скрипт `rebuild.py` создал модульную структуру, группируя связанные элементы:

**types.rs**
- Все структуры данных (Cli, Config, ModelStats, etc.)
- Енумы (ProviderConfig)
- Реализации Default и других трейтов

**version.rs**
- increment_version
- update_version_file
- update_cargo_version
- update_npm_version
- update_github_version
- get_version

**git.rs**
- get_git_diff
- create_git_commit
- process_git_diff_output
- dry_run
- run_commit
- и другие git-функции

**providers.rs**
- setup_openrouter_provider
- setup_openai_compatible_provider

**models.rs**
- get_available_free_models
- find_best_available_model
- is_model_available
- record_model_success
- record_model_failure
- display_model_jail_status
- unjail_model
- unjail_all_models
- и другие функции работы с моделями

**utils.rs**
- parse_duration
- get_safe_slice_length
- и другие вспомогательные функции

**main.rs**
- main() - главная функция
- watch_and_commit() - режим наблюдения
- Константы и импорты

### 4. Исправление видимости
Скрипт `fix_visibility.py` добавил модификатор `pub` ко всем функциям, структурам и енумам в модулях.

## Преимущества нового подхода

1. **Читаемость** - код организован логически по модулям
2. **Поддерживаемость** - легче найти и изменить нужную функциональность
3. **Масштабируемость** - проще добавлять новые функции
4. **Тестируемость** - модули можно тестировать независимо
5. **Размер файлов** - все файлы теперь меньше порога (main.rs: 501 строк вместо 3423)

## Скрипты рефакторинга

- **decompose.py** - Извлечение функций и структур из main.rs
- **rebuild.py** - Создание модульной структуры
- **fix_visibility.py** - Добавление pub модификаторов

## Как вернуться к старой версии

```bash
cp old/main.rs.backup src/main.rs
rm src/types.rs src/version.rs src/git.rs src/providers.rs src/models.rs src/utils.rs
```

## Компиляция

Проект должен компилироваться стандартной командой:
```bash
cargo build
cargo test
```

## Следующие шаги

1. Возможно дальнейшее разбиение git.rs (1361 строка)
2. Добавление тестов для каждого модуля
3. Документирование публичных API каждого модуля