node-sys 0.4.2

Raw bindings to the Node.js API for projects using wasm-bindgen.
Documentation
name: ci
on: [push, pull_request]
jobs:
  # skip ci if the last commit contains the appropriate tag
  skip-commit:
    name: Conditionally skip ci
    runs-on: ubuntu-latest
    steps:
      - if: "contains(github.event.head_commit.message, '[skip-ci]')
          || contains(github.event.head_commit.message, '[skip ci]')
          || contains(github.event.head_commit.message, '[ci-skip]')
          || contains(github.event.head_commit.message, '[ci skip]')"
        run: exit 78

  # cache installs of cargo-audit, wasm-pack
  cache-tools:
    name: Cache tools
    needs: [skip-commit]
    runs-on: ubuntu-latest
    env:
      RUST_TOOLCHAIN: 1.40.0
    steps:
      - uses: actions/checkout@v1
      - name: Restore /home/runner/tools/bin
        id: cache-tools-bin
        uses: actions/cache@v1
        with:
          path: tools/bin
          key: tools-bin-${{ runner.OS }}-[${{ env.RUST_TOOLCHAIN }}]-${{ hashFiles('.github/caching/tools-cache.lock') }}
      - name: Install Rust toolchain
        if: "steps.cache-tools-bin.outputs.cache-hit != 'true'"
        run: |
          rustup set profile minimal
          rustup toolchain install $RUST_TOOLCHAIN
      - name: Install wasm-pack
        if: steps.cache-tools-bin.outputs.cache-hit != 'true'
        run: |
          mkdir -p tools/bin
          WASM_PACK_LATEST_URL=`curl -sL https://api.github.com/repos/rustwasm/wasm-pack/releases/latest | jq -r '.assets[3].browser_download_url'`
          curl -L $WASM_PACK_LATEST_URL | tar zxf - --overwrite --strip-components=1 -C tools/bin
      - name: Install cargo-audit
        if: "steps.cache-tools-bin.outputs.cache-hit != 'true'"
        run: cargo install --root tools --force cargo-audit

  # verify that Cargo.lock passes audit
  cargo-audit:
    name: Run cargo audit
    needs: [skip-commit, cache-tools]
    runs-on: ubuntu-latest
    env:
      RUST_TOOLCHAIN: 1.40.0
    steps:
      - uses: actions/checkout@v1
      - name: Restore /home/runner/tools/bin
        uses: actions/cache@v1
        with:
          path: tools/bin
          key: tools-bin-${{ runner.OS }}-[${{ env.RUST_TOOLCHAIN }}]-${{ hashFiles('.github/caching/tools-cache.lock') }}
      - run: echo "::add-path::$GITHUB_WORKSPACE/tools/bin"
      - run: cargo-audit audit

  # verify that project builds
  cargo-check:
    name: Run cargo check
    needs: [skip-commit, cache-tools]
    runs-on: ubuntu-latest
    env:
      RUSTFLAGS: -Dwarnings
      RUST_TOOLCHAIN: 1.40.0
    steps:
      - uses: actions/checkout@v1
      - name: Install Rust toolchain
        run: |
          rustup set profile minimal
          rustup toolchain install $RUST_TOOLCHAIN
      - name: Run cargo check
        uses: actions-rs/cargo@v1
        with:
          command: check
          args: --all-features --all-targets --benches --bins --examples --tests --workspace

  # verify that project passes clippy lints
  cargo-clippy:
    name: Run cargo clippy
    needs: [skip-commit, cache-tools]
    runs-on: ubuntu-latest
    env:
      RUST_TOOLCHAIN: 1.40.0
    steps:
      - uses: actions/checkout@v1
      - name: Install Rust toolchain
        run: |
          rustup set profile minimal
          rustup toolchain install $RUST_TOOLCHAIN --component clippy
      - name: Run cargo clippy
        uses: actions-rs/clippy-check@v1
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          args: --all-features --all-targets --benches --bins --examples --tests --workspace -- -D warnings

  # build the documentation
  cargo-docs:
    name: Run cargo docs
    needs: [skip-commit, cache-tools]
    runs-on: ubuntu-latest
    env:
      RUST_TOOLCHAIN: 1.40.0
    steps:
      - uses: actions/checkout@v1
      - name: Install Rust toolchain
        run: |
          rustup set profile minimal
          rustup toolchain install $RUST_TOOLCHAIN
      - name: Run cargo doc
        uses: actions-rs/cargo@v1
        with:
          command: doc
          args: --all-features --no-deps --package node-sys
      - env:
          PERSONAL_TOKEN: ${{ secrets.ACTIONS_GH_PAGES_TOKEN }}
          PUBLISH_BRANCH: gh-pages
          PUBLISH_DIR: ./target/doc
          SCRIPT_MODE: true
        run: wget -qO - https://raw.githubusercontent.com/interfaces-rs/actions-gh-pages/v2.5.1/entrypoint.sh | bash -

  # verify that code is formatted
  cargo-fmt:
    name: Run cargo fmt
    needs: [skip-commit, cache-tools]
    runs-on: ubuntu-latest
    env:
      RUST_TOOLCHAIN: nightly
    steps:
      - uses: actions/checkout@v1
      - name: Install Rust toolchain
        run: |
          rustup set profile minimal
          rustup toolchain install $RUST_TOOLCHAIN --component rustfmt
      - name: Run cargo fmt
        run: cargo "+$RUST_TOOLCHAIN" fmt --all -- --check

  # verify that tests pass
  cargo-test:
    name: Run cargo test
    needs: [skip-commit, cache-tools]
    runs-on: ubuntu-latest
    env:
      RUST_TOOLCHAIN: 1.40.0
    steps:
      - uses: actions/checkout@v1
      - name: Configure node
        uses: actions/setup-node@v1
        with:
          node-version: "13.x"
      - name: Install Rust toolchain
        run: |
          rustup set profile minimal
          rustup toolchain install $RUST_TOOLCHAIN
      - name: Restore /home/runner/tools/bin
        uses: actions/cache@v1
        with:
          path: tools/bin
          key: tools-bin-${{ runner.OS }}-[${{ env.RUST_TOOLCHAIN }}]-${{ hashFiles('.github/caching/tools-cache.lock') }}
      - run: echo "::add-path::$GITHUB_WORKSPACE/tools/bin"
      - run: if [ -f package.json ]; then npm ci; fi
      - run: wasm-pack test --node -- --all-features --all-targets --benches --bins --examples --tests --workspace