descriptor-codec 0.1.2

Encode and decode Bitcoin wallet descriptors with a 30-40% size reduction
Documentation
name: CI

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

env:
  RUSTFLAGS: --deny warnings

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Install Rust
        uses: dtolnay/rust-toolchain@stable
        with:
          components: clippy, rustfmt

      - uses: Swatinem/rust-cache@v2

      - name: Clippy (default features)
        run: cargo clippy --all-targets

      - name: Clippy (all features)
        run: cargo clippy --all-targets --all-features

      - name: Format
        run: cargo fmt --all -- --check

  test:
    name: Test on ${{ matrix.os }}
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, windows-latest, macOS-latest]

    steps:
      - uses: actions/checkout@v4

      - name: Install Rust
        uses: dtolnay/rust-toolchain@stable

      - uses: Swatinem/rust-cache@v2

      - name: Test default features
        run: cargo test

      - name: Test all features
        run: cargo test --all-features

      - name: Test library only
        run: cargo test --no-default-features --features std

      - name: Build CLI
        run: cargo build --release --features cli

      - name: Test CLI binary (Unix)
        if: runner.os != 'Windows'
        run: |
          echo 'wpkh(02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9)#8zl0zxma' > test.desc
          ./target/release/descriptor-codec encode "$(cat test.desc)" > encoded.hex
          ./target/release/descriptor-codec decode "$(cat encoded.hex)" > decoded.desc
          diff test.desc decoded.desc