Files
install-sh/VIBE-WORK/261031/FIX-DUA-INSTALL-IMP-PLAN.md

2.6 KiB

dua 설치 스크립트 오류 수정 계획 (FIX-DUA-INSTALL-IMP-PLAN)

1. 원인 분석

Byron/dua-cli GitHub 저장소는 워크스페이스 내 라이브러리 크레이트(dua-core-v5.0.1, dua-core-v5.0.0 등)의 릴리스도 함께 발행합니다. 기존 install-dua.sh는 단순히 prerelease == false인 첫 번째 릴리스 태그를 가져오도록 작성되어 있어, 바이너리 에셋이 전혀 없는 dua-core-v5.0.1 태그를 선택하고 dua-dua-core-v5.0.1-x86_64-unknown-linux-musl.tar.gz와 같은 존재하지 않는 다운로드 URL을 요청하여 404 에러로 실패하였습니다. 또한 Windows용 install-dua.ps1은 winget에만 의존하고 있어, GitHub Releases에서 직접 최신 v* 바이너리를 다운로드하거나 폴백으로 설치하는 기능이 부족했습니다.

flowchart TD
    Start([설치 시작]) --> API[GitHub Releases API 조회]
    API --> Filter{태그가 'v*' 로 시작하고<br/>assets가 존재하는가?}
    Filter -- No (예: dua-core-v*) --> Skip[무시하고 다음 릴리스 검사]
    Skip --> Filter
    Filter -- Yes (예: v2.46.0) --> Download[아키텍처별 에셋 다운로드<br/>dua-vX.Y.Z-target.tar.gz/.zip]
    Download --> Extract[압축 해제 및 ~/.local/bin 배포]
    Extract --> PathConfig[PATH 환경변수 등록]
    PathConfig --> Done([설치 완료])

2. 작업 단계 및 체크리스트

단계 1: 원인 분석 및 계획 수립

  • GitHub Releases API 응답 구조 확인 (dua-core-v* vs v*)
  • 실행 계획서(VIBE-WORK/261031/FIX-DUA-INSTALL-IMP-PLAN.md) 작성

단계 2: install-dua.sh 수정

  • _json_latest_tag 함수에서 prerelease == false 조건뿐만 아니라 tag_name이 v로 시작하고(startswith("v")) assets 배열이 비어있지 않은 릴리스만 선택하도록 필터 강화
  • GitHub API 호출 시 User-Agent 헤더 및 Fallback 태그(v2.46.0) 안전장치 추가
  • bash -n install-dua.sh 문법 검사 및 태그 추출 테스트

단계 3: install-dua.ps1 개선

  • GitHub Releases에서 v* 태그의 Windows 바이너리(dua-{TAG}-{ARCH}-pc-windows-msvc.zip)를 직접 다운로드하여 $env:USERPROFILE\.local\bin에 설치하도록 개선 (다른 스크립트들과 일관된 방식)
  • PATH 환경변수 자동 등록 및 버전 확인 로직 구성

단계 4: 완료 보고서 작성 및 Graphify 업데이트 / Git 푸시

  • 완료 보고서(VIBE-WORK/261031/FIX-DUA-INSTALL-PHASE01.md) 작성
  • uv tool run --from graphifyy graphify update . 실행
  • Git commit 및 push