본문으로 건너뛰기

플러그인 배포하기

시드가 있는 이유는 리포에 오프라인이면서 스키마가 올바른 RegistryIndex 픽스처를 두기 위함입니다. Rust 드리프트 가드 테스트(test_committed_registry_seed_deserializes)가 테스트를 돌릴 때마다 그것을 역직렬화하고, 모양이 살아 있는 레지스트리와 달라지면 실패합니다 — trust가 없는 것도 포함해서입니다. 티어가 없는 항목은 앱이 설치를 거부하는 플러그인을 기술하는 것이기 때문입니다.

시드의 항목은 라이브 레지스트리의 항목과 같고, 그 로컬 사본에서 설치하는 것은 여전히 실패합니다 — 의도된 동작입니다. 각 항목은 라이브 index.json과 같은 버전·체크섬을 싣고, downloadUrl은 라이브 레지스트리를 가리킵니다. 앱은 색인을 가져온 레지스트리 아래에서만 아카이브를 내려받으므로(src-tauri/src/plugin/origin.rs의 registry_base / is_within_registry), 로컬 서버를 가리키는 앱(로컬 시험 참조)은 그 항목을 목록에 띄우되 설치는 거부합니다. 시드로는 마켓플레이스 UI를 시험하고(목록, 권한·티어 배지, 레거시 상태, 새로고침), 플러그인이 실제로 도는 것은 소스에서 개발 모드로 불러와 (설정 → 플러그인 → 개발자) 시험하십시오. 설치 경로 자체를 시험하려면 색인 사본 옆에서 ZIP을 서빙하고 각 downloadUrl을 그 서버로 고쳐 쓰십시오.

시드가 아닌 것 두 가지를 더 적어 둡니다.

  • 살아 있는 색인의 바이트 단위 사본이 아닙니다. Prettier로 서식이 잡혀 있고(살아 있는 파일은 update-registry-index.mjs가 씁니다), 배포할 만한 항목만 담습니다 — baram-ai-summary는 배포된 적이 없어서가 아니라(1.0.0 아카이브는 레지스트리에 여전히 남아 있습니다) 철회되어서 없습니다(registry/revoked.json 참고).
  • 체크섬은 자동으로 채워지지 않습니다. 릴리스 워크플로는 sayinel/baram-plugins를 클론해 그 리포의 index.json만 갱신하고, 여기로 되쓰는 것은 없습니다. 버전을 배포한 뒤 관리자가 워크플로의 sha256sum 출력을 이 파일에 손으로 옮깁니다. 잊는 것은 이제 보고되지만 막히지는 않습니다 — validate-index.ts가 npm run lint마다 전부 0인 체크섬을 경고하면서도, ZIP이 아직 없는 릴리스를 가리키는 시드는 허용합니다. 16진수 64자 모양 검사만으로는 이것을 결코 볼 수 없습니다 — 0도 그 모양을 만족하기 때문입니다.

플러그인은 샌드박스 플러그인만 받는 커뮤니티 레지스트리를 거쳐 다른 사람에게 닿습니다. 자기 저장소에 GitHub 릴리스를 만들고, sayinel/baram-plugins에 작은 서술 파일 하나를 더하는 풀 리퀘스트를 엽니다. 레지스트리가 릴리스를 복사해 자기 주소에서 내보내므로, 사용자는 저자의 저장소에서 내려받지 않습니다. 템플릿, 릴리스 워크플로, 서술 파일, 검사 항목까지 전체 절차는 커뮤니티 레지스트리에 배포하기에 있습니다.

이 리포의 1군 플러그인은 이 경로를 쓰지 않습니다. plugin-<dir>-v<version> 태그를 밀면 레지스트리의 index.json에 바로 배포됩니다(레지스트리 불러오기와 로컬 시험 참조).