rustdrivesync 1.1.1

Production-ready CLI tool for one-way file synchronization with Google Drive. Features: dependency injection, rate limiting, retry with backoff, parallel uploads, and comprehensive documentation.
Documentation
# Como Publicar no crates.io

## Pré-requisitos

1. **Conta no crates.io**: Crie uma conta em https://crates.io/
2. **Token de API**: Gere um token em https://crates.io/me
3. **Login via cargo**:
   ```bash
   cargo login <SEU_TOKEN>
   ```

## Checklist Pré-Publicação

- [x] Versão atualizada no `Cargo.toml` (1.0.0)
- [x] Metadados completos (description, keywords, categories, etc.)
- [x] `LICENSE` file presente
- [x] `README.md` presente e atualizado
- [x] `CHANGELOG.md` atualizado com a versão atual
- [x] Todos os testes passando: `cargo test --all-features`
- [x] Build em release funcionando: `cargo build --release`
- [x] Linting sem erros: `cargo clippy -- -D warnings`
- [x] Formatação correta: `cargo fmt -- --check`
- [x] Dry-run bem-sucedido: `cargo publish --dry-run`
- [x] Commit e push de todas as mudanças
- [x] Tag de versão criada: `git tag v1.0.0`

## Publicar

### 1. Verificação Final

```bash
# Test
cargo test --all-features --workspace

# Build release
cargo build --release

# Lint
cargo clippy --all-targets --all-features -- -D warnings

# Format
cargo fmt --all -- --check

# Dry run
cargo publish --dry-run
```

### 2. Push para GitHub

```bash
# Push commits
git push origin master

# Push tags
git push origin --tags
```

### 3. Publicar no crates.io

```bash
cargo publish
```

**IMPORTANTE**: Após publicar, a versão **NÃO PODE SER DELETADA**. Apenas pode ser "yanked" (marcada como deprecated).

### 4. Verificar Publicação

```bash
# Instalar da versão publicada
cargo install rustdrivesync

# Testar
rustdrivesync --version
```

## Versões Futuras

Para publicar novas versões:

1. Atualizar `version` no `Cargo.toml`
2. Atualizar `CHANGELOG.md`
3. Fazer commit: `git commit -am "chore: bump version to X.Y.Z"`
4. Criar tag: `git tag vX.Y.Z`
5. Push: `git push origin master --tags`
6. Publicar: `cargo publish`

## Política de Versionamento Semântico

- **MAJOR** (X.0.0): Breaking changes (incompatibilidade com versão anterior)
- **MINOR** (0.X.0): Novas features (compatível)
- **PATCH** (0.0.X): Bug fixes (compatível)

Exemplos:
- `1.0.0``1.1.0`: Nova feature (backend S3)
- `1.1.0``1.1.1`: Bug fix
- `1.x.x``2.0.0`: Breaking change (API incompatível)

## Yanking (Deprecar Versão)

Se você publicou uma versão com bug crítico:

```bash
# Yank (deprecar)
cargo yank --vers 1.0.0

# Unyank (reverter deprecação)
cargo yank --vers 1.0.0 --undo
```

**Nota**: Yank não remove o pacote, apenas impede novos projetos de usá-lo.

## Links Úteis

- **crates.io**: https://crates.io/crates/rustdrivesync
- **docs.rs**: https://docs.rs/rustdrivesync
- **Cargo Book**: https://doc.rust-lang.org/cargo/reference/publishing.html

## Status Atual

- [x] **V1.0.0**: Pronto para publicação
- [x] Dry-run: ✅ Passou
- [x] GitHub Release: ✅ Criada
- [x] Workflows CI/CD: ✅ Configurados
- [ ] **Publicado no crates.io**: ⏳ Aguardando comando

---

**Para publicar agora**:
```bash
cargo publish
```