Skip to main content

uv를 더 쉽게 사용하기 위한 도구

Project description

uv_easy

uv를 더 쉽게 사용하기 위한 파이썬 패키지입니다. 버전 관리, 빌드, 배포 과정을 자동화하여 개발 워크플로우를 개선합니다.

🚀 주요 기능

  • 프로젝트 초기화: CLI 프로젝트 구조 자동 생성 (click/argparse 지원)
  • 자동 버전 관리: Git 커밋 분석을 통한 Semantic Versioning 자동 증가
  • Git 태그 자동화: 버전 증가 시 자동으로 Git 태그 생성 및 푸시
  • 태그 버전 동기화: 저장소의 최신 태그 버전과 pyproject.toml 버전을 비교/동기화
  • 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

태그 버전과 동기화

# 저장소의 최신 태그 버전과 pyproject.toml의 버전을 비교
# 두 버전이 다르면 pyproject.toml을 태그의 최신 버전으로 수정합니다
uv_easy version sync

저장소 태그(예: v0.2.55)의 최신 버전과 pyproject.tomlversion을 비교합니다.

  • 두 버전이 같으면 아무것도 변경하지 않습니다.
  • 다르면 pyproject.toml의 버전을 태그의 최신 버전으로 맞춥니다.

빌드

기본 빌드 (패치 버전 증가 후 빌드)

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 version show

  • 현재 pyproject.toml의 버전을 표시합니다 (옵션 없음)

uv_easy version sync

  • 저장소의 최신 태그 버전과 pyproject.toml의 버전을 비교하고, 다르면 태그 버전으로 수정합니다 (옵션 없음)

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 bump
  • fix: → patch bump
  • breaking 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


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.57.tar.gz (45.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

uv_easy-0.2.57-py3-none-any.whl (20.2 kB view details)

Uploaded Python 3

File details

Details for the file uv_easy-0.2.57.tar.gz.

File metadata

  • Download URL: uv_easy-0.2.57.tar.gz
  • Upload date:
  • Size: 45.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for uv_easy-0.2.57.tar.gz
Algorithm Hash digest
SHA256 adea5cc1adbc23b41c888c915c44091f1aeb3a9ec4620da8228dd411bcb05827
MD5 55bfe6a481bffb854169969a66589b51
BLAKE2b-256 c1c107eb45bec0e266fc50fc54dd37b04a82220829c4e6f0010bec7edb7b6215

See more details on using hashes here.

File details

Details for the file uv_easy-0.2.57-py3-none-any.whl.

File metadata

  • Download URL: uv_easy-0.2.57-py3-none-any.whl
  • Upload date:
  • Size: 20.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for uv_easy-0.2.57-py3-none-any.whl
Algorithm Hash digest
SHA256 e53a53977ad727139c5faf264275b89eb7f089bbdb5a08da74a294a37f72bb39
MD5 beef8f1df748f9c1696bbe14954ecf48
BLAKE2b-256 8174d5ef9f773ec8a9ece5ea6db943819c2e22863256777d31d47e0ae1f1b9ad

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page