swc-neuron 0.5.3

Library and CLI utility for interacting with SWC neuronal morphology files
Documentation
on: [push, pull_request]

defaults:
  run:
    shell: bash

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
        with:
          components: rustfmt, clippy
      - uses: Swatinem/rust-cache@v2
      - run: cargo clippy --all-features
      - run: cargo fmt -- --check

  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
      - uses: Swatinem/rust-cache@v2
      - run: cargo test --all-features
      - run: |
          for NAME in data/*.swc; do
            cargo run --all-features -- --toposort $NAME;
            cargo run --all-features -- --sort --reindex $NAME;
            cargo run --all-features -- --validate $NAME;
          done

  deploy:
    runs-on: ubuntu-latest
    needs: [lint, test]
    if: github.event_name == 'push' && contains(github.ref, 'refs/tags/v')
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
      - uses: Swatinem/rust-cache@v2
      - run: cargo login ${CRATES_IO_TOKEN}
        env:
          CRATES_IO_TOKEN: ${{ secrets.CRATES_IO_TOKEN }}
      - run: cargo publish