Skip to content

feat(dist): System package manager distribution (Homebrew, WinGet, Scoop, Linux DEB & RPM) - #119

Merged
archittmittal merged 4 commits into
masterfrom
feat/package-manager-distribution
Sep 21, 2026
Merged

archittmittal merged 4 commits into
masterfrom
feat/package-manager-distribution

Conversation

@archittmittal

Copy link
Copy Markdown
Contributor

Summary

Closes #88

What's in this PR

1. Homebrew Formula (Formula/reliadl.rb & packaging/homebrew/reliadl.rb)

  • Multi-architecture formula supporting macOS (Apple Silicon & Intel) and Linux (x86_64 & aarch64)
  • Installs standalone binary to /usr/local/bin/reliadl or /opt/homebrew/bin/reliadl
  • Includes automated test block verifying reliadl --help and reliadl --version

2. Windows Package Managers (WinGet & Scoop)

  • WinGet v1.6.0 Manifests in packaging/winget/manifests/p/PxA-Labs/ReliaDL/0.3.0/:
    • PxA-Labs.ReliaDL.yaml (Version Manifest)
    • PxA-Labs.ReliaDL.installer.yaml (Installer Manifest - portable x64 architecture)
    • PxA-Labs.ReliaDL.locale.en-US.yaml (Locale & metadata manifest)
  • Scoop Manifest in packaging/scoop/reliadl.json:
    • Configured with GitHub release URL, binary shim, and autoupdate specification

3. Linux Package Formats (.deb & .rpm)

  • nFPM Configuration in packaging/nfpm/nfpm.yaml:
    • Targets Debian/Ubuntu (.deb with xz compression) and RHEL/Fedora/Rocky/openSUSE (.rpm with gzip compression)
    • Installs binary to /usr/bin/reliadl (mode 0755) alongside documentation and license

4. GitHub Actions Automation (.github/workflows/packages.yml)

  • Validation Job: Validates YAML and JSON schemas for all manifests and Ruby syntax for Homebrew formulas
  • Build Matrix: Compiles binaries and packages native .deb and .rpm archives for amd64 and arm64 via nFPM
  • Release Integration: Attaches package artifacts and cryptographic checksums (SHA256SUMS-PACKAGES) to GitHub Releases on tag push

5. Documentation & Automated Tests

  • docs/PACKAGES.md: Complete user guide for Homebrew, WinGet, Scoop, DEB, and RPM installation
  • tests/unit/test_packaging_manifests.py: Automated unit test suite verifying manifest syntax, schemas, and structure

Acceptance Criteria

  • Homebrew formula installs ReliaDL cleanly on macOS and Linux
  • WinGet manifest schema validated
  • Scoop bucket manifest configured
  • .deb and .rpm packages built via nFPM and attached to GitHub Release assets
  • Manifest verification test suite passing in CI ✅

…oop, DEB, RPM)

Closes #88

### What's added

**Homebrew Formula**
- `Formula/reliadl.rb` and `packaging/homebrew/reliadl.rb`
- Supports macOS (Apple Silicon & Intel) and Linux (arm64 & amd64)
- Test verification assertion for `reliadl --help` and `reliadl --version`

**Windows Package Managers**
- WinGet v1.6.0 manifests in `packaging/winget/manifests/p/PxA-Labs/ReliaDL/0.3.0/`
  (`PxA-Labs.ReliaDL.yaml`, `PxA-Labs.ReliaDL.installer.yaml`, `PxA-Labs.ReliaDL.locale.en-US.yaml`)
- Scoop bucket manifest in `packaging/scoop/reliadl.json`

**Linux Packages (.deb & .rpm)**
- `packaging/nfpm/nfpm.yaml` for automated `nFPM` packaging
- Targets Debian/Ubuntu (`.deb`) and RHEL/Fedora/openSUSE (`.rpm`)

**CI/CD Pipeline**
- `.github/workflows/packages.yml`
- Validates YAML/JSON manifests and Ruby syntax for Homebrew formulas
- Compiles binaries and builds `.deb` / `.rpm` packages via `nFPM`
- Calculates SHA256 checksums and attaches packages to GitHub Releases on tag push

**Documentation & Tests**
- `docs/PACKAGES.md` detailing Homebrew, WinGet, Scoop, DEB, and RPM setup
- `tests/unit/test_packaging_manifests.py` testing all manifest syntax and schemas
@archittmittal
archittmittal force-pushed the feat/package-manager-distribution branch from 88a8bab to d863e93 Compare September 21, 2026 07:01
@archittmittal
archittmittal merged commit 7fc0f1c into master Sep 21, 2026
20 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(dist): System package manager distribution (Homebrew formula, WinGet manifest, Linux packages)

2 participants