-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Functional Specification: Publish CLI to Package Managers
Overview
The Nomos CLI should be installable through the major package managers that support Go binaries, allowing users to install, update, and manage the CLI using familiar tooling on their operating system. This removes the need for users to manually download and configure binaries, lowering the barrier to adoption and improving the day-to-day experience for existing users. The initial focus is on winget for Windows, with Homebrew (macOS/Linux) and a universal Linux format as follow-on targets.
Goals
- Winget (Windows) is the first-priority package manager target; the Nomos CLI must be listed and installable via
winget install nomos. - Users on macOS and Linux can install the Nomos CLI using Homebrew and a universal Linux format (e.g., Snap or a Homebrew-compatible tap) respectively.
- Installation via any supported package manager produces a working CLI that behaves identically to a manually downloaded binary.
- New releases of the Nomos CLI are made available in supported package managers by maintainers manually updating listings after each release; a short delay after publishing is acceptable.
- The steps required for maintainers to update each package manager listing after a release are clearly documented so the process can be repeated consistently.
Non-Goals
- Publishing to package managers that do not support Go binaries or that have prohibitively complex submission processes.
- Providing a graphical installer or setup wizard.
- Supporting package manager plugins, extensions, or ecosystem integrations beyond basic install/upgrade/uninstall.
- Backwards-compatibility shims or legacy version pinning beyond what the package manager natively supports.
- Distributing distro-specific package formats (
.deb,.rpm, etc.); universal formats are sufficient. - Automating the package manager publish step as part of CI/CD; manual updates by maintainers are acceptable.
User Stories
- As a Windows developer, I want to install the Nomos CLI with
winget install nomosso that I can integrate it into my existing development workflow without manually managing binaries. - As a macOS developer, I want to install the Nomos CLI with
brew install nomosso that I can get started without manually downloading a binary. - As a Linux developer, I want to install the Nomos CLI using a universal package format (e.g., Snap) so that updates are managed alongside my other tools without requiring distro-specific packages.
- As a Nomos user, I want to upgrade to the latest version by running my package manager's standard upgrade command so that I always have access to the newest features and fixes.
- As a CI/CD engineer, I want to install the Nomos CLI in a pipeline using a single package manager command so that I can automate Nomos compilation steps without managing binary downloads manually.
- As a maintainer, I want clear documentation on how to update each package manager listing after a release so that I can publish new versions consistently and without ambiguity.
Acceptance Criteria
- The Nomos CLI is installable via winget on Windows; this is a required condition for the feature to be considered complete.
- The Nomos CLI is installable via Homebrew on macOS and Linux (desirable, may follow in a subsequent iteration).
- The Nomos CLI is installable via at least one universal Linux format such as Snap (desirable, may follow in a subsequent iteration).
- Running the install command on any supported package manager results in the
nomosbinary being available on the user'sPATHwithout additional manual configuration. - The installed CLI version matches the published release version and produces the correct output when
nomos --versionis run. - Users can upgrade the CLI to a newer release by running the package manager's standard upgrade command (e.g.,
winget upgrade nomos,brew upgrade nomos). - Users can uninstall the CLI cleanly using the package manager's standard uninstall command.
- Maintainer documentation describes the exact steps to update each supported package manager listing after a new release is published.
- Installation instructions in the project's README or documentation are updated to include package manager steps for all supported platforms.
Assumptions & Dependencies
- Existing release pipeline: Cross-platform pre-built binaries for common architectures (e.g.,
amd64,arm64) are already produced by the existing CI/CD pipeline as part of the release process; no new release infrastructure needs to be created. - Winget first: Winget is the highest-priority target. Homebrew and universal Linux formats will follow but may be delivered in subsequent iterations.
- Universal Linux formats only: Distro-specific package formats (
.deb,.rpm) are not required; a universal format such as Snap or a Homebrew tap is sufficient for Linux users. - Manual maintenance: Maintainers will manually update package manager listings after each release. A short delay between a Nomos release and its availability in package managers is acceptable.
- No CI/CD automation for publishing: Automating the publish step through the existing CI/CD pipeline is explicitly out of scope for this specification.
- Versioned release tags: A stable, versioned tagging convention for releases is assumed to exist or will exist before package manager listings are created.
Originally described as: "We need to be able to publish the cli to the major package managers that supports go binaries."
Status
This specification is complete. Please add the ready-for-design label when you are satisfied with the requirements.
Generated by Feature Specification Refinement for issue #143