# @generated by ci-gen, do not edit

on:
    - push
    - pull_request
name: CI
jobs:
    linux-stable-default-features:
        name: linux stable (default features)
        runs-on: ubuntu-latest
        env:
            RUST_BACKTRACE: 1
        steps:
            - name: Checkout sources
              uses: actions/checkout@v2
            - name: Install toolchain
              uses: actions-rs/toolchain@v1
              with:
                  profile: minimal
                  toolchain: stable
                  override: true
            - name: Cache protobuf
              uses: actions/cache@v2
              with:
                  key: pb-linux-3.19.4
                  path: ~/pb
              env:
                  cache-name: pb
            - name: Install protobuf
              run: ci/install-protobuf.sh
              shell: bash
              env:
                  PROTOBUF_VERSION: 3.19.4
            - name: Protoc check
              run: protoc --version
              shell: bash
            - name: Compile interop
              run: test-crates/interop/cxx/compile.sh
              shell: bash
            - name: Regenerate
              run: protobuf/regenerate.sh
              shell: bash
            - name: Test all
              run: cargo test --all --all-targets
              shell: bash
            - name: Test all
              run: cargo test
              shell: bash
            - name: cargo doc
              uses: actions-rs/cargo@v1
              with:
                  command: doc
    linux-beta-default-features:
        name: linux beta (default features)
        runs-on: ubuntu-latest
        env:
            RUST_BACKTRACE: 1
        steps:
            - name: Checkout sources
              uses: actions/checkout@v2
            - name: Install toolchain
              uses: actions-rs/toolchain@v1
              with:
                  profile: minimal
                  toolchain: beta
                  override: true
            - name: Cache protobuf
              uses: actions/cache@v2
              with:
                  key: pb-linux-3.19.4
                  path: ~/pb
              env:
                  cache-name: pb
            - name: Install protobuf
              run: ci/install-protobuf.sh
              shell: bash
              env:
                  PROTOBUF_VERSION: 3.19.4
            - name: Protoc check
              run: protoc --version
              shell: bash
            - name: Compile interop
              run: test-crates/interop/cxx/compile.sh
              shell: bash
            - name: Regenerate
              run: protobuf/regenerate.sh
              shell: bash
            - name: Test all
              run: cargo test --all --all-targets
              shell: bash
            - name: Test all
              run: cargo test
              shell: bash
            - name: cargo doc
              uses: actions-rs/cargo@v1
              with:
                  command: doc
    linux-stable-with-bytes:
        name: linux stable (with-bytes)
        runs-on: ubuntu-latest
        env:
            RUST_BACKTRACE: 1
        steps:
            - name: Checkout sources
              uses: actions/checkout@v2
            - name: Install toolchain
              uses: actions-rs/toolchain@v1
              with:
                  profile: minimal
                  toolchain: stable
                  override: true
            - name: Cache protobuf
              uses: actions/cache@v2
              with:
                  key: pb-linux-3.19.4
                  path: ~/pb
              env:
                  cache-name: pb
            - name: Install protobuf
              run: ci/install-protobuf.sh
              shell: bash
              env:
                  PROTOBUF_VERSION: 3.19.4
            - name: Protoc check
              run: protoc --version
              shell: bash
            - name: Compile interop
              run: test-crates/interop/cxx/compile.sh
              shell: bash
            - name: protobuf-codegen-protoc-test
              uses: actions-rs/cargo@v1
              with:
                  command: test
                  args: --manifest-path=test-crates/protobuf-codegen-protoc-test/Cargo.toml --features=with-bytes
            - name: protobuf-codegen-pure-test
              uses: actions-rs/cargo@v1
              with:
                  command: test
                  args: --manifest-path=test-crates/protobuf-codegen-pure-test/Cargo.toml --features=with-bytes
    linux-nightly-all-features:
        name: linux nightly (all features)
        runs-on: ubuntu-latest
        env:
            RUST_BACKTRACE: 1
        steps:
            - name: Checkout sources
              uses: actions/checkout@v2
            - name: Install toolchain
              uses: actions-rs/toolchain@v1
              with:
                  profile: minimal
                  toolchain: nightly
                  override: true
            - name: Cache protobuf
              uses: actions/cache@v2
              with:
                  key: pb-linux-3.19.4
                  path: ~/pb
              env:
                  cache-name: pb
            - name: Install protobuf
              run: ci/install-protobuf.sh
              shell: bash
              env:
                  PROTOBUF_VERSION: 3.19.4
            - name: Protoc check
              run: protoc --version
              shell: bash
            - name: Compile interop
              run: test-crates/interop/cxx/compile.sh
              shell: bash
            - name: Test all
              run: cargo test --all --all-targets --all-features
              shell: bash
            - name: Test all
              run: cargo test --all-features
              shell: bash
            - name: cargo doc
              uses: actions-rs/cargo@v1
              with:
                  command: doc
                  args: --all-features
    windows-stable-default-features:
        name: windows stable (default features)
        runs-on: windows-latest
        env:
            RUST_BACKTRACE: 1
            VCPKGRS_DYNAMIC: 1
        steps:
            - name: Checkout sources
              uses: actions/checkout@v2
            - name: Install toolchain
              uses: actions-rs/toolchain@v1
              with:
                  profile: minimal
                  toolchain: stable
                  override: true
            - name: Cache protobuf
              uses: actions/cache@v2
              with:
                  key: pb-windows-3.19.4
                  path: ~/pb
              env:
                  cache-name: pb
            - name: Install protobuf
              run: ci/install-protobuf.sh
              shell: bash
              env:
                  PROTOBUF_VERSION: 3.19.4
            - name: Protoc check
              run: protoc --version
              shell: bash
            - name: Test all
              run: cargo test --all --all-targets
              shell: bash
    miri-test:
        name: Miri test
        runs-on: ubuntu-latest
        timeout-minutes: 5
        env:
            RUST_BACKTRACE: 1
            RUST_TEST_THREADS: 1
            MIRIFLAGS: -Zmiri-tag-raw-pointers
        steps:
            - name: Checkout sources
              uses: actions/checkout@v2
            - name: Install toolchain
              uses: actions-rs/toolchain@v1
              with:
                  profile: minimal
                  toolchain: nightly
                  override: true
                  components: miri
            - name: cargo-miri-setup
              uses: actions-rs/cargo@v1
              with:
                  command: miri
                  args: setup
            - name: cargo-miri-test
              uses: actions-rs/cargo@v1
              with:
                  command: miri
                  args: test -p protobuf --lib --all-features
    mega-linter:
        name: mega-linter
        runs-on: ubuntu-latest
        steps:
            - name: Checkout sources
              uses: actions/checkout@v2
              with:
                  fetch-depth: 0
            - name: mega-linter
              uses: megalinter/megalinter@v5
              env:
                  VALIDATE_ALL_CODEBASE: false
                  DEFAULT_BRANCH: master
                  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
                  VALIDATE_JSCPD: false
                  VALIDATE_PROTOBUF: false
                  VALIDATE_RUST_CLIPPY: false
                  VALIDATE_RUST_2015: false
                  VALIDATE_COPYPASTE: false
                  VALIDATE_SPELL: false
    rustfmt-check:
        name: rustfmt check
        runs-on: ubuntu-latest
        steps:
            - name: Checkout sources
              uses: actions/checkout@v2
            - name: Cache protobuf
              uses: actions/cache@v2
              with:
                  key: pb-linux-3.19.4
                  path: ~/pb
              env:
                  cache-name: pb
            - name: Install protobuf
              run: ci/install-protobuf.sh
              shell: bash
              env:
                  PROTOBUF_VERSION: 3.19.4
            - name: Protoc check
              run: protoc --version
              shell: bash
            - name: cargo check
              uses: actions-rs/cargo@v1
              with:
                  command: check
            - name: cargo fmt check
              run: cargo fmt -- --check
              shell: bash
    cargo-sync-readme:
        name: Check sync-readme
        runs-on: ubuntu-latest
        steps:
            - name: Checkout sources
              uses: actions/checkout@v2
            - name: Install toolchain
              uses: actions-rs/toolchain@v1
              with:
                  profile: minimal
                  toolchain: stable
                  override: true
            - name: install cargo sync-readme
              run: cargo install cargo-sync-readme
              shell: bash
            - name: sync-readme protobuf
              run: cd protobuf && cargo sync-readme --check
              shell: bash
            - name: sync-readme protobuf-codegen
              run: cd protobuf-codegen && cargo sync-readme --check
              shell: bash
            - name: sync-readme protobuf-examples/customize-serde
              run: cd protobuf-examples/customize-serde && cargo sync-readme --check
              shell: bash
            - name: sync-readme protobuf-examples/vs-prost
              run: cd protobuf-examples/vs-prost && cargo sync-readme --check
              shell: bash
            - name: sync-readme protobuf-json-mapping
              run: cd protobuf-json-mapping && cargo sync-readme --check
              shell: bash
            - name: sync-readme protobuf-parse
              run: cd protobuf-parse && cargo sync-readme --check
              shell: bash
            - name: sync-readme protobuf-support
              run: cd protobuf-support && cargo sync-readme --check
              shell: bash
    self-check:
        name: CI self-check
        runs-on: ubuntu-latest
        steps:
            - name: Checkout sources
              uses: actions/checkout@v2
            - name: Install toolchain
              uses: actions-rs/toolchain@v1
              with:
                  profile: minimal
                  toolchain: stable
                  override: true
            - name: The check
              run: cargo run -p ci-gen -- --check
              shell: bash