mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 03:25:11 +01:00 
			
		
		
		
	1. Use `OpenXxx` instead of `GetXxx` because the returned readers should be correctly closed, and clarify the behaviors of the functions: they increase the download counter 2. Use `packages-content` styles instead of `issue-content`
		
			
				
	
	
		
			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.gitea.com/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-sm 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}}
 |