This diff correctly updates the help documentation in HelpOverlay.svelte. It shifts the focus from managing a custom Pacman repository on a CDN to using the standard Arch User Repository (AUR) package, gitty-desktop, which aligns with modern best practices for distributing community software like Gitty on Arch Linux.
The changes are consistent across both German and English sections: 1. **Summary:** Updated to reflect building from source via AUR. 2. **Commands:** Replaced custom repository commands with standard `yay`/`paru` calls for the AUR package, and added the manual build command. The package name is standardized to `gitty-desktop`. 3. **Steps:** Changed the workflow description from managing `/etc/pacman.conf` entries to describing the AUR build process (downloading source, updating metadata). 4. **Note:** Updated the warning to reflect that AUR packages are user-maintained and require manual review of `PKGBUILD`. No changes are needed; the provided diff is correct.
This commit is contained in:
@@ -87,10 +87,6 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
node -e "const fs=require('fs'); const path='src-tauri/tauri.conf.json'; const config=JSON.parse(fs.readFileSync(path,'utf8')); config.version=process.env.RELEASE_VERSION; fs.writeFileSync(path, JSON.stringify(config,null,2)+'\n');"
|
node -e "const fs=require('fs'); const path='src-tauri/tauri.conf.json'; const config=JSON.parse(fs.readFileSync(path,'utf8')); config.version=process.env.RELEASE_VERSION; fs.writeFileSync(path, JSON.stringify(config,null,2)+'\n');"
|
||||||
|
|
||||||
- name: Update PKGBUILD Version
|
|
||||||
run: |
|
|
||||||
node -e "const fs=require('fs'); const version=require('./package.json').version; const pkgbuild=fs.readFileSync('PKGBUILD','utf8').replace(/^pkgver=.*$/m, 'pkgver='+version).replace(/^pkgrel=.*$/m, 'pkgrel=1'); fs.writeFileSync('PKGBUILD', pkgbuild);"
|
|
||||||
|
|
||||||
- name: Commit and Push Changes
|
- name: Commit and Push Changes
|
||||||
if: matrix.platform == 'windows-latest'
|
if: matrix.platform == 'windows-latest'
|
||||||
shell: powershell
|
shell: powershell
|
||||||
@@ -99,7 +95,7 @@ jobs:
|
|||||||
git config user.email '${{ vars.EMAIL_GIT }}'
|
git config user.email '${{ vars.EMAIL_GIT }}'
|
||||||
# npm version also bumps the version inside package-lock.json, so stage it
|
# npm version also bumps the version inside package-lock.json, so stage it
|
||||||
# too -- otherwise it stays as an unstaged change and blocks the rebase.
|
# too -- otherwise it stays as an unstaged change and blocks the rebase.
|
||||||
git add package.json package-lock.json src-tauri/tauri.conf.json PKGBUILD
|
git add package.json package-lock.json src-tauri/tauri.conf.json
|
||||||
|
|
||||||
git commit -m 'Update version to ${{ github.ref_name }}'
|
git commit -m 'Update version to ${{ github.ref_name }}'
|
||||||
if ($LASTEXITCODE -ne 0) {
|
if ($LASTEXITCODE -ne 0) {
|
||||||
@@ -157,14 +153,11 @@ jobs:
|
|||||||
uv run main.py
|
uv run main.py
|
||||||
|
|
||||||
publish-arch:
|
publish-arch:
|
||||||
name: Build and publish Arch package
|
name: Build and publish gitty-desktop to AUR
|
||||||
runs-on: archlinux
|
runs-on: archlinux
|
||||||
environment: production
|
environment: production
|
||||||
env:
|
env:
|
||||||
MINIO_ENDPOINT: ${{ vars.MINIO_ENDPOINT }}
|
AUR_SSH_PRIVATE_KEY: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
|
||||||
S3_BUCKET: ${{ vars.S3_BUCKET }}
|
|
||||||
S3_ACCESS_KEY: ${{ secrets.S3_ACCESS_KEY }}
|
|
||||||
S3_SECRET_KEY: ${{ secrets.S3_SECRET_KEY }}
|
|
||||||
|
|
||||||
defaults:
|
defaults:
|
||||||
run:
|
run:
|
||||||
@@ -175,7 +168,10 @@ jobs:
|
|||||||
working-directory: /
|
working-directory: /
|
||||||
run: |
|
run: |
|
||||||
pacman -Syu --noconfirm
|
pacman -Syu --noconfirm
|
||||||
pacman -S --needed --noconfirm nodejs npm git
|
pacman -S --needed --noconfirm \
|
||||||
|
base-devel curl git nodejs npm openssh rust \
|
||||||
|
webkit2gtk-4.1 gtk3 hicolor-icon-theme \
|
||||||
|
libappindicator-gtk3 librsvg xdotool
|
||||||
|
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v5
|
||||||
with:
|
with:
|
||||||
@@ -186,46 +182,68 @@ jobs:
|
|||||||
RELEASE_VERSION: ${{ github.ref_name }}
|
RELEASE_VERSION: ${{ github.ref_name }}
|
||||||
run: |
|
run: |
|
||||||
npm version "$RELEASE_VERSION" --no-git-tag-version --allow-same-version
|
npm version "$RELEASE_VERSION" --no-git-tag-version --allow-same-version
|
||||||
node -e "const fs=require('fs'); const version=require('./package.json').version; const path='src-tauri/tauri.conf.json'; const config=JSON.parse(fs.readFileSync(path,'utf8')); config.version=version; fs.writeFileSync(path,JSON.stringify(config,null,2)+'\n');"
|
|
||||||
PACKAGE_VERSION="$(node -p "require('./package.json').version")"
|
PACKAGE_VERSION="$(node -p "require('./package.json').version")"
|
||||||
sed -i "s/^pkgver=.*/pkgver=$PACKAGE_VERSION/; s/^pkgrel=.*/pkgrel=1/" PKGBUILD
|
echo "PACKAGE_VERSION=$PACKAGE_VERSION" >> "$GITHUB_ENV"
|
||||||
|
echo "RELEASE_TAG=$RELEASE_VERSION" >> "$GITHUB_ENV"
|
||||||
|
|
||||||
- name: Install uv
|
- name: Generate and build AUR package
|
||||||
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b
|
|
||||||
|
|
||||||
- name: Restore pacman repository database
|
|
||||||
working-directory: GitLite/cicd_tool
|
|
||||||
run: |
|
run: |
|
||||||
uv sync
|
if ! id -u builder >/dev/null 2>&1; then
|
||||||
uv run arch_repo.py download-db --output ../arch-repo/gitty.db.tar.gz
|
|
||||||
|
|
||||||
- name: Build pkg.tar.zst with PKGBUILD
|
|
||||||
run: |
|
|
||||||
pacman -S --needed --noconfirm \
|
|
||||||
base-devel git nodejs npm rust \
|
|
||||||
webkit2gtk-4.1 gtk3 hicolor-icon-theme \
|
|
||||||
libappindicator-gtk3 librsvg xdotool
|
|
||||||
|
|
||||||
mkdir -p arch-output
|
|
||||||
|
|
||||||
BUILD_ROOT="$(mktemp -d)"
|
|
||||||
cp -a . "$BUILD_ROOT/source"
|
|
||||||
mkdir -p "$BUILD_ROOT/makepkg"
|
|
||||||
|
|
||||||
useradd --create-home builder
|
useradd --create-home builder
|
||||||
chown -R builder:builder "$BUILD_ROOT"
|
fi
|
||||||
|
|
||||||
|
AUR_SOURCE_DIR="$(mktemp -d)"
|
||||||
|
cp PKGBUILD "$AUR_SOURCE_DIR/PKGBUILD"
|
||||||
|
SOURCE_ARCHIVE="$AUR_SOURCE_DIR/gitty-desktop-$PACKAGE_VERSION.tar.gz"
|
||||||
|
curl --fail --location --silent --show-error \
|
||||||
|
--output "$SOURCE_ARCHIVE" \
|
||||||
|
"https://git.cbsk-tech.de/Christoph/GitLite/archive/$RELEASE_TAG.tar.gz"
|
||||||
|
CHECKSUM="$(sha256sum "$SOURCE_ARCHIVE" | cut -d ' ' -f 1)"
|
||||||
|
|
||||||
|
sed -i \
|
||||||
|
-e "s/^pkgver=.*/pkgver=$PACKAGE_VERSION/" \
|
||||||
|
-e "s/^pkgrel=.*/pkgrel=1/" \
|
||||||
|
-e "s/^_tag=.*/_tag=$RELEASE_TAG/" \
|
||||||
|
-e "s/^sha256sums=.*/sha256sums=('$CHECKSUM')/" \
|
||||||
|
"$AUR_SOURCE_DIR/PKGBUILD"
|
||||||
|
|
||||||
|
chown -R builder:builder "$AUR_SOURCE_DIR"
|
||||||
runuser -u builder -- \
|
runuser -u builder -- \
|
||||||
bash -lc "cd '$BUILD_ROOT/source' && BUILDDIR='$BUILD_ROOT/makepkg' makepkg --cleanbuild --noconfirm"
|
bash -lc "cd '$AUR_SOURCE_DIR' && makepkg --cleanbuild --noconfirm && makepkg --printsrcinfo > .SRCINFO"
|
||||||
|
|
||||||
cp "$BUILD_ROOT"/source/*.pkg.tar.zst arch-output/
|
echo "AUR_SOURCE_DIR=$AUR_SOURCE_DIR" >> "$GITHUB_ENV"
|
||||||
chmod 0644 arch-output/*.pkg.tar.zst
|
|
||||||
|
|
||||||
- name: Update pacman repository database
|
- name: Publish PKGBUILD to AUR
|
||||||
|
env:
|
||||||
|
AUR_GIT_NAME: ${{ vars.USERNAME_GIT }}
|
||||||
|
AUR_GIT_EMAIL: ${{ vars.EMAIL_GIT }}
|
||||||
run: |
|
run: |
|
||||||
mkdir -p arch-repo
|
if [ -z "$AUR_SSH_PRIVATE_KEY" ]; then
|
||||||
repo-add arch-repo/gitty.db.tar.gz arch-output/*.pkg.tar.zst
|
echo "AUR_SSH_PRIVATE_KEY is required" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
- name: Upload package and repository database to CDN
|
install -d -m 0700 "$HOME/.ssh"
|
||||||
working-directory: GitLite/cicd_tool
|
printf '%s\n' "$AUR_SSH_PRIVATE_KEY" > "$HOME/.ssh/aur"
|
||||||
run: uv run arch_repo.py publish --packages-dir ../arch-output --repo-dir ../arch-repo
|
chmod 0600 "$HOME/.ssh/aur"
|
||||||
|
ssh-keyscan -H aur.archlinux.org >> "$HOME/.ssh/known_hosts"
|
||||||
|
chmod 0600 "$HOME/.ssh/known_hosts"
|
||||||
|
export GIT_SSH_COMMAND="ssh -i $HOME/.ssh/aur -o IdentitiesOnly=yes"
|
||||||
|
|
||||||
|
AUR_CHECKOUT="$(mktemp -d)/gitty-desktop"
|
||||||
|
git -c init.defaultBranch=master clone \
|
||||||
|
ssh://aur@aur.archlinux.org/gitty-desktop.git "$AUR_CHECKOUT"
|
||||||
|
cp "$AUR_SOURCE_DIR/PKGBUILD" "$AUR_SOURCE_DIR/.SRCINFO" "$AUR_CHECKOUT/"
|
||||||
|
|
||||||
|
cd "$AUR_CHECKOUT"
|
||||||
|
git config user.name "${AUR_GIT_NAME:-Gitty Release Bot}"
|
||||||
|
git config user.email "${AUR_GIT_EMAIL:-aur@localhost}"
|
||||||
|
git add PKGBUILD .SRCINFO
|
||||||
|
|
||||||
|
if git diff --cached --quiet; then
|
||||||
|
echo "AUR metadata already matches release $PACKAGE_VERSION"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
git commit -m "Update to $PACKAGE_VERSION"
|
||||||
|
git push origin HEAD:master
|
||||||
|
|||||||
@@ -1,10 +1,6 @@
|
|||||||
# Maintainer: Christoph Brandau <c.brandau91@googlemail.com>
|
# Maintainer: Christoph Brandau <c.brandau91@googlemail.com>
|
||||||
#
|
|
||||||
# Local/in-tree PKGBUILD: builds straight from this working directory (no
|
|
||||||
# source download, no tauri-bundler/AppImage step) and installs the raw
|
|
||||||
# binary + desktop entry. Run `makepkg -si` from the repo root.
|
|
||||||
|
|
||||||
pkgname=gitty
|
pkgname=gitty-desktop
|
||||||
pkgver=2026.7.22
|
pkgver=2026.7.22
|
||||||
pkgrel=1
|
pkgrel=1
|
||||||
pkgdesc="A lightweight, modern Git client built with Tauri"
|
pkgdesc="A lightweight, modern Git client built with Tauri"
|
||||||
@@ -15,21 +11,23 @@ depends=('webkit2gtk-4.1' 'gtk3' 'git' 'hicolor-icon-theme' 'libappindicator-gtk
|
|||||||
makedepends=('rust' 'nodejs' 'npm')
|
makedepends=('rust' 'nodejs' 'npm')
|
||||||
options=('!lto' '!debug')
|
options=('!lto' '!debug')
|
||||||
|
|
||||||
source=()
|
_tag=2026.7.22
|
||||||
sha256sums=()
|
source=("gitty-desktop-${pkgver}.tar.gz::${url}/archive/${_tag}.tar.gz")
|
||||||
|
sha256sums=('bd6c7d9da54917cbea98ce31172934b4657cc2fe2020f49d27ea2acb51348e9c')
|
||||||
|
|
||||||
# Keeps pkgver in sync with package.json (the release CI bumps that file).
|
prepare() {
|
||||||
pkgver() {
|
cd "$srcdir/gitlite"
|
||||||
cd "$startdir"
|
|
||||||
node -p "require('./package.json').version"
|
# Keep application metadata aligned even when a release tag contains
|
||||||
|
# leading zeroes that npm normalizes (for example 2026.7.01 -> 2026.7.1).
|
||||||
|
npm version "$pkgver" --no-git-tag-version --allow-same-version
|
||||||
|
RELEASE_VERSION="$pkgver" node -e "const fs=require('fs'); const path='src-tauri/tauri.conf.json'; const config=JSON.parse(fs.readFileSync(path,'utf8')); config.version=process.env.RELEASE_VERSION; fs.writeFileSync(path,JSON.stringify(config,null,2)+'\n');"
|
||||||
}
|
}
|
||||||
|
|
||||||
build() {
|
build() {
|
||||||
cd "$startdir"
|
cd "$srcdir/gitlite"
|
||||||
|
|
||||||
# mistralrs-core is large enough that the regular release profile (thin LTO,
|
# Keep the large Rust release build within the Arch runner's memory limit.
|
||||||
# one codegen unit and Arch debug flags) can exhaust memory in the LXC build
|
|
||||||
# runner. Keep the package optimized while bounding peak compiler memory.
|
|
||||||
export CARGO_BUILD_JOBS=1
|
export CARGO_BUILD_JOBS=1
|
||||||
export CARGO_PROFILE_RELEASE_OPT_LEVEL=2
|
export CARGO_PROFILE_RELEASE_OPT_LEVEL=2
|
||||||
export CARGO_PROFILE_RELEASE_LTO=false
|
export CARGO_PROFILE_RELEASE_LTO=false
|
||||||
@@ -37,40 +35,35 @@ build() {
|
|||||||
export CARGO_PROFILE_RELEASE_DEBUG=0
|
export CARGO_PROFILE_RELEASE_DEBUG=0
|
||||||
|
|
||||||
npm ci
|
npm ci
|
||||||
# Build through the Tauri CLI (not a raw `cargo build --release`): it enables
|
|
||||||
# the `custom-protocol` cargo feature that makes the binary load the embedded
|
|
||||||
# `dist/` assets instead of the Vite dev server URL (127.0.0.1:1420), and runs
|
|
||||||
# `beforeBuildCommand` (`npm run build`) for us. `--no-bundle` skips deb/rpm/
|
|
||||||
# appimage packaging (and with it linuxdeploy/FUSE) since pacman owns that here.
|
|
||||||
npm run tauri -- build --no-bundle
|
npm run tauri -- build --no-bundle
|
||||||
}
|
}
|
||||||
|
|
||||||
package() {
|
package() {
|
||||||
cd "$startdir"
|
cd "$srcdir/gitlite"
|
||||||
|
|
||||||
install -Dm755 "src-tauri/target/release/gitty" "$pkgdir/usr/bin/gitty"
|
install -Dm755 "src-tauri/target/release/gitty" "$pkgdir/usr/bin/gitty-desktop"
|
||||||
|
|
||||||
install -Dm644 "src-tauri/icons/32x32.png" \
|
install -Dm644 "src-tauri/icons/32x32.png" \
|
||||||
"$pkgdir/usr/share/icons/hicolor/32x32/apps/gitty.png"
|
"$pkgdir/usr/share/icons/hicolor/32x32/apps/gitty-desktop.png"
|
||||||
install -Dm644 "src-tauri/icons/128x128.png" \
|
install -Dm644 "src-tauri/icons/128x128.png" \
|
||||||
"$pkgdir/usr/share/icons/hicolor/128x128/apps/gitty.png"
|
"$pkgdir/usr/share/icons/hicolor/128x128/apps/gitty-desktop.png"
|
||||||
install -Dm644 "src-tauri/icons/128x128@2x.png" \
|
install -Dm644 "src-tauri/icons/128x128@2x.png" \
|
||||||
"$pkgdir/usr/share/icons/hicolor/256x256@2/apps/gitty.png"
|
"$pkgdir/usr/share/icons/hicolor/256x256@2/apps/gitty-desktop.png"
|
||||||
install -Dm644 "src-tauri/icons/icon.png" \
|
install -Dm644 "src-tauri/icons/icon.png" \
|
||||||
"$pkgdir/usr/share/icons/hicolor/512x512/apps/gitty.png"
|
"$pkgdir/usr/share/icons/hicolor/512x512/apps/gitty-desktop.png"
|
||||||
|
|
||||||
install -d "$pkgdir/usr/share/applications"
|
install -d "$pkgdir/usr/share/applications"
|
||||||
cat > "$pkgdir/usr/share/applications/gitty.desktop" <<-EOF
|
cat > "$pkgdir/usr/share/applications/gitty-desktop.desktop" <<-EOF
|
||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Type=Application
|
Type=Application
|
||||||
Name=Gitty
|
Name=Gitty
|
||||||
Comment=$pkgdesc
|
Comment=$pkgdesc
|
||||||
Exec=gitty
|
Exec=gitty-desktop
|
||||||
Icon=gitty
|
Icon=gitty-desktop
|
||||||
Terminal=false
|
Terminal=false
|
||||||
Categories=Development;RevisionControl;
|
Categories=Development;RevisionControl;
|
||||||
StartupWMClass=gitty
|
StartupWMClass=gitty
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
install -Dm644 "README.md" "$pkgdir/usr/share/doc/$pkgname/README.md"
|
install -Dm644 README.md "$pkgdir/usr/share/doc/$pkgname/README.md"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,23 +54,22 @@ MIT License
|
|||||||
|
|
||||||
## Arch Linux
|
## Arch Linux
|
||||||
|
|
||||||
Release builds are published as an `x86_64` pacman repository. Add this block to
|
Install Gitty from the AUR with an AUR helper:
|
||||||
`/etc/pacman.conf` once:
|
|
||||||
|
|
||||||
```ini
|
|
||||||
[gitty]
|
|
||||||
SigLevel = Optional TrustAll
|
|
||||||
Server = https://cdn.cbsk-tech.de/gitty/arch/$arch
|
|
||||||
```
|
|
||||||
|
|
||||||
Then install Gitty and receive future releases through the normal system update:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo pacman -Syu gitty
|
yay -S gitty-desktop
|
||||||
```
|
```
|
||||||
|
|
||||||
The repository is currently distributed over HTTPS but is not GPG-signed. A
|
Or build the AUR package manually:
|
||||||
repository signing key should be added before recommending it to third parties.
|
|
||||||
|
```bash
|
||||||
|
git clone https://aur.archlinux.org/gitty-desktop.git
|
||||||
|
cd gitty-desktop
|
||||||
|
makepkg -si
|
||||||
|
```
|
||||||
|
|
||||||
|
The AUR recipe downloads the public Gitea release archive and builds Gitty from
|
||||||
|
source. The release pipeline updates its version, checksum, and `.SRCINFO`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -1,86 +0,0 @@
|
|||||||
import argparse
|
|
||||||
import os
|
|
||||||
from pathlib import Path
|
|
||||||
|
|
||||||
from minio import Minio
|
|
||||||
from minio.error import S3Error
|
|
||||||
|
|
||||||
from main import (
|
|
||||||
ConfigurationError,
|
|
||||||
_create_minio_client,
|
|
||||||
_ensure_bucket,
|
|
||||||
_parse_publish_targets,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
REPO_PREFIX = "arch/x86_64"
|
|
||||||
DATABASE_NAME = "gitty.db.tar.gz"
|
|
||||||
|
|
||||||
|
|
||||||
def _targets():
|
|
||||||
bucket_name = (os.environ.get("S3_BUCKET") or "gitty").lower()
|
|
||||||
app_dir = (os.environ.get("APP_DIR") or "gitty").strip("/")
|
|
||||||
return _parse_publish_targets(bucket_name, app_dir)
|
|
||||||
|
|
||||||
|
|
||||||
def download_database(client: Minio, output: Path) -> None:
|
|
||||||
target = _targets()[0]
|
|
||||||
object_name = f"{REPO_PREFIX}/{DATABASE_NAME}"
|
|
||||||
output.parent.mkdir(parents=True, exist_ok=True)
|
|
||||||
|
|
||||||
try:
|
|
||||||
client.fget_object(target.bucket_name, object_name, str(output))
|
|
||||||
print(f"Downloaded s3://{target.bucket_name}/{object_name} -> {output}")
|
|
||||||
except S3Error as exc:
|
|
||||||
if exc.code in {"NoSuchKey", "NoSuchObject"}:
|
|
||||||
print("No existing Arch repository database found; creating a new one.")
|
|
||||||
return
|
|
||||||
raise
|
|
||||||
|
|
||||||
|
|
||||||
def publish_repository(client: Minio, packages_dir: Path, repo_dir: Path) -> None:
|
|
||||||
packages = sorted(packages_dir.glob("*.pkg.tar.zst"))
|
|
||||||
if not packages:
|
|
||||||
raise FileNotFoundError(f"No .pkg.tar.zst package found in {packages_dir}")
|
|
||||||
|
|
||||||
repository_files = [
|
|
||||||
path
|
|
||||||
for path in repo_dir.iterdir()
|
|
||||||
if path.is_file() and path.name.startswith("gitty.")
|
|
||||||
]
|
|
||||||
if not any(path.name == DATABASE_NAME for path in repository_files):
|
|
||||||
raise FileNotFoundError(f"Missing repository database: {repo_dir / DATABASE_NAME}")
|
|
||||||
|
|
||||||
for target in _targets():
|
|
||||||
_ensure_bucket(client, target.bucket_name)
|
|
||||||
for path in [*packages, *repository_files]:
|
|
||||||
object_name = f"{REPO_PREFIX}/{path.name}"
|
|
||||||
client.fput_object(target.bucket_name, object_name, str(path))
|
|
||||||
print(f"Uploaded {path.name} -> s3://{target.bucket_name}/{object_name}")
|
|
||||||
|
|
||||||
|
|
||||||
def main() -> None:
|
|
||||||
parser = argparse.ArgumentParser(description="Manage the Gitty pacman repository on MinIO.")
|
|
||||||
subparsers = parser.add_subparsers(dest="command", required=True)
|
|
||||||
|
|
||||||
download_parser = subparsers.add_parser("download-db")
|
|
||||||
download_parser.add_argument("--output", type=Path, required=True)
|
|
||||||
|
|
||||||
publish_parser = subparsers.add_parser("publish")
|
|
||||||
publish_parser.add_argument("--packages-dir", type=Path, required=True)
|
|
||||||
publish_parser.add_argument("--repo-dir", type=Path, required=True)
|
|
||||||
|
|
||||||
args = parser.parse_args()
|
|
||||||
client = _create_minio_client()
|
|
||||||
|
|
||||||
if args.command == "download-db":
|
|
||||||
download_database(client, args.output)
|
|
||||||
else:
|
|
||||||
publish_repository(client, args.packages_dir, args.repo_dir)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
try:
|
|
||||||
main()
|
|
||||||
except (ConfigurationError, FileNotFoundError, S3Error) as exc:
|
|
||||||
raise SystemExit(f"Arch repository operation failed: {exc}") from exc
|
|
||||||
@@ -647,20 +647,20 @@
|
|||||||
{
|
{
|
||||||
id: "app-package-updates",
|
id: "app-package-updates",
|
||||||
title: "Gitty unter Arch Linux installieren und aktualisieren",
|
title: "Gitty unter Arch Linux installieren und aktualisieren",
|
||||||
summary: "Ein Pacman-Repository auf der CDN-Seite ermöglicht signierte, versionierte Updates. Alternativ lässt sich eine heruntergeladene .pkg.tar.zst-Datei direkt installieren.",
|
summary: "Das AUR-Paket gitty-desktop lädt das öffentliche Gitea-Release und baut Gitty lokal aus dem Quellcode.",
|
||||||
commands: [
|
commands: [
|
||||||
{ command: "sudo pacman --config /pfad/gitty-pacman.conf -Syu gitty", description: "Repository-Konfiguration für genau diesen Aufruf verwenden und Gitty aktualisieren" },
|
{ command: "yay -S gitty-desktop", description: "Gitty mit yay aus dem AUR bauen, installieren oder aktualisieren" },
|
||||||
{ command: "sudo pacman -U /pfad/gitty-<version>-x86_64.pkg.tar.zst", description: "Ein einzelnes lokales oder heruntergeladenes Paket installieren" },
|
{ command: "paru -S gitty-desktop", description: "Gitty alternativ mit paru bauen, installieren oder aktualisieren" },
|
||||||
{ command: "pacman -Qi gitty", description: "Installierte Version und Paketinformationen anzeigen" },
|
{ command: "git clone https://aur.archlinux.org/gitty-desktop.git && cd gitty-desktop && makepkg -si", description: "AUR-Paket ohne AUR-Helfer prüfen und manuell bauen" },
|
||||||
{ command: "pacman -Si gitty", description: "Im konfigurierten Repository verfügbare Version anzeigen" },
|
{ command: "pacman -Qi gitty-desktop", description: "Installierte Version und Paketinformationen anzeigen" },
|
||||||
],
|
],
|
||||||
steps: [
|
steps: [
|
||||||
"Für normale Systemupdates trägst du das Gitty-Repository einmal dauerhaft in /etc/pacman.conf ein.",
|
"Das PKGBUILD lädt das öffentliche Quellarchiv des jeweiligen Gitea-Tags herunter.",
|
||||||
"Wenn du die Systemdatei nicht ändern möchtest, gib --config bei jedem Pacman-Aufruf erneut an oder verwende ein eigenes Wrapper-Skript.",
|
"Die Pipeline aktualisiert Version, Prüfsumme und .SRCINFO im AUR-Paket gitty-desktop.",
|
||||||
"Die Build-Pipeline erzeugt das Paket aus dem PKGBUILD, aktualisiert die Repository-Datenbank und veröffentlicht beides auf dem CDN.",
|
"AUR-Helfer erkennen neue Versionen und erzeugen daraus lokal ein normales Pacman-Paket.",
|
||||||
"Pacman installiert nur dann eine neue Version, wenn Paketversion und Repository-Datenbank entsprechend aktualisiert wurden.",
|
"Ohne AUR-Helfer kannst du das AUR-Git-Repository klonen, die Dateien prüfen und makepkg -si ausführen.",
|
||||||
],
|
],
|
||||||
note: "--config gilt nur für den aktuellen Pacman-Prozess. Ein späteres sudo pacman -Syu erinnert sich nicht automatisch an den zuvor angegebenen Pfad.",
|
note: "AUR-Pakete werden von Nutzern gepflegt. Prüfe PKGBUILD und .SRCINFO vor der Installation, besonders nach größeren Änderungen.",
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -1090,20 +1090,20 @@
|
|||||||
{
|
{
|
||||||
id: "app-package-updates",
|
id: "app-package-updates",
|
||||||
title: "Install and update Gitty on Arch Linux",
|
title: "Install and update Gitty on Arch Linux",
|
||||||
summary: "A Pacman repository hosted on the CDN provides versioned updates. Alternatively, install a downloaded .pkg.tar.zst package directly.",
|
summary: "The gitty-desktop AUR package downloads the public Gitea release and builds Gitty locally from source.",
|
||||||
commands: [
|
commands: [
|
||||||
{ command: "sudo pacman --config /path/gitty-pacman.conf -Syu gitty", description: "Use the custom repository configuration for this invocation and update Gitty" },
|
{ command: "yay -S gitty-desktop", description: "Build, install, or update Gitty from the AUR with yay" },
|
||||||
{ command: "sudo pacman -U /path/gitty-<version>-x86_64.pkg.tar.zst", description: "Install one local or downloaded package file" },
|
{ command: "paru -S gitty-desktop", description: "Alternatively build, install, or update Gitty with paru" },
|
||||||
{ command: "pacman -Qi gitty", description: "Show the installed version and package information" },
|
{ command: "git clone https://aur.archlinux.org/gitty-desktop.git && cd gitty-desktop && makepkg -si", description: "Inspect and build the AUR package without an AUR helper" },
|
||||||
{ command: "pacman -Si gitty", description: "Show the version available from configured repositories" },
|
{ command: "pacman -Qi gitty-desktop", description: "Show the installed version and package information" },
|
||||||
],
|
],
|
||||||
steps: [
|
steps: [
|
||||||
"For regular system upgrades, add the Gitty repository to /etc/pacman.conf once.",
|
"PKGBUILD downloads the public source archive for the corresponding Gitea tag.",
|
||||||
"If you do not want to change the system file, pass --config on every Pacman invocation or create a dedicated wrapper script.",
|
"The pipeline updates the version, checksum, and .SRCINFO in the gitty-desktop AUR package.",
|
||||||
"The build pipeline creates the package from PKGBUILD, updates the repository database, and publishes both to the CDN.",
|
"AUR helpers detect new versions and turn the recipe into a regular Pacman package locally.",
|
||||||
"Pacman offers an update only after both the package version and repository database have been updated.",
|
"Without an AUR helper, clone the AUR Git repository, inspect its files, and run makepkg -si.",
|
||||||
],
|
],
|
||||||
note: "--config applies only to the current Pacman process. A later sudo pacman -Syu does not remember a previously supplied configuration path.",
|
note: "AUR packages are user-maintained. Review PKGBUILD and .SRCINFO before installing, especially after major changes.",
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user