dua 설치 스크립트 최신 릴리스 태그 필터링 오류 수정

This commit is contained in:
mcchae committed 2026-10-31 04:28:07 +09:00
1 parent 8f2177b3b5
commit 5a67e7bbcf
4 files changed
+351 -194

No files matched your search

@@ -0,0 +1,38 @@
# 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*` 바이너리를 다운로드하거나 폴백으로 설치하는 기능이 부족했습니다.
```mermaid
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: 원인 분석 및 계획 수립
- [x] GitHub Releases API 응답 구조 확인 (`dua-core-v*` vs `v*`)
- [x] 실행 계획서(`VIBE-WORK/261031/FIX-DUA-INSTALL-IMP-PLAN.md`) 작성
### 단계 2: `install-dua.sh` 수정
- [x] `_json_latest_tag` 함수에서 `prerelease == false` 조건뿐만 아니라 `tag_name`이 `v`로 시작하고(`startswith("v")`) `assets` 배열이 비어있지 않은 릴리스만 선택하도록 필터 강화
- [x] GitHub API 호출 시 User-Agent 헤더 및 Fallback 태그(`v2.46.0`) 안전장치 추가
- [x] `bash -n install-dua.sh` 문법 검사 및 태그 추출 테스트
### 단계 3: `install-dua.ps1` 개선
- [x] GitHub Releases에서 `v*` 태그의 Windows 바이너리(`dua-{TAG}-{ARCH}-pc-windows-msvc.zip`)를 직접 다운로드하여 `$env:USERPROFILE\.local\bin`에 설치하도록 개선 (다른 스크립트들과 일관된 방식)
- [x] PATH 환경변수 자동 등록 및 버전 확인 로직 구성
### 단계 4: 완료 보고서 작성 및 Graphify 업데이트 / Git 푸시
- [x] 완료 보고서(`VIBE-WORK/261031/FIX-DUA-INSTALL-PHASE01.md`) 작성
- [x] `uv tool run --from graphifyy graphify update .` 실행
- [x] Git commit 및 push