fsrc 3.6.1

Embed source files into any text file
Documentation
name: CI

on:
  pull_request:
    branches: [main]
  workflow_call:

permissions:
  contents: read

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

env:
  CARGO_TERM_COLOR: always

jobs:
  fmt:
    name: Format
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
        with:
          components: rustfmt
      - run: cargo fmt --check

  clippy:
    name: Clippy
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: ludeeus/action-shellcheck@2.0.0
      - uses: dtolnay/rust-toolchain@stable
        with:
          components: clippy
      - uses: Swatinem/rust-cache@v2
      - run: cargo clippy -- -D warnings

  test:
    name: Test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
      - uses: Swatinem/rust-cache@v2
      - run: cargo test

  integrate:
    name: Integration
    needs: [fmt, clippy, test]
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
      - uses: Swatinem/rust-cache@v2

      - name: Build fsrc
        run: cargo build --release

      - name: Test binary produces correct output
        run: |
          TMPDIR=$(mktemp -d)
          cp tests/fixtures/sample.md "$TMPDIR/"
          cp tests/fixtures/example.rs "$TMPDIR/"
          ./target/release/fsrc run "$TMPDIR/sample.md"
          diff "$TMPDIR/sample.md" tests/fixtures/sample_expected.md

      - name: Verify README embeddings are current
        run: ./target/release/fsrc run --verify README.md