rustploy-gui 0.1.52

Rustploy — desktop client (glacier-ui) for the Rustploy PaaS daemon
--!strict
-- format/git.luau — builders dos provedores/repositórios/branches Git
-- conectados (Gitea/GitHub) — Settings → Git e o picker da aba General do
-- serviço.

local Util = require("util")

-- Rótulo amigável do tipo de provedor a partir do enum do wire
-- (GitProviderKind).
local function kind_label(kind: any): string
    if kind == "Github" then
        return "GitHub"
    elseif kind == "Gitea" then
        return "Gitea"
    end
    return tostring(kind or "Git")
end

local M = {}

function M.git_providers(providers: { any }?): string
    local rows = {}
    for _, provider in ipairs(providers or {}) do
        local login = provider.account and provider.account.login or nil
        local connected = login ~= nil
        local display: string
        local account_lbl: string
        local account_login: string
        if connected then
            display = tostring(provider.name or "")
                .. " (@"
                .. tostring(login or "")
                .. ")"
            account_lbl = "@" .. tostring(login or "")
            account_login = tostring(login or "")
        else
            display = tostring(provider.name or "") .. i18n.tr(" — não conectado")
            account_lbl = i18n.tr("(pendente — autorize no navegador)")
            account_login = i18n.tr("não conectado")
        end
        local auth_mode = (provider.auth_mode == "OAuth") and "OAuth2" or "PAT"
        table.insert(rows, {
            id = provider.id,
            name = provider.name,
            kind = kind_label(provider.kind),
            display = display,
            base_url = provider.base_url,
            auth_mode = auth_mode,
            account = account_lbl,
            account_login = account_login,
            connected = connected and "true" or "false",
        })
    end
    return Util.encode_array(rows)
end

function M.git_repos(repositories: { any }?): string
    local rows = {}
    for _, repository in ipairs(repositories or {}) do
        table.insert(rows, {
            full_name = repository.full_name,
            clone_url = repository.clone_url,
            default_branch = repository.default_branch,
            private = repository.private and "private" or "public",
        })
    end
    return Util.encode_array(rows)
end

function M.git_branches(branches: { any }?): string
    local rows = {}
    for _, branch in ipairs(branches or {}) do
        table.insert(rows, { name = branch.name })
    end
    return Util.encode_array(rows)
end

return M