Hub

hub モジュールは、Wippy Hub のモジュール、バージョン、依存関係、ファイル、アーティファクト、README を読み取ります。また、ランタイムの Hub 認証情報オーバーライドを管理し、ローカルキャッシュから未固定のアーティファクトを削除できます。

このページは API リファレンスです。カタログ座標は説明用です。アーティファクト、認証、キャッシュの各操作には、一致するネットワークアクセス、認証情報、ロック状態、セキュリティポリシーが必要です。

読み込み

local hub = require("hub")

呼び出しごとのオプション

ネットワーク経由のカタログおよびアーティファクト呼び出しは、次の共通キーを持つオプションテーブルを受け取れます。

キー 型 説明
registry string レジストリ URL の上書き
token string API トークンの上書き
timeout duration/number リクエストのタイムアウト(例: "3m" または秒数)

ページネーション対応の呼び出しでは page と page_size も指定できます。

認証呼び出しにはレジストリ URL を直接渡します。キャッシュ呼び出しとパッケージハンドルのメソッドには、それぞれ以下で説明する専用オプションがあります。

モジュール

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"
})
if err then return nil, err end
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")
if err then return nil, err end

local entries, 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> }
local _, close_err = pkg:close()
if entries_err then return nil, entries_err end
if close_err then return nil, close_err end
return entries
メソッド 説明
pkg:metadata() パックのメタデータマップ
pkg:entries(opts?) アーティファクト内のレジストリエントリ。opts.kind でフィルタ、opts.include_data(デフォルト true)で data フィールドを制御
pkg:resources() 埋め込みリソースの一覧
pkg:fs(resource) 埋め込みリソースのファイルシステムハンドル
pkg:close() ハンドルを解放

エントリの data は生のまま返されます — ${env:...} 参照は解決されません。

ローカルアーティファクトキャッシュ

local entries, err = hub.cache.list()

local removed, err = hub.cache.remove("wippy/terminal", "1.2.3", {
    force = false,
})

local candidates, err = hub.cache.prune({
    dry_run = true,
})
関数 説明
hub.cache.list() キャッシュ済みアーティファクトを {module, version, size, pinned} レコードとして一覧表示
hub.cache.remove(module, version, opts?) キャッシュ済みアーティファクトを 1 つ削除。opts.force = true を指定するとロックファイルで固定されていても削除可能
hub.cache.prune(opts?) ロックファイルから参照されていないアーティファクトを削除。opts.dry_run = true では候補のみを報告

hub.cache.remove と hub.cache.prune は、ドライランまたは固定保護が適用されない限り、ロックから解決された vendor ディレクトリ内のファイルを削除します。

依存関係

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} を返す

キャッシュ

local cached, err = hub.cache.list()
-- 各エントリ: { module, version, size, pinned }

local ok, err = hub.cache.remove("wippy/terminal", "1.2.3", { force = true })
local pruned, err = hub.cache.prune({ dry_run = true })
関数 説明
hub.cache.list(opts?) vendor ディレクトリ配下のキャッシュ済みアーティファクトを一覧。ロックファイルがそのアーティファクトを参照している場合 pinned は true
hub.cache.remove(module, version, opts?) キャッシュ済みアーティファクトを1つ削除。ロックで固定されたアーティファクトは opts.force が true でない限り拒否(種別 errors.CONFLICT)。true を返す
hub.cache.prune(opts?) ロックファイルが参照していないキャッシュ済みアーティファクトをすべて削除。opts.dry_run = true の場合は何も削除しない。削除した(または削除される)エントリを返す

権限: hub.cache.list、hub.cache.remove(リソース: モジュール名)、hub.cache.prune

認証

実行中のプロセスにレジストリトークンをプッシュします — すべてのハブ利用側が次回の呼び出しから、再起動なしでそのトークンを使用します:

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()

上のトークン文字列はプレースホルダーです。実際の認証情報は、シークレットで保護された環境エントリまたは別の保護されたソースから読み込んでください。Lua やレジストリ YAML にコミットしてはいけません。

関数 説明
hub.auth.authenticate(token, registry?) トークンをレジストリに対して検証し、成功時にランタイムのオーバーライドとしてインストール
hub.auth.status(registry?) 現在の認証情報をライブ検証
hub.auth.logout(registry?) ランタイムのトークンオーバーライドをクリア

status には authenticated、registry、orgs が含まれます。アイデンティティフィールド(username、user_id、scope、expires_at、expired)は認証済みの場合にのみ存在します。検証に失敗したトークンは保存されず、authenticate は authenticated = false を返します。このオーバーライドは WIPPY_TOKEN および保存済みの認証情報より優先されます。

権限

各トップレベルの hub.* 操作は、hub.modules.list、hub.versions.open、hub.dependencies.get、hub.files.list、hub.auth.status、hub.cache.prune のように対応するアクション名を検査します。モジュールを指定するアクションは指定されたモジュール参照をセキュリティリソースとして使い、認証アクションはレジストリ URL を使用します。認可済みの hub.versions.open 呼び出し後、パッケージハンドルのメソッドでは再度の権限検査を行いません。

関連項目