# DX Labs CLI - Hướng dẫn Phát triển & Phát hành

Tài liệu này hướng dẫn cách cài đặt local, build package và upload lên PyPI cho thư viện `dxlabs`.

## 1. Cài đặt môi trường phát triển (Local Installation)

Để cài đặt thư viện ở chế độ "Editable" (sửa code là cập nhật ngay lập tức), hãy chạy lệnh sau tại thư mục gốc của project:

```bash
pip install -e .
```

Sau khi cài đặt, bạn có thể sử dụng lệnh `dxlabs` trực tiếp từ terminal.

## 2. Build Package

Để build project thành các file phân phối (`.whl` và `.tar.gz`), bạn cần cài đặt công cụ `build`:

```bash
pip install build
```

Sau đó, chạy lệnh build:

```bash
python -m build
```

Sau khi chạy xong, các file build sẽ nằm trong thư mục `dist/`.

## 3. Upload lên PyPI (Phát hành thư viện)

Để đưa thư viện lên kho [PyPI](https://pypi.org/), bạn cần có tài khoản PyPI và cài đặt `twine`:

```bash
pip install twine
```

### Bước 1: Kiểm tra package (Tùy chọn)
Kiểm tra xem các file build có hợp lệ không:
```bash
python -m twine check dist/*
```

### Bước 2: Upload
Upload lên PyPI (hệ thống sẽ yêu cầu username/password hoặc API Token):
```bash
python -m twine upload dist/*
```

### Bước 3: Upload lên TestPyPI (Khuyên dùng trước khi lên bản chính)
Nếu bạn muốn thử nghiệm upload trước khi công khai chính thức:
```bash
python -m twine upload --repository testpypi dist/*
```

## 4. Cấu trúc Project

- `src/dxlabs/cli.py`: Điểm vào (Entry point) của CLI.
- `src/dxlabs/config.py`: Quản lý cấu hình `.dxlabs.json`.
- `src/dxlabs/core/`: Chứa logic nghiệp vụ chính.
- `src/dxlabs/providers/`: Chứa các provider (S3, v.v.).

## 5. Lưu ý về AWS Credentials

Thư viện sử dụng `boto3`. Bạn nên cấu hình AWS credentials thông qua:
1. Chạy `aws configure` để tạo profile.
2. Hoặc sử dụng biến môi trường `AWS_ACCESS_KEY_ID` và `AWS_SECRET_ACCESS_KEY`.
3. Khi `init` dự án, có thể dùng flag `--profile` để chỉ định profile AWS mong muốn.
