uv를 더 쉽게 사용하기 위한 도구
Project description
uv_easy
uv를 더 쉽게 사용하기 위한 파이썬 패키지입니다. 버전 관리, 빌드, 배포 과정을 자동화하여 개발 워크플로우를 개선합니다.
🚀 주요 기능
- 프로젝트 초기화: CLI 프로젝트 구조 자동 생성 (click/argparse 지원)
- 자동 버전 관리: Git 커밋 분석을 통한 Semantic Versioning 자동 증가
- Git 태그 자동화: 버전 증가 시 자동으로 Git 태그 생성 및 푸시
- Changelog 자동 생성: git-cliff를 통한 자동 changelog 생성
- 빌드 자동화: 빌드 잔여물 정리 및 패키지 빌드
- PyPI/TestPyPI 배포: twine을 통한 안전한 패키지 업로드
- GitHub Actions 통합: 자동 배포를 위한 workflow 생성
- JSON 출력: CI/CD 친화적인 구조화된 출력
📦 설치
# 프로젝트 디렉토리에서
uv sync
🛠️ 사용법
프로젝트 초기화
새로운 CLI 프로젝트 생성
# click 사용 (기본값)
uv_easy startproject my_cli
# argparse 사용
uv_easy startproject my_cli --use argparse
이 명령어는 다음을 자동으로 생성합니다:
<패키지명>/__init__.py- 패키지 초기화 파일<패키지명>/__main__.py- 메인 진입점<패키지명>/cli.py- CLI 구현 (click 또는 argparse)pyproject.toml에 스크립트 자동 추가- 기본
version명령어 포함
생성된 프로젝트 사용 예시:
# 의존성 설치
uv sync
# 버전 확인
my_cli version
# uv_easy로 버전 관리
uv_easy version up --patch
버전 관리
현재 버전 확인
uv_easy version show
수동 버전 증가
# 패치 버전 증가 (0.1.0 → 0.1.1)
uv_easy version up --patch
# 마이너 버전 증가 (0.1.0 → 0.2.0)
uv_easy version up --minor
# 메이저 버전 증가 (0.1.0 → 1.0.0)
uv_easy version up --major
자동 버전 증가 (Semantic Versioning)
# Git 커밋을 분석하여 자동으로 버전 증가
uv_easy version up --auto
# Git 태그를 푸시하지 않음
uv_easy version up --auto --no-push
빌드
기본 빌드 (패치 버전 증가 후 빌드)
uv_easy build
버전 증가 없이 빌드만
uv_easy build --no-version-up
특정 버전 증가 후 빌드
# 마이너 버전 증가 후 빌드
uv_easy build --minor
# 메이저 버전 증가 후 빌드
uv_easy build --major
# 자동 버전 증가 후 빌드
uv_easy build --auto
빌드 후 자동 설치
uv_easy build --install
Changelog 생성
# 현재 버전에 대한 changelog 생성
uv_easy changelog
# 특정 태그에 대한 changelog 생성
uv_easy changelog --tag v0.2.1
# 다른 파일명으로 출력
uv_easy changelog --output HISTORY.md
PyPI/TestPyPI 배포
PyPI 배포 준비 (URLs 설정)
uv_easy ready_pypi
PyPI 업로드
uv_easy publish
TestPyPI 업로드
uv_easy publish --test
JSON 출력 (CI/CD용)
uv_easy publish --json
GitHub Actions 설정
기본 workflow 생성
uv_easy init workflow
TestPyPI용 workflow 생성
uv_easy init workflow --test
GitHub Release 자동화 포함
uv_easy init workflow --release
git-cliff 설정 파일 생성
uv_easy init cliff-config
🔄 전체 워크플로우
개발 중 패치 릴리즈
# 버그 수정 후
uv_easy build --patch --install
새로운 기능 추가
# 기능 추가 후
uv_easy build --minor --install
메이저 업데이트
# 호환성을 깨는 변경 후
uv_easy build --major --install
자동 Semantic Versioning
# 커밋 메시지에 따라 자동 버전 증가
uv_easy build --auto --install
완전 자동화된 릴리즈
# 1. 버전 증가, Git 태그, 빌드, 설치를 한 번에
uv_easy build --auto --install
# 2. Changelog 생성
uv_easy changelog
# 3. PyPI 배포
uv_easy publish
📋 명령어 옵션
uv_easy version up
--major: 메이저 버전을 증가시킵니다--minor: 마이너 버전을 증가시킵니다--patch: 패치 버전을 증가시킵니다--auto: Git 커밋을 분석하여 자동으로 버전을 증가시킵니다--no-push: Git 태그를 푸시하지 않습니다
uv_easy build
--no-version-up: 버전을 증가시키지 않고 빌드만 실행합니다--major: 메이저 버전을 증가시킨 후 빌드합니다--minor: 마이너 버전을 증가시킨 후 빌드합니다--patch: 패치 버전을 증가시킨 후 빌드합니다--auto: Git 커밋을 분석하여 자동으로 버전을 증가시킨 후 빌드합니다--install: 빌드 후 현재 환경에 패키지를 설치합니다--no-push: Git 태그를 푸시하지 않습니다
uv_easy changelog
--tag: 특정 태그에 대한 changelog 생성--output,-o: 출력 파일명 지정 (기본: CHANGELOG.md)
uv_easy publish
--test: TestPyPI에 업로드합니다--json: JSON 형태로 결과를 출력합니다
uv_easy startproject
<package_name>: 생성할 패키지 이름 (필수)--use: 사용할 CLI 라이브러리 (click또는argparse, 기본값:click)
uv_easy init workflow
--test: TestPyPI용 workflow 생성--release: GitHub Release 자동화 포함
🎯 Semantic Versioning 자동 감지
--auto 옵션을 사용하면 Git 커밋 메시지를 분석하여 자동으로 버전을 증가시킵니다:
feat:→ minor bumpfix:→ patch bumpbreaking change또는!포함 → major bump- 기타 → patch bump
📊 JSON 출력 예시
{
"version": "0.2.1",
"repository": "pypi",
"artifacts": [
"dist/uv_easy-0.2.1.tar.gz",
"dist/uv_easy-0.2.1-py3-none-any.whl"
]
}
🔧 요구사항
- Python 3.9 이상
- uv
- pyproject.toml 파일이 있는 프로젝트
- Git 저장소
📄 라이선스
이 프로젝트는 MIT 라이선스 하에 배포됩니다.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
uv_easy-0.2.42.tar.gz
(42.5 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
uv_easy-0.2.42-py3-none-any.whl
(18.1 kB
view details)
File details
Details for the file uv_easy-0.2.42.tar.gz.
File metadata
- Download URL: uv_easy-0.2.42.tar.gz
- Upload date:
- Size: 42.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
926726cf4eba79abb3daac392ce444058e98d04439964cf6e6de2c2d470b310e
|
|
| MD5 |
8ece1af87e6242e975cb12a78801ab33
|
|
| BLAKE2b-256 |
e98484268bfa32d821d159e85905f64d373448c1b5b31b811fa63063f790474f
|
File details
Details for the file uv_easy-0.2.42-py3-none-any.whl.
File metadata
- Download URL: uv_easy-0.2.42-py3-none-any.whl
- Upload date:
- Size: 18.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7c4e9932fe8606ef2e99f2bb77aab72c6868bff54a521731617425cdcae59910
|
|
| MD5 |
c1f0f3ad6bf9637d01c8dd7c5cd43e39
|
|
| BLAKE2b-256 |
739bf532cc687824918f5fc8ae5579a476bf85b105595bbbbeac3149062cafa7
|