Built and signed on GitHub ActionsBuilt and signed on GitHub Actions
Built and signed on GitHub Actions
Enables self-upgrading of a Cliffy CLI which is distributed through GitHub Releases
This package works with DenoIt is unknown whether this package works with Cloudflare Workers, Node.js, Bun, Browsers
JSR Score
100%
Published
4 months ago (0.3.2)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657# cliffy-provider-github-releases This is a provider for [cliffy](https://cliffy.io) which enables the updating of a CLI tool via [GitHub Releases](https://docs.github.com/en/repositories/releasing-projects-on-github). ## usage _for a complete example, see the [polyseam/cliffy-ghr-demo](https://github.com/polyseam/cliffy-ghr-demo) repo_ The following snippet instantiates an `GithubReleasesUpgradeCommand`, it is configured by passing an instance of `GithubReleasesProvider` to it. The `GithubReleasesProvider` takes: - `repository` a string in the format `owner/repo` which points to the repository to fetch releases from. - `osAssetMap` a map of `Deno.build.os` entries to corresponding asset tarballs - `destinationDir` a string which points to the directory where the tarball contents should be extracted to and optionally, for more fine-grained control over how error and success events are handled: - `onError` a function which is called when an error occurs, it is passed an instance of `GHRError` - `onComplete` a function which is called when the upgrade process completes, it is passed the version string of the release that was installed ```typescript import { GHRError, GithubReleasesProvider, GithubReleasesUpgradeCommand, } from "jsr:@polyseam/cliffy-provider-github-releases"; // This UpgradeCommand can be used in place of the default Cliffy UpgradeCommand const upgradeCommand = new GithubReleasesUpgradeCommand({ provider: new GithubReleasesProvider({ repository: "polyseam/cndi", destinationDir: "~/.cndi/bin", osAssetMap: { windows: "cndi-win.tar.gz", linux: "cndi-linux.tar.gz", darwin: "cndi-mac.tar.gz", }, onError: (error: GHRError) => { const exit_code = parseInt(`8${error.code}`); Deno.exit(exit_code); }, onComplete: (_info) => { Deno.exit(0); }, }), }); ```