Hub

Wippy Hub 모듈 카탈로그에 대한 읽기 전용 액세스: 모듈 목록 조회, 검색, 메타데이터, 버전, 의존성, README 조회.

로드

local hub = require("hub")

호출별 옵션

모든 호출은 선택적 옵션 테이블을 받습니다. 모든 호출에 공통된 키:

타입 설명
registry string Registry URL 재정의
token string API 토큰 재정의
timeout duration/number 요청 타임아웃 (예: "3m" 또는 초)

페이지네이션을 지원하는 호출은 pagepage_size도 받습니다.

모듈

local result, err = hub.modules.list({
    org = "wippy",
    visibility = "public",
    type = "library",
    sort_order = "downloads_desc",
    page = 1,
    page_size = 20,
})
-- result = { items, total, page, page_size }
함수 설명
hub.modules.list(opts?) 필터로 모듈 목록 조회
hub.modules.search(query, opts?) 쿼리 문자열로 검색
hub.modules.get(module, opts?) org/name 또는 모듈 id로 모듈 조회
hub.modules.readme(module, opts?) README 조회; {content, filename, version} 반환

List/Search 옵션

옵션
organization_id / org string
visibility public, private, internal
type library, application, agent, plugin
sort_order name_asc, name_desc, created_desc, updated_desc, downloads_desc
keywords (search) 문자열 배열
license (search) string
include_deprecated (search) boolean

README

local readme, err = hub.modules.readme("wippy/terminal", {
    version = "1.2.3"
})
print(readme.content)

version 옵션은 버전 문자열 또는 {id, version, label} 형태의 테이블을 받습니다.

버전

local versions, err = hub.versions.list("wippy/terminal", {
    include_yanked = false,
    page_size = 50,
})

local v, err = hub.versions.get("wippy/terminal", "1.0.0")
함수 설명
hub.versions.list(module, opts?) 모듈 버전 목록 조회
hub.versions.get(module, version, opts?) 특정 버전 조회
hub.versions.inspect(module, version, opts?) 버전의 아티팩트 검사(번들을 다운로드하여 읽음)
hub.versions.open(module, version, opts?) 버전의 아티팩트를 패키지 핸들로 열기

패키지 핸들

hub.versions.open은 아티팩트를 다운로드하고 version, digest, packed 필드를 가진 핸들을 반환합니다:

local pkg, err = hub.versions.open("wippy/terminal", "1.2.3")

local entries, err = pkg:entries({
    kind = "function.lua",       -- string or string[], omit for all kinds
    include_data = false,        -- default true
})
-- each entry: { id = "ns:name", kind = "...", meta = {...}, data = <any> }

pkg:close()
메서드 설명
pkg:metadata() 팩 메타데이터 맵
pkg:entries(opts?) 아티팩트 내의 레지스트리 엔트리; opts.kind로 필터링, opts.include_data(기본값 true)로 data 필드 제어
pkg:resources() 임베드된 리소스 목록
pkg:fs(resource) 임베드된 리소스의 파일시스템 핸들
pkg:close() 핸들 해제

엔트리의 data는 원시 그대로 반환됩니다 — ${env:...} 참조는 해석되지 않습니다.

의존성

local deps, err = hub.dependencies.get("wippy/terminal", "1.0.0")
local users, err = hub.dependents.get("wippy/terminal")
함수 설명
hub.dependencies.get(module, version?, opts?) 모듈 버전의 의존성
hub.dependents.get(module, opts?) 이 모듈에 의존하는 모듈들

파일

local files, err = hub.files.list("wippy/terminal", "1.0.0")
함수 설명
hub.files.list(module, version, opts?) 버전의 파일 목록 조회(version 필수); {items, total, page, page_size} 반환

인증

레지스트리 토큰을 실행 중인 프로세스에 푸시합니다 — 모든 hub 소비자가 재시작 없이 다음 호출에서 이를 사용합니다:

local status, err = hub.auth.authenticate("wpy_xxx")          -- default registry
local status, err = hub.auth.authenticate("wpy_xxx", "https://hub.example.com")

local status, err = hub.auth.status()
local ok, err = hub.auth.logout()
함수 설명
hub.auth.authenticate(token, registry?) 레지스트리에 대해 토큰을 검증하고, 성공 시 런타임 재정의로 설치
hub.auth.status(registry?) 현재 자격 증명을 실시간 검증
hub.auth.logout(registry?) 런타임 토큰 재정의 해제

statusauthenticated, registry, orgs를 포함합니다; 신원 필드(username, user_id, scope, expires_at, expired)는 인증된 경우에만 존재합니다. 검증에 실패한 토큰은 저장되지 않습니다 — authenticateauthenticated = false를 반환합니다. 이 재정의는 WIPPY_TOKEN과 저장된 자격 증명보다 우선합니다.

권한: hub.auth.authenticate, hub.auth.status, hub.auth.logout

참고