Diese Anleitung erklärt, wie du das aniworld-cli Scoop Bucket einrichtest und verwaltest.
Ein Scoop Bucket ist ein Git-Repository, das Manifest-Dateien (JSON) für Scoop-Pakete enthält. Nutzer können dein Bucket hinzufügen und dann deine Software installieren.
Das Repository sollte diese Struktur haben:
aniworld-cli/
├── bucket/
│ └── aniworld-cli.json # Scoop Manifest
├── README.md
└── SCOOP_BUCKET.md (diese Datei)
Das bucket/ Verzeichnis ist bereits in diesem Repository vorhanden.
Die Manifest-Datei bucket/aniworld-cli.json definiert:
- version: Aktuelle Version
- url: Download-URL (GitHub Archive)
- hash: SHA256 Checksum
- bin: Ausführbare Datei
- depends: Abhängigkeiten
- suggest: Empfohlene Pakete
Bei jedem Update musst du den Hash neu berechnen:
# Download das Archive
curl -L -o aniworld-cli.zip https://github.com/dxmoc/aniworld-cli/archive/refs/heads/main.zip
# Berechne SHA256
(Get-FileHash aniworld-cli.zip -Algorithm SHA256).Hash.ToLower()Oder in Git Bash:
curl -L -o aniworld-cli.zip https://github.com/dxmoc/aniworld-cli/archive/refs/heads/main.zip
sha256sum aniworld-cli.zipAktualisiere den hash in bucket/aniworld-cli.json:
"hash": "HIER_DEN_BERECHNETEN_HASH"Du kannst dein eigenes Bucket hosten:
# Nutzer fügen dein Bucket hinzu
scoop bucket add aniworld https://github.com/dxmoc/aniworld-cli.git
# Dann installieren sie dein Paket
scoop install aniworld/aniworld-cliVorteile:
- Volle Kontrolle
- Keine Review-Prozesse
- Schnelle Updates
Nachteile:
- Weniger Sichtbarkeit
- Nutzer müssen das Bucket manuell hinzufügen
Das offizielle "extras" Bucket hat mehr Nutzer:
-
Fork das extras Bucket:
# Gehe zu: https://github.com/ScoopInstaller/Extras # Klicke "Fork"
-
Clone deinen Fork:
git clone https://github.com/DEIN_USERNAME/Extras.git cd Extras -
Kopiere dein Manifest:
cp /path/to/aniworld-cli/bucket/aniworld-cli.json bucket/
-
Teste lokal:
# Füge deinen Fork als Bucket hinzu scoop bucket add extras-test https://github.com/DEIN_USERNAME/Extras.git # Installiere zum Testen scoop install extras-test/aniworld-cli # Teste aniworld-cli --version
-
Erstelle Pull Request:
git add bucket/aniworld-cli.json git commit -m "Add aniworld-cli v1.0.0" git push origin masterDann auf GitHub:
- Gehe zu deinem Fork
- Klicke "Pull Request"
- Base:
ScoopInstaller/Extras:master - Head:
DEIN_USERNAME/Extras:master - Beschreibe dein Paket
- Submit PR
Vorteile:
- Mehr Sichtbarkeit
- Nutzer haben "extras" oft schon installiert
- Teil des offiziellen Ökosystems
Nachteile:
- Review-Prozess dauert Zeit
- Muss Guidelines folgen
- Weniger Kontrolle über Updates
Bei jedem Release:
-
Erstelle GitHub Release:
git tag -a v1.1.0 -m "Release v1.1.0" git push origin v1.1.0 -
Berechne neuen Hash:
curl -L -o aniworld-cli.zip \ https://github.com/dxmoc/aniworld-cli/archive/refs/heads/main.zip sha256sum aniworld-cli.zip
-
Aktualisiere Manifest:
{ "version": "1.1.0", "hash": "NEUER_HASH", ... } -
Committe und pushe:
git add bucket/aniworld-cli.json git commit -m "Update aniworld-cli to v1.1.0" git push origin main -
Nutzer aktualisieren:
scoop update scoop update aniworld-cli
Erstelle einen Pull Request mit dem aktualisierten Manifest für jede neue Version.
Scoop unterstützt Auto-Update im Manifest:
{
"checkver": {
"url": "https://github.com/dxmoc/aniworld-cli/releases/latest",
"regex": "tag/v([\\d.]+)"
},
"autoupdate": {
"url": "https://github.com/dxmoc/aniworld-cli/archive/refs/tags/v$version.tar.gz"
}
}Mit dieser Konfiguration kann Scoop automatisch neue Versionen erkennen.
Testen:
# Prüfe auf neue Version
scoop checkver aniworld-cli
# Update mit automatischer Hash-Berechnung
scoop update aniworld-cliFalls du einen PR an extras sendest, beachte:
- Package name sollte lowercase sein:
aniworld-cli - Keine Versionsnummern im Namen
- Binaries ohne
.exeExtension imbinFeld
-
Alle Felder ausgefüllt:
description,homepage,licenseurl,hash,version
-
Dependencies korrekt:
- Nur Scoop-Pakete als
depends - Optionale als
suggest
- Nur Scoop-Pakete als
-
Korrekte Extraktion:
extract_dirwenn nötigbinzeigt auf richtige Datei
-
Funktionierende URLs:
- URLs müssen erreichbar sein
- Hash muss übereinstimmen
# Manifest validieren
scoop checkver aniworld-cli --app ./bucket/aniworld-cli.json
# Installation testen
scoop install ./bucket/aniworld-cli.json
# Funktionalität testen
aniworld-cli --version
aniworld-cli --help
# Deinstallation testen
scoop uninstall aniworld-cliAutomatisiere Updates mit GitHub Actions:
Erstelle .github/workflows/scoop-update.yml:
name: Update Scoop Manifest
on:
release:
types: [published]
jobs:
update-manifest:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Update manifest version
run: |
VERSION="${{ github.event.release.tag_name }}"
VERSION="${VERSION#v}"
# Download archive
curl -L -o archive.zip \
"https://github.com/${{ github.repository }}/archive/refs/tags/${{ github.event.release.tag_name }}.zip"
# Calculate hash
HASH=$(sha256sum archive.zip | cut -d' ' -f1)
# Update manifest
jq --arg ver "$VERSION" \
--arg hash "$HASH" \
'.version = $ver | .hash = $hash' \
bucket/aniworld-cli.json > tmp.json
mv tmp.json bucket/aniworld-cli.json
- name: Commit changes
run: |
git config user.name "GitHub Actions"
git config user.email "actions@github.com"
git add bucket/aniworld-cli.json
git commit -m "Update to v${{ github.event.release.tag_name }}"
git pushDies aktualisiert automatisch das Manifest bei jedem GitHub Release.
Nach dem Setup können Nutzer installieren:
# Bucket hinzufügen (nur einmal)
scoop bucket add aniworld https://github.com/dxmoc/aniworld-cli.git
# aniworld-cli installieren
scoop install aniworld/aniworld-cli
# Oder wenn im extras Bucket:
scoop bucket add extras
scoop install aniworld-cli- Prüfe ob
bucket/aniworld-cli.jsonexistiert - Prüfe Schreibweise:
scoop install aniworld/aniworld-cli
- Hash stimmt nicht mit Download überein
- Berechne Hash neu und aktualisiere Manifest
- URL ist nicht erreichbar
- GitHub Release existiert nicht
- Prüfe
urlim Manifest
- Dependencies müssen in Scoop verfügbar sein
- Prüfe:
scoop search DEPENDENCY
Bei Fragen: