# kyotool-fetch

`kyotool-fetch`는 URL을 가져와 본문을 추출하고, Markdown 또는 JSON 형태로 출력하는 CLI 도구입니다.

## 프로젝트 구조

```text
kyotool-fetch/
├─ pyproject.toml
├─ README.md
├─ PLAN.md
├─ SPEC.md
├─ src/
│  └─ kyotool_fetch/
│     ├─ __init__.py
│     └─ cli.py
├─ tests/
│  └─ test_cli.py
├─ main.py
└─ uv.lock
```

### 주요 파일

- `pyproject.toml`: 패키지 메타데이터, 의존성, CLI 엔트리포인트
- `src/kyotool_fetch/cli.py`: fetch 및 CLI 실행 로직
- `tests/test_cli.py`: CLI와 fetch 동작을 검증하는 테스트
- `SPEC.md`: 구현 기준 문서
- `PLAN.md`: 구현 순서와 검증 계획

## 요구 환경

- Python `3.14` 이상
- `uv` 권장

## 설치

### 개발 환경

```bash
uv venv
uv pip install -e .
```

### 일반 설치

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

## 실행

```bash
kyotool-fetch https://example.com
```

옵션 예시:

```bash
kyotool-fetch https://example.com --json
kyotool-fetch https://example.com --format text
kyotool-fetch https://example.com --links-only
```

## 빌드

패키지 배포용 산출물을 만들려면 다음 명령을 사용한다.

```bash
uv build
```

산출물은 일반적으로 `dist/` 아래에 생성된다.

## 테스트

테스트는 표준 라이브러리 `unittest`로 실행한다.

```bash
uv run python -m unittest discover -s tests -v
```

개별 테스트 파일만 실행하려면 다음과 같이 할 수 있다.

```bash
uv run python -m unittest tests.test_cli -v
```

## 배포

### 1. 로컬 검증

배포 전에 다음을 확인한다.

```bash
uv run python -m unittest discover -s tests -v
uv run kyotool-fetch --help
```

### 2. 배포 아티팩트 생성

```bash
uv build
```

### 3. 패키지 배포

PyPI에 배포하는 경우 `dist/`에 생성된 파일을 업로드한다.

```bash
python -m twine upload dist/*
```

실제 배포 전에는 대상 저장소, 버전, 인증 정보를 확인해야 한다.

## 현재 구현 범위

- CLI 인자 파싱
- HTTP `GET` fetch
- 성공/실패 결과 객체 반환
- `--json` 출력
- `--links-only` 출력

본문 추출, Markdown 변환, 메타데이터 추출은 이후 단계에서 확장할 수 있다.

