Hub

Доступ только для чтения к каталогу модулей Wippy Hub: получение списка модулей, поиск, запрос метаданных, версий, зависимостей и README.

Загрузка

local hub = require("hub")

Параметры вызова

Каждый вызов принимает необязательную таблицу опций. Ключи, общие для всех вызовов:

Ключ Тип Описание
registry string Переопределение URL реестра
token string Переопределение API-токена
timeout duration/number Тайм-аут запроса (например, "3m" или секунды)

Вызовы с поддержкой пагинации также принимают page и page_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?) Сбросить переопределение токена среды выполнения

status содержит authenticated, registry и orgs; поля идентичности (username, user_id, scope, expires_at, expired) присутствуют только при аутентификации. Токен, не прошедший проверку, не сохраняется — authenticate возвращает authenticated = false. Переопределение имеет приоритет над WIPPY_TOKEN и сохранёнными учётными данными.

Разрешения: hub.auth.authenticate, hub.auth.status, hub.auth.logout

См. также