ctl-core 0.6.12

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
  CARGO_TERM_COLOR: always
  MISE_ENV: dev,ci
  # On ext4 mbx restores cache hits as read-only hard links to its store.
  # cargo package's verify build then fails to rewrite ctl-core's rmeta with
  # "output file ... is not writeable", so restored outputs get their own copy.
  MBX_RESTORE_HARDLINK: "0"

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
        run: mise run semver
      - name: Package
        run: mise x -- cargo package --locked --all-features