name: Publish npm (codetether npx wrapper)
on:
release:
types: [published]
workflow_dispatch:
inputs:
version:
description: 'Version to publish (e.g. 4.4.0). Defaults to Cargo.toml version.'
required: false
jobs:
publish:
name: Publish to npm
runs-on: ubuntu-latest
steps:
- name: Check NPM_TOKEN
id: check_token
run: |
if [ -z "${{ secrets.NPM_TOKEN }}" ]; then
echo "⚠️ NPM_TOKEN not configured — skipping publish"
echo "skip=true" >> "$GITHUB_OUTPUT"
fi
- name: Checkout
if: steps.check_token.outputs.skip != 'true'
uses: actions/checkout@v4
- name: Setup Node
if: steps.check_token.outputs.skip != 'true'
uses: actions/setup-node@v4
with:
node-version: '20'
registry-url: 'https://registry.npmjs.org'
- name: Set npm package version from git tag
if: steps.check_token.outputs.skip != 'true'
working-directory: npm/codetether
run: |
set -euo pipefail
if [ -n "${{ github.event.release.tag_name }}" ]; then
ver="${{ github.event.release.tag_name }}"
elif [ -n "${{ github.event.inputs.version }}" ]; then
ver="${{ github.event.inputs.version }}"
else
ver=$(grep '^version' ../../Cargo.toml | head -1 | sed 's/.*"\(.*\)"/\1/')
fi
ver="${ver#v}"
echo "Publishing version: $ver"
npm version "$ver" --no-git-tag-version
- name: Install dependencies
if: steps.check_token.outputs.skip != 'true'
working-directory: npm/codetether
run: npm install --omit=dev
- name: Publish
if: steps.check_token.outputs.skip != 'true'
working-directory: npm/codetether
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
run: npm publish --access public