ctl-core 0.6.15

Shared clap chassis for the *ctl CLIs
Documentation
name: CI

on:
  pull_request:
  push:
    branches: [main]

permissions:
  contents: read

env:
  GIT_CONFIG_COUNT: "1"
  GIT_CONFIG_KEY_0: init.defaultBranch
  GIT_CONFIG_VALUE_0: main
  MISE_ENV: ci

concurrency:
  group: ci-${{ github.workflow }}-${{ github.head_ref || github.ref_name }}-${{ github.event.pull_request.base.sha || github.sha }}
  cancel-in-progress: true

jobs:
  verify:
    name: Verify
    runs-on: ubuntu-latest
    steps:
      - name: Check out repository
        uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
        with:
          persist-credentials: false
      - name: Install locked toolchain
        uses: jdx/mise-action@c2a87611a18de5b3828c5652fe268e992400cb5c # v4.3.0
        with:
          version: 2026.10.3
          cache: true
      # The objects payload carries mbx's compiled actions, whatever Cargo's
      # target layout. A restored target tree still recompiled most of the
      # clippy, doc-test, and cargo-semver-checks work.
      - name: Cache builds with mbx
        uses: jdx/mr-boxington-action@47ce49b32025d93a7a2f4570815afaa2b7092240 # v1.7.2
        with:
          github-cache-mode: objects
          isolate-objects-cache: true
      - name: Verify
        run: mise run verify
      - name: Advisories
        run: mise run deny:advisories
      - name: Semver
        # mise-tasks/semver/ci allows the 0.6.15 baseline removal only while
        # 0.6.14 is the newest release.
        run: mise run semver:ci
      - name: Package
        run: mise x -- cargo package --locked --all-features

  template:
    name: Template
    # A pull request from a fork gets no secrets and cannot read the private
    # template, so the check is skipped there instead of failing.
    if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
    runs-on: ubuntu-latest
    steps:
      - name: Check out repository
        uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
        with:
          persist-credentials: false
      - name: Check the template version
        uses: ./.github/actions/copier-check
        with:
          client-id: ${{ secrets.TEMPLATES_APP_CLIENT_ID }}
          private-key: ${{ secrets.TEMPLATES_APP_PRIVATE_KEY }}