Kleine, fokussierte Hilfstools für Sonderfälle auf Linux-Umgebungen — jedes als eigenständiges,
paketiertes CLI. Ein Monorepo, aus dem sich .deb- und .rpm-Pakete für alle Tools automatisch
bauen lassen.
| Tool | Beschreibung | Doku |
|---|---|---|
| fastchown | Paralleler, rekursiver chown mit skip-if-unchanged für sehr große Filetrees (ZFS/RAIDZ). |
README · Troubleshooting |
| fastchmod | Paralleler, rekursiver chmod mit skip-if-unchanged; getrennte Modi für Dirs/Files in einem Durchlauf. |
README · Troubleshooting |
| fastfind | Paralleler, rekursiver find (Owner/Mode/Größe/Alter/verwaiste Owner); pipe-tauglich als Vorstufe zu fastchown/fastchmod. |
README · Troubleshooting |
Für jedes Release werden .deb- und .rpm-Pakete für amd64 und arm64 als Assets
bereitgestellt. Es gibt (noch) keinen gehosteten apt/dnf-Repo-Server — die Pakete werden direkt
vom Release installiert.
VERSION=1.0.0 # gewünschte Release-Version
ARCH=amd64 # amd64 oder arm64
curl -fsSLO "https://github.com/bauer-group/XPD-LinuxTools/releases/download/v${VERSION}/fastchown_${VERSION}_${ARCH}.deb"
sudo apt install "./fastchown_${VERSION}_${ARCH}.deb"VERSION=1.0.0 # gewünschte Release-Version
ARCH=x86_64 # x86_64 oder aarch64
sudo dnf install "https://github.com/bauer-group/XPD-LinuxTools/releases/download/v${VERSION}/fastchown-${VERSION}.${ARCH}.rpm"Die Tools sind Linux/Unix-only (nutzen lchown() u. ä.):
git clone https://github.com/bauer-group/XPD-LinuxTools.git
cd XPD-LinuxTools
go build -o fastchown ./cmd/fastchown # auf Windows: GOOS=linux go build ./cmd/fastchownEin neues Tool = ein neuer Ordner unter cmd/<tool>/ plus je ein Block in .goreleaser.yaml.
Die vollständige Checkliste steht in CONTRIBUTING.md.
cmd/<tool>/ # je ein CLI (package main); Einstieg für neue Tools
internal/parwalk/ # gemeinsame Engine: paralleler Walk + Worker + skip + Fortschritt
internal/ # weitere geteilte, plattformneutrale Logik (ownership, filemode, …)
.goreleaser.yaml # Build + .deb/.rpm-Paketierung aller Tools (GoReleaser v2)
.github/workflows/ # CI (Test/Lint/Packaging) + Release + Packages
Ein einzelnes Go-Modul (github.com/bauer-group/xpd-linuxtools) hält alle Tools; jedes wird zu
einem eigenständigen Binary und eigenen .deb/.rpm-Paketen.
go test -race ./... # Tests inkl. Race-Detector
golangci-lint run ./... # Lint (golangci-lint v2)
goreleaser release --snapshot --clean --skip=publish # Paketbau lokal testen -> dist/Versionierung läuft über Conventional Commits und semantic-release (eine Version fürs ganze Repo):
- Merge nach
mainmitfeat:/fix:/… →release.ymlschneidetvX.Y.Z, erzeugt CHANGELOG und GitHub-Release. packages.yml(viaworkflow_run) baut per GoReleaser die.deb/.rpm/.tar.gz-Artefakte und hängt sie an das Release.
GoReleaser erzeugt dabei kein eigenes Release/Tag — semantic-release ist alleiniger Herr über Version, Tag und CHANGELOG.
MIT © BAUER GROUP