is-unpublished
A scripting tool for CI environments to determine if your package needs to be published.
npm install -g is-unpublished
This tool supports the following package formats:
Binary releases
If you don't have the ability to install NPM packages in your environment, you can install a binary release.
$ curl -L https://github.com/rzane/is-unpublished/releases/download/v0.3.3/is-unpublished-`uname -s`-`uname -m` > is-unpublished
$ chmod +x is-unpublished
$ ./is-unpublished --version
0.3.3
Github Action
You can also use this package as a Github action. The action version coincides with the published NPM package version.
Inputs
cwd
The directory your package lives in.
Outputs
name
The name of your package.
version
The current version of your package.
is-unpublished
Indicates that your package hasn't been published yet.
Example usage
Publish to NPM
Make sure to set NPM_TOKEN
in your repo settings.
- name: Setup Node uses: actions/setup-node@v1 with: node-version: 12 registry-url: https://registry.npmjs.org - name: Check id: check uses: rzane/is-unpublished@v0.3.3 - name: Publish run: yarn install && yarn publish --access public if: ${{ steps.check.outputs.is-unpublished == 'true' }} env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - name: Release uses: actions/create-release@v1 if: ${{ steps.check.outputs.is-unpublished == 'true' }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: v${{ steps.check.outputs.version }} release_name: v${{ steps.check.outputs.version }}
Publish to RubyGems
Make sure to set RUBYGEMS_TOKEN
in your repo settings.
- name: Setup Ruby uses: actions/setup-ruby@v1 with: ruby-version: 2.6.x registry-url: https://registry.npmjs.org - name: Check id: check uses: rzane/is-unpublished@v0.3.3 - name: Publish if: ${{ steps.check.outputs.is-unpublished == 'true' }} run: | mkdir -p $HOME/.gem touch $HOME/.gem/credentials chmod 0600 $HOME/.gem/credentials printf -- "---\n:rubygems_api_key: ${RUBYGEMS_TOKEN}\n" > $HOME/.gem/credentials gem build *.gemspec gem push *.gem env: RUBYGEMS_TOKEN: ${{ secrets.RUBYGEMS_TOKEN }} - name: Release if: ${{ steps.check.outputs.is-unpublished == 'true' }} uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: v${{ steps.check.outputs.version }} release_name: v${{ steps.check.outputs.version }}