Skip to main content

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 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.9.tar.gz (41.6 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.9-py3-none-any.whl (17.0 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for uv_easy-0.2.9.tar.gz
Algorithm Hash digest
SHA256 a9ba1f5e984cf97a64e308bee0640a96163736b2d3edd30cb681980b4dc307df
MD5 53a95f25d7aaef6c86e3ecf97e9dad0c
BLAKE2b-256 10a5d388a20510f9bc6b4984b8b6ffccbe4d1e52678ebfe93f72a5ad6ce031f2

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for uv_easy-0.2.9-py3-none-any.whl
Algorithm Hash digest
SHA256 dfae33488c0f15a00b238b844c7a8576ffd8ef56fe7148d82b7c00674f995b57
MD5 09020102873116765a401fb8155a59e4
BLAKE2b-256 fad84de47a414d3a1e59853dca939ccd95d64d48e3c6a3085aed8bfb0fcfe2b0

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