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 Cargo
cargo install publisher
With Homebrew
brew install termapps/tap/publisher
With AUR (binary)
yay -S publisher
With Scoop
scoop bucket add termapps https://github.com/termapps/scoop-bucket
scoop install publisher
With Nix
nix profile install github:termapps/nixpkgs#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 |
homebrew |
object | Yes | Homebrew |
aur |
object | No | AUR |
aur_bin |
object | No | AUR (binary) |
scoop |
object | Yes | Scoop |
nix |
object | No | Nix |
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 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 app |
repository |
string | Yes | GitHub repository for the scoop bucket |
name
defaults to the binary name.
Name | Type | Required | Description |
---|---|---|---|
name |
string | No | Name of the package |
repository |
string | No | GitHub repository for the nix package |
path |
string | No | Path of the package in the repo |
lockfile |
bool | No | Whether to update flake lockfile |
name
defaults to the binary name.repository
defaults to binary's GitHub repository.path
defaults toflake.nix
.%n
can be used inpath
to substitute with name. For example,%n/flake.nix
creates the package atpublisher/flake.nix
location.lockfile
defaults totrue
and is needed to install the package most of the time.
- 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 ([email protected])