mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-08-01 17:38:33 +00:00
Arch packages implementation (#4785)
This PR is from https://github.com/go-gitea/gitea/pull/31037 This PR was originally created by @d1nch8g , and the original source code comes from https://ion.lc/core/gitea. This PR adds a package registry for [Arch Linux](https://archlinux.org/) packages with support for package files, [signatures](https://wiki.archlinux.org/title/Pacman/Package_signing), and automatic [pacman-database](https://archlinux.org/pacman/repo-add.8.html) management. Features: 1. Push any ` tar.zst ` package and Gitea sign it. 2. Delete endpoint for specific package version and all related files 3. Supports trust levels with `SigLevel = Required`. 4. Package UI with instructions to connect to the new pacman database and visualised package metadata  You can follow [this tutorial](https://wiki.archlinux.org/title/Creating_packages) to build a *.pkg.tar.zst package for testing docs pr: https://codeberg.org/forgejo/docs/pulls/791 Co-authored-by: d1nch8g@ion.lc Co-authored-by: @KN4CK3R Co-authored-by: @mahlzahn Co-authored-by: @silverwind Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/4785 Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org> Co-authored-by: Exploding Dragon <explodingfkl@gmail.com> Co-committed-by: Exploding Dragon <explodingfkl@gmail.com>
This commit is contained in:
parent
22d3659803
commit
f17194ca91
18 changed files with 1896 additions and 0 deletions
143
templates/package/content/arch.tmpl
Normal file
143
templates/package/content/arch.tmpl
Normal file
|
@ -0,0 +1,143 @@
|
|||
{{if eq .PackageDescriptor.Package.Type "arch"}}
|
||||
<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.arch.pacman.helper.gpg"}}</label>
|
||||
<div class="markup">
|
||||
<pre class="code-block"><code>wget -O sign.gpg <origin-url data-url="{{AppSubUrl}}/api/packages/{{.PackageDescriptor.Owner.Name}}/arch/repository.key"></origin-url>
|
||||
pacman-key --add sign.gpg
|
||||
pacman-key --lsign-key '{{$.SignMail}}'</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label>{{svg "octicon-gear"}} {{ctx.Locale.Tr "packages.arch.pacman.conf"}}</label>
|
||||
<div class="markup">
|
||||
<pre
|
||||
class="code-block"><code>
|
||||
{{- if gt (len $.Groups) 1 -}}
|
||||
# {{ctx.Locale.Tr "packages.arch.pacman.repo.multi" $.PackageDescriptor.Package.LowerName}}
|
||||
|
||||
{{end -}}
|
||||
{{- $GroupSize := (len .Groups) -}}
|
||||
{{- range $i,$v := .Groups -}}
|
||||
{{- if gt $i 0}}
|
||||
{{end -}}{{- if gt $GroupSize 1 -}}
|
||||
# {{ctx.Locale.Tr "packages.arch.pacman.repo.multi.item" .}}
|
||||
{{end -}}
|
||||
[{{$.PackageDescriptor.Owner.LowerName}}.{{$.RegistryHost}}]
|
||||
SigLevel = Required
|
||||
Server = <origin-url data-url="{{AppSubUrl}}/api/packages/{{$.PackageDescriptor.Owner.Name}}/arch/{{.}}/$arch"></origin-url>
|
||||
{{end -}}
|
||||
</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label>{{svg "octicon-sync"}} {{ctx.Locale.Tr "packages.arch.pacman.sync"}}</label>
|
||||
<div class="markup">
|
||||
<pre class="code-block"><code>pacman -Sy {{.PackageDescriptor.Package.LowerName}}</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label>{{ctx.Locale.Tr "packages.registry.documentation" "Arch"
|
||||
"https://forgejo.org/docs/latest/user/packages/arch/"}}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h4 class="ui top attached header">{{ctx.Locale.Tr "packages.arch.version.properties"}}</h4>
|
||||
<div class="ui attached segment">
|
||||
<table class="ui very basic compact table">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="collapsing">
|
||||
<h5>{{ctx.Locale.Tr "packages.arch.version.description"}}</h5>
|
||||
</td>
|
||||
<td>{{.PackageDescriptor.Metadata.Description}}</td>
|
||||
</tr>
|
||||
|
||||
{{if .PackageDescriptor.Metadata.Groups}}
|
||||
<tr>
|
||||
<td class="collapsing">
|
||||
<h5>{{ctx.Locale.Tr "packages.arch.version.groups"}}</h5>
|
||||
</td>
|
||||
<td>{{StringUtils.Join $.PackageDescriptor.Metadata.Groups ", "}}</td>
|
||||
</tr>
|
||||
{{end}}
|
||||
|
||||
{{if .PackageDescriptor.Metadata.Provides}}
|
||||
<tr>
|
||||
<td class="collapsing">
|
||||
<h5>{{ctx.Locale.Tr "packages.arch.version.provides"}}</h5>
|
||||
</td>
|
||||
<td>{{StringUtils.Join $.PackageDescriptor.Metadata.Provides ", "}}</td>
|
||||
</tr>
|
||||
{{end}}
|
||||
|
||||
{{if .PackageDescriptor.Metadata.Depends}}
|
||||
<tr>
|
||||
<td class="collapsing">
|
||||
<h5>{{ctx.Locale.Tr "packages.arch.version.depends"}}</h5>
|
||||
</td>
|
||||
<td>{{StringUtils.Join $.PackageDescriptor.Metadata.Depends ", "}}</td>
|
||||
</tr>
|
||||
{{end}}
|
||||
|
||||
{{if .PackageDescriptor.Metadata.OptDepends}}
|
||||
<tr>
|
||||
<td class="collapsing">
|
||||
<h5>{{ctx.Locale.Tr "packages.arch.version.optdepends"}}</h5>
|
||||
</td>
|
||||
<td>{{StringUtils.Join $.PackageDescriptor.Metadata.OptDepends ", "}}</td>
|
||||
</tr>
|
||||
{{end}}
|
||||
|
||||
{{if .PackageDescriptor.Metadata.MakeDepends}}
|
||||
<tr>
|
||||
<td class="collapsing">
|
||||
<h5>{{ctx.Locale.Tr "packages.arch.version.makedepends"}}</h5>
|
||||
</td>
|
||||
<td>{{StringUtils.Join $.PackageDescriptor.Metadata.MakeDepends ", "}}</td>
|
||||
</tr>
|
||||
{{end}}
|
||||
|
||||
{{if .PackageDescriptor.Metadata.CheckDepends}}
|
||||
<tr>
|
||||
<td class="collapsing">
|
||||
<h5>{{ctx.Locale.Tr "packages.arch.version.checkdepends"}}</h5>
|
||||
</td>
|
||||
<td>{{StringUtils.Join $.PackageDescriptor.Metadata.CheckDepends ", "}}</td>
|
||||
</tr>
|
||||
{{end}}
|
||||
|
||||
{{if .PackageDescriptor.Metadata.Conflicts}}
|
||||
<tr>
|
||||
<td class="collapsing">
|
||||
<h5>{{ctx.Locale.Tr "packages.arch.version.conflicts"}}</h5>
|
||||
</td>
|
||||
<td>{{StringUtils.Join $.PackageDescriptor.Metadata.Conflicts ", "}}</td>
|
||||
</tr>
|
||||
{{end}}
|
||||
|
||||
{{if .PackageDescriptor.Metadata.Replaces}}
|
||||
<tr>
|
||||
<td class="collapsing">
|
||||
<h5>{{ctx.Locale.Tr "packages.arch.version.replaces"}}</h5>
|
||||
</td>
|
||||
<td>{{StringUtils.Join $.PackageDescriptor.Metadata.Replaces ", "}}</td>
|
||||
</tr>
|
||||
{{end}}
|
||||
|
||||
{{if .PackageDescriptor.Metadata.Backup}}
|
||||
<tr>
|
||||
<td class="collapsing">
|
||||
<h5>{{ctx.Locale.Tr "packages.arch.version.backup"}}</h5>
|
||||
</td>
|
||||
<td>{{StringUtils.Join $.PackageDescriptor.Metadata.Backup ", "}}</td>
|
||||
</tr>
|
||||
{{end}}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
{{end}}
|
4
templates/package/metadata/arch.tmpl
Normal file
4
templates/package/metadata/arch.tmpl
Normal file
|
@ -0,0 +1,4 @@
|
|||
{{if eq .PackageDescriptor.Package.Type "arch"}}
|
||||
{{range .PackageDescriptor.Metadata.License}}<div class="item" title="{{$.locale.Tr "packages.details.license"}}">{{svg "octicon-law" 16 "gt-mr-3"}} {{.}}</div>{{end}}
|
||||
{{if .PackageDescriptor.Metadata.ProjectURL}}<div class="item">{{svg "octicon-link-external" 16 "mr-3"}} <a href="{{.PackageDescriptor.Metadata.ProjectURL}}" target="_blank" rel="noopener noreferrer me">{{ctx.Locale.Tr "packages.details.project_site"}}</a></div>{{end}}
|
||||
{{end}}
|
|
@ -19,6 +19,7 @@
|
|||
<div class="issue-content">
|
||||
<div class="issue-content-left">
|
||||
{{template "package/content/alpine" .}}
|
||||
{{template "package/content/arch" .}}
|
||||
{{template "package/content/cargo" .}}
|
||||
{{template "package/content/chef" .}}
|
||||
{{template "package/content/composer" .}}
|
||||
|
@ -50,6 +51,7 @@
|
|||
<div class="item">{{svg "octicon-calendar" 16 "tw-mr-2"}} {{TimeSinceUnix .PackageDescriptor.Version.CreatedUnix ctx.Locale}}</div>
|
||||
<div class="item">{{svg "octicon-download" 16 "tw-mr-2"}} {{.PackageDescriptor.Version.DownloadCount}}</div>
|
||||
{{template "package/metadata/alpine" .}}
|
||||
{{template "package/metadata/arch" .}}
|
||||
{{template "package/metadata/cargo" .}}
|
||||
{{template "package/metadata/chef" .}}
|
||||
{{template "package/metadata/composer" .}}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue