spath-cli 0.1.3

A Windows PATH security scanner and fixer - detects and fixes unquoted paths with spaces
# Release Guide


Руководство по выпуску новых версий spath-cli.

## Требования


```bash
# Установить cargo-release

cargo install cargo-release

# Проверить установку

cargo release --version
```

## Команды релиза


### Dry-run (проверка без изменений)


```bash
# Проверить что произойдёт при релизе

cargo release patch --dry-run
cargo release minor --dry-run
cargo release major --dry-run
```

### Patch релиз (0.1.0 → 0.1.1)


Для багфиксов и мелких исправлений:

```bash
cargo release patch
```

### Minor релиз (0.1.0 → 0.2.0)


Для новых функций с обратной совместимостью:

```bash
cargo release minor
```

### Major релиз (0.1.0 → 1.0.0)


Для breaking changes:

```bash
cargo release major
```

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


```bash
cargo release 0.2.0
cargo release 1.0.0-beta.1
```

## Что происходит при релизе


1. **Проверки** — cargo fmt, clippy, tests
2. **Обновление версии** в:
   - `Cargo.toml`
   - `installer/spath-installer.nsi`
3. **Обновление CHANGELOG.md** — добавляется дата релиза
4. **Git коммит**`chore: release X.Y.Z`
5. **Git тег**`vX.Y.Z`
6. **Push** — коммит и тег в репозиторий
7. **GitHub Actions** — автоматическая сборка и создание релиза
8. **crates.io** — публикация пакета (если включено)

## Ручной релиз (без cargo-release)


```bash
# 1. Обновить версию в Cargo.toml

# version = "0.2.0"


# 2. Обновить версию в installer/spath-installer.nsi

# !define VERSION "0.2.0"


# 3. Обновить CHANGELOG.md


# 4. Коммит

git add .
git commit -m "chore: release 0.2.0"

# 5. Тег

git tag v0.2.0

# 6. Push

git push origin main --tags
```

## Публикация на crates.io


```bash
# Первый раз — авторизация

cargo login cio1cxqGNGhzg1ZDF3djI7mpnYeJeFkBrD3

# Проверка пакета

cargo publish --dry-run

# Публикация

cargo publish
```

## Отмена релиза


```bash
# Удалить локальный тег

git tag -d v0.2.0

# Удалить удалённый тег

git push origin :refs/tags/v0.2.0

# Откатить коммит (если нужно)

git reset --hard HEAD~1
git push --force
```

## Структура версий


| Версия | Когда использовать |
|--------|-------------------|
| `0.x.y` | Начальная разработка, API нестабилен |
| `1.0.0` | Первый стабильный релиз |
| `x.y.z-alpha` | Альфа версия |
| `x.y.z-beta` | Бета версия |
| `x.y.z-rc.1` | Release candidate |

## Чеклист перед релизом


- [ ] Все тесты проходят: `cargo test`
- [ ] Нет предупреждений clippy: `cargo clippy`
- [ ] Код отформатирован: `cargo fmt --check`
- [ ] CHANGELOG.md обновлён
- [ ] README.md актуален
- [ ] Документация актуальна: `cargo doc`