Files
tree-sitter-shellspec/.github/actions

Composite Actions

This directory contains reusable composite actions to reduce duplication across workflows.

Available Actions

setup-node

Sets up Node.js with caching and installs dependencies.

Inputs:

  • node-version (optional): Node.js version, defaults to '24'
  • registry-url (optional): NPM registry URL

Usage:

- uses: ./.github/actions/setup-node
  with:
    node-version: 22

setup-treesitter

Installs Tree-sitter CLI and generates the grammar.

Usage:

- uses: ./.github/actions/setup-treesitter

setup-dev

Complete development environment setup (combines setup-node + setup-treesitter).

Inputs:

  • node-version (optional): Node.js version, defaults to '24'
  • registry-url (optional): NPM registry URL
  • skip-checkout (optional): Skip repository checkout, defaults to 'false'

Usage:

- uses: ./.github/actions/setup-dev
  with:
    node-version: 24
    skip-checkout: 'true'

test-grammar

Runs comprehensive grammar tests including parser validation.

Inputs:

  • skip-sample-test (optional): Skip complex sample test, defaults to 'false'

Usage:

- uses: ./.github/actions/test-grammar
  with:
    skip-sample-test: 'true'

test-coverage

Analyzes test coverage and validates minimum requirements.

Inputs:

  • minimum-tests (optional): Minimum tests required, defaults to '55'

Outputs:

  • total-tests: Total number of tests found
  • passing-tests: Number of passing tests
  • coverage-percent: Test coverage percentage

Usage:

- uses: ./.github/actions/test-coverage
  with:
    minimum-tests: 60

Workflow Usage Examples

Test Workflow (Simplified)

jobs:
  test:
    steps:
      - uses: ./.github/actions/setup-dev
        with:
          node-version: ${{ matrix.node-version }}
      - uses: ./.github/actions/test-grammar

Release Workflow (Simplified)

jobs:
  test:
    steps:
      - uses: ./.github/actions/setup-dev
      - uses: ./.github/actions/test-grammar
        with:
          skip-sample-test: 'true'

  lint:
    steps:
      - uses: ./.github/actions/setup-node
      - uses: ivuorinen/actions/pr-lint@latest