bdk-cli 3.0.0

An experimental CLI wallet application and playground, powered by BDK
on: [push, pull_request]

name: CI

permissions:
  contents: read
env:
  CARGO_TERM_COLOR: always
jobs:

  build-test:
    name: Build and test
    runs-on: ubuntu-latest
    strategy:
      matrix:
        rust:
          - stable # STABLE
        features:
          - --features default
          - --no-default-features
          - --all-features
    steps:
      - name: Checkout
        uses: actions/checkout@v6
      - name: Setup Rust Toolchain
        uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          toolchain: ${{ matrix.rust }}
          profile: minimal
          override: true
          components: rustfmt, clippy
          cache: true
      - name: Build
        run: cargo build ${{ matrix.features }}
      - name: Test
        run: cargo test ${{ matrix.features }}
  clippy:
    name: Clippy (${{ matrix.features }})
    runs-on: ubuntu-latest
    strategy:
      matrix:
        features:
          - --no-default-features
          - --all-features
    steps:
      - name: Checkout
        uses: actions/checkout@v6
      
      - name: Install Rust toolchain
        uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          toolchain: stable
          profile: minimal
          override: true
          components: clippy
          cache: true
      - name: Run Clippy
        run: cargo clippy ${{ matrix.features }} --all-targets -- -D warnings

# TODO: fix or remove this
#  wasm-build:
#    name: Build WASM
#    runs-on: ubuntu-20.04
#    env:
#      CC: clang-10
#      CFLAGS: -I/usr/include
#    steps:
#      - name: Checkout
#        uses: actions/checkout@v4
#      - name: Generate cache key
#        run: echo "Build WASM" | tee .cache_key
#      - name: Cache
#        uses: actions/cache@v4
#        with:
#          path: |
#            ~/.cargo/registry
#            ~/.cargo/git
#            target
#          key: ${{ runner.os }}-cargo-${{ hashFiles('.cache_key') }}-${{ hashFiles('**/Cargo.toml','**/Cargo.lock') }}
#          # Install a recent version of clang that supports wasm32
#      - run: wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - || exit 1
#      - run: sudo apt-get update || exit 1
#      - run: sudo apt-get install -y libclang-common-10-dev clang-10 libc6-dev-i386 || exit 1
#      - name: Set default toolchain
#        run: rustup default stable
#      - name: Set profile
#        run: rustup set profile minimal
#      - name: Add target wasm32
#        run: rustup target add wasm32-unknown-unknown
#      - name: Update toolchain
#        run: rustup update
#      - name: Build
#        run: cargo build --target wasm32-unknown-unknown --no-default-features --features esplora,compiler,dev-getrandom-wasm

  fmt:
    name: Rust fmt
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v6
      - name: Setup Rust Toolchain
        uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          toolchain: stable
          profile: minimal
          override: true
          components: rustfmt, clippy
          cache: true
      - name: Check fmt
        run: cargo fmt --all -- --check