Tool to publish & distribute CLI tools
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
Used for installing the built binary:
Used for building from source:
publisher
is available on Linux, macOS & Windows
With Homebrew
$ 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
Pre-built binary executables are available at releases page.
Download, unarchive the binary, and then put the executable in $PATH
.
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 |
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 toconflicts
if it is selected.
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 toconflicts
if it is selected.
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.
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.
- 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.
Here is a list of Contributors
Please see CHANGELOG.md.
MIT/X11
Report here.
Pavan Kumar Sunkara (pavan.sss1991@gmail.com)