Open
Description
(moderated summary by @epage)
Context:
- "Rust makes writing crossplatform, tested, modern command line applications frictionless while incorporating industry best practices and providing great documentation." (goal)
- Focus is on CLI apps (see README for definition)
Assumptions and Implications
- Majority of CLIs will at more than just Rust developers (for targeting rust-developers, see Improving binary distribution through cargo. #20)
- Users of CLIs will be somewhat technical considering they are using a terminal
- Use case priorities
- Using the app on the command line via the path
- Glued together with other apps in a script
- Drag and drop files onto an icon for the CLI
- Examples of content to distribute
- one or more rust binaries
- completion files
- man pages (See Documenting CLIs #23)
Other solutions
- Go has equinox
Plan of attack
- "How to package" documentation
- Automation
- Implement stager
- Reach out to binary packaging tools to consolidate effort with stager
In-ecosystem resources
- trust: example project that tarballs pre-built binaries releases via github releases
- crate-ci docs: A home for process automation documentation
- crate-ci meta: A home for discussing tooling and documentation, including discussing stager
- stager
- self-update
- cargo-deb
- cargo-wix
- cargo-arch
- cargo-rpm
- cargo-ebuild
- cargo-bundle
Open Issues
- (Windows) Adding manifests, see Support application manifests on Windows rust-lang/rfcs#721
Open Questions
- Prioritized list of package formats per platform?
- Linux: deb, rpm, flatpak, snap
- Are flatpak / snap's apps added to PATH?
- Windows: MSI via wix, chocolatey
- Mac: homebrew
- How easily are pkg's available from command line?
- Linux: deb, rpm, flatpak, snap
- PPAs?
- Use case, challenges, and priority of source packages?
- Importance of remote administration and provisioning?
@killercup's original post
In the first meeting, we identified packaging and distributing CLI apps a something we should improve.
We need to have a best-practice solution for getting from "I have a crate with a binary" to "I can ship this app and don't have to worry about cross-platform installation stuff".
Edit 2018-03-19: This issue is about distribution of rust binaries without using cargo-install.