Skip to content

hakunamta00700/uv_easy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 라이선스 하에 배포됩니다.

About

uv를 조금 더 쉽게 사용할 수 있도록 만든 패키지

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages