Skip to content

Tool to publish & distribute CLI tools

License

Notifications You must be signed in to change notification settings

termapps/publisher

Repository files navigation

publisher

Zulip Crates.io

Tool to publish & distribute CLI tools

Getting started

  1. Usage
  2. Package Repositories
  3. Install
  4. Configuration
  5. Changelog

Usage

NOTE: Only supports tools hosted in GitHub for now.

Setup publishing configuration. (Only needed for first time setup).

$ publisher init

Setup your CI pipeline to build release artifacts. (Only needed for first time setup).

$ publisher generate ci

Update your code, commit and push to repository with a version tag.

$ git tag v1.0.0
$ git push --tags

Check that you meet all requirements for publishing to configured package repositories.

$ publisher check

Run the following to publish a version to configured package repositories.

$ publisher publish 1.0.0

Discover more subcommands and options.

$ publisher help

Package Repositories

Used for installing the built binary:

Used for building from source:

Install

publisher is available on Linux, macOS & Windows

$ brew install termapps/tap/publisher

With AUR

$ yay -S publisher

With Scoop

$ scoop bucket add termapps https://github.com/termapps/scoop-bucket
$ scoop install publisher

With cargo

$ cargo install publisher

Direct

Pre-built binary executables are available at releases page.

Download, unarchive the binary, and then put the executable in $PATH.

Configuration

Publisher can be configured using publisher.toml file. The below options are avaialable:

Name Type Required Description
name string Yes1 Name of the binary
description string Yes1 Description of the project
homepage string Yes1 URL of the project homepage
license string Yes1 License
repository string Yes URI of the GitHub repository (ex: termapps/publisher)
exclude string[] No Package Repository selection
aur object No AUR
aur_bin object No AUR (binary)
homebrew object Yes Homebrew
scoop object Yes Scoop

AUR

Name Type Required Description
name string No Name of the package
conflicts string[] No Packages in AUR that conflict with this
  • name defaults to the binary name.
  • Automatically adds AUR (binary) package to conflicts if it is selected.

AUR (binary)

Name Type Required Description
name string No Name of the package
conflicts string[] No Packages in AUR that conflict with this
  • name defaults to the binary name concatenated with -bin.
  • Automatically adds AUR package to conflicts if it is selected.

Homebrew

Name Type Required Description
name string No Name of the formula
repository string[] Yes GitHub repository for the homebrew tap
  • name defaults to the binary name.

Scoop

Name Type Required Description
name string No Name of the app
repository string[] Yes GitHub repository for the scoop bucket
  • name defaults to the binary name.

Package Repository selection

  • By default, all the available package repositories are selected if not specified in the subcommand.
  • If exclude is configured, then those will be excluded from the above selected package repositories.

Contributors

Here is a list of Contributors

TODO

  • Package repositories
    • Alpine Linux (#1)
    • Nixpkgs (#10)
    • Cargo
    • NPM
    • PyPi
  • Platforms (#4)
  • Shell completions (#8)
  • Manpages (#9)
  • Maintainer (#5)

Changelog

Please see CHANGELOG.md.

License

MIT/X11

Bug Reports

Report here.

Creator

Pavan Kumar Sunkara (pavan.sss1991@gmail.com)

Follow me on github, twitter

Footnotes

  1. If cargo binary and Cargo.toml file are present, they can be omitted from the config. 2 3 4