mirror of
https://github.com/hanzoai/forge.git
synced 2026-10-30 15:00:39 +00:00
Finishes the residual pass: the bulk of served leaks remained (28 locale files, most templates, all raster/source assets, Chinese READMEs). Imports, identifiers, and wire contracts are left intact. - locale: 28 files, all "Gitea" -> "Hanzo Git"; docs/blog/about.gitea.* + gitea.com/.io + go-gitea help URLs -> docs.hanzo.ai / git.hanzo.ai / github.com/hanzoai/git (keys with lowercase "gitea" preserved) - templates: footer, swagger UI title + generated OpenAPI specs (stale gitea.dev x-go-package -> github.com/hanzoai/git), webhook usernames, OAuth-source labels, package/help doc links, example org/team identifiers - Go served defaults: RSS feed author/description, git commit user.name + fallback email, WWW-Authenticate realms (OAuth2/packages/container), 500/error pages, MS Teams card, built-in OAuth provider label, CLI --help, SSH + push-rejection messages, startup/index/redis/doctor logs, test-mail subject + X-Mailer - config: app.example.ini APP_NAME default - assets: source assets/*.svg, gitea.svg, gitea-gitea sprite, and all PNGs (logo/favicon/apple-touch/avatar_default) regenerated as the committed black-tile Hanzo mark; --color-logo #609926 -> monochrome; favicon-status test realigned to the new mark (viewBox 64) - README.zh-tw + README.zh-cn rewritten as Hanzo Git - render field CommitParticipant.GiteaUser -> User Preserved (imports / identifiers / external contracts): code.gitea.io, module github.com/hanzoai/git, gitea.dev/sdk dep, X-Gitea-* webhook + email headers, WWW-Authenticate realm="Gitea" in git-HTTP (Git Credential Manager OAuth2 detection), GitServiceType "Gitea" migration-source name, theme id gitea-auto, .gitea-* classes / svg symbol ids, Go/JS identifiers, "The Gitea Authors" copyright headers, outbound User-Agent headers. Co-authored-by: Hanzo Dev <[email protected]>
120 lines
4.5 KiB
Handlebars
120 lines
4.5 KiB
Handlebars
{{if eq .PackageDescriptor.Package.Type "container"}}
|
|
<h4 class="ui top attached header">{{ctx.Locale.Tr "packages.installation"}}</h4>
|
|
<div class="ui attached segment">
|
|
<div class="ui form">
|
|
<div class="field">
|
|
<label>{{svg "octicon-terminal"}} {{ctx.Locale.Tr "packages.container.pull"}}</label>
|
|
{{if eq .PackageDescriptor.Metadata.Type "helm"}}
|
|
<div class="markup"><pre class="code-block"><code>helm pull oci://{{.PackageRegistryHost}}/{{.PackageDescriptor.Owner.LowerName}}/{{.PackageDescriptor.Package.LowerName}} --version {{.PackageDescriptor.Version.LowerVersion}}</code></pre></div>
|
|
{{else}}
|
|
{{$separator := ":"}}
|
|
{{if not .PackageDescriptor.Metadata.IsTagged}}
|
|
{{$separator = "@"}}
|
|
{{end}}
|
|
<div class="markup"><pre class="code-block"><code>docker pull {{.PackageRegistryHost}}/{{.PackageDescriptor.Owner.LowerName}}/{{.PackageDescriptor.Package.LowerName}}{{$separator}}{{.PackageDescriptor.Version.LowerVersion}}</code></pre></div>
|
|
{{end}}
|
|
</div>
|
|
<div class="field">
|
|
<label>{{svg "octicon-code"}} {{ctx.Locale.Tr "packages.container.digest"}}</label>
|
|
<div class="markup">
|
|
<div class="code-block-container code-overflow-scroll">
|
|
<pre class="code-block"><code>
|
|
{{- range .PackageDescriptor.Files -}}
|
|
{{- if eq .File.LowerName "manifest.json" -}}
|
|
{{- .Properties.GetByName "container.digest" -}}{{"\n"}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
</code></pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="field">
|
|
<label>{{ctx.Locale.Tr "packages.registry.documentation" "Container" "https://docs.hanzo.ai/usage/packages/container/"}}</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{{if .PackageDescriptor.Metadata.Manifests}}
|
|
<h4 class="ui top attached header">{{ctx.Locale.Tr "packages.container.images"}}</h4>
|
|
<div class="ui attached segment">
|
|
<table class="ui very basic compact table">
|
|
<thead>
|
|
<tr>
|
|
<th>{{ctx.Locale.Tr "packages.container.digest"}}</th>
|
|
<th>{{ctx.Locale.Tr "packages.container.multi_arch"}}</th>
|
|
<th>{{ctx.Locale.Tr "admin.packages.size"}}</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{{range .PackageDescriptor.Metadata.Manifests}}
|
|
{{/* "unknown/unknown" is attestation-manifest, so we should skip it */}}
|
|
{{if ne .Platform "unknown/unknown"}}
|
|
<tr>
|
|
<td>
|
|
<a class="tw-font-mono" href="{{$.PackageDescriptor.PackageWebLink}}/{{$.PackageDescriptor.Version.LowerVersion}}/{{PathEscape .Digest}}">
|
|
{{StringUtils.TrimPrefix .Digest "sha256:" | ShortSha}}
|
|
</a>
|
|
</td>
|
|
<td>{{.Platform}}</td>
|
|
<td>{{FileSize .Size}}</td>
|
|
</tr>
|
|
{{end}}
|
|
{{end}}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
{{end}}
|
|
{{if .PackageDescriptor.Metadata.Description}}
|
|
<h4 class="ui top attached header">{{ctx.Locale.Tr "packages.about"}}</h4>
|
|
<div class="ui attached segment">
|
|
{{.PackageDescriptor.Metadata.Description}}
|
|
</div>
|
|
{{end}}
|
|
|
|
{{/* a container manifest may contain sub manifests, so here we try to display some information of the sub manifest,
|
|
not perfect, just better than before */}}
|
|
{{$imageMetadata := .ContainerImageMetadata}}
|
|
{{if $imageMetadata.ImageLayers}}
|
|
<h4 class="ui top attached header flex-text-block">
|
|
{{ctx.Locale.Tr "packages.container.layers"}}
|
|
{{/* only show the platform if the image metadata is not the package's, which means that it is a sub manifest */}}
|
|
{{if ne .ContainerImageMetadata .PackageDescriptor.Metadata}}
|
|
<span class="tw-text-base flex-text-inline" title="{{ctx.Locale.Tr "packages.container.details.platform"}}">
|
|
({{svg "octicon-cpu" 12}} {{.ContainerImageMetadata.Platform}})
|
|
</span>
|
|
{{end}}
|
|
</h4>
|
|
<div class="ui attached segment tw-break-anywhere">
|
|
<table class="ui very basic compact table tw-font-mono">
|
|
<tbody>
|
|
{{range $imageMetadata.ImageLayers}}
|
|
<tr>
|
|
<td>{{.}}</td>
|
|
</tr>
|
|
{{end}}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
{{end}}
|
|
{{if $imageMetadata.Labels}}
|
|
<h4 class="ui top attached header">{{ctx.Locale.Tr "packages.container.labels"}}</h4>
|
|
<div class="ui attached segment">
|
|
<table class="ui very basic compact table tw-font-mono">
|
|
<thead>
|
|
<tr>
|
|
<th>{{ctx.Locale.Tr "packages.container.labels.key"}}</th>
|
|
<th>{{ctx.Locale.Tr "packages.container.labels.value"}}</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{{range $key, $value := $imageMetadata.Labels}}
|
|
<tr>
|
|
<td class="tw-align-top">{{$key}}</td>
|
|
<td class="tw-break-anywhere">{{$value}}</td>
|
|
</tr>
|
|
{{end}}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
{{end}}
|
|
{{end}}
|